デザイン時にカスタムコントロールのプロパティの値を正しく読み取るにはどうすればよいですか?カスタムコントロールのプロパティを読み取ると、コンストラクタで0が返されます。
現在、行と列はコントロールのプロパティリスト(idenetとしてのvsnet)に設定されていますが、コントロールのコンストラクターから読み取ると両方のプロパティーは0を返します。私は、アプリケーションの開始時にプロパティが割り当てられる前にコンストラクタが実行されていると思われます。
これを行う正しい方法は何ですか?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
namespace HexagonalLevelEditor.HexLogic{
class HexGrid : System.Windows.Forms.Panel {
public HexGrid() {
for(int c = 0; c < this.Columns; ++c) {
for(int r = 0; r < this.Rows; ++r) {
HexCell h = new HexCell();
h.Width = 200;
h.Height = 200;
h.Location = new System.Drawing.Point(c*200, r*200);
this.Controls.Add(h);
}
}
}
private void InitializeComponent() {
this.SuspendLayout();
this.ResumeLayout(false);
}
private int m_rows;
[Browsable(true), DescriptionAttribute("Hexagonal grid row count."), Bindable(true)]
public int Rows {
get {
return m_rows;
}
set {
m_rows = value;
}
}
private int m_columns;
[Browsable(true), DescriptionAttribute("Hexagonal grid column count."), Bindable(true)]
public int Columns {
get{
return m_columns;
}
set {
m_columns = value;
}
}
}
}
もちろん、コンストラクタはプロパティの割り当ての前に実行されます。いずれかのプロパティーが変更されたときにグリッドがリフレッシュされるようにする必要があります。 – SimpleVar
Loadイベントでそれを行う –
duh、ありがとう。 –