IsHandleCreated プロパティdev Express の Gridview コントロールでは常に false です
-
21-12-2019 - |
質問
私のWindowsフォームには次のものが含まれています DevExpress.XtraGrid.GridControl
の上 Form1
同様に、次のように呼ばれる 2 番目のクラスもあります。 Form2
. 。Form1 ではデータベースからデータをロードしています。グリッド行をダブルクリックすると、Form2 に割り当てられます。の上 Form1
gridControl1_DoubleClick
イベント IsHandleCreated プロパティは true (Form2
から継承されます Form1
)
void gridControl1_DoubleClick(object sender, EventArgs e)
{
if (gridControl1.IsHandleCreated)
{
}
Form2 obj = new Form2();
obj.Display();
}
Form1 のようなプロパティを 1 つ作成しました
public GridControl GridControl1
{
get { return gridControl1; }
}
しかし、Form2 の Display() メソッドを呼び出して、Form2 の IsHandleCreated プロパティが false であることを確認すると。
public void Display()
{
if (handleCreated)
{
}
}
以下のように完全なコード **Form1**
public partial class Form1 : Form
{
public GridControl GridControl1
{
get { return gridControl1; }
}
public bool handleCreated
{
get { return gridControl1.IsHandleCreated; }
}
public Form1()
{
InitializeComponent();
gridControl1.DataSource = CreateTable(20);
gridControl1.DoubleClick += gridControl1_DoubleClick;
}
void gridControl1_DoubleClick(object sender, EventArgs e)
{
if (gridControl1.IsHandleCreated)
{
}
Form2 obj = new Form2();
obj.Display();
}
private DataTable CreateTable(int rowCount)
{
DataTable table = new DataTable();
table.Columns.Add("String", typeof(string));
table.Columns.Add("Int", typeof(int));
table.Columns.Add("Date", typeof(DateTime));
for (var i = 0; i < rowCount; i++)
{
table.Rows.Add(string.Format("Row {0}", i), i, DateTime.Today.AddDays(i));
}
return table;
}
}
**Form2**
public class Form2 : Form1
{
public Form2()
{
}
public void Display()
{
if (handleCreated)
{
}
//Form1 obj = new Form1();
//if (obj.handleCreated)
//{
//}
}
}
Form2 では handleCreated は常に false ですが、なぜですか?私を助けてください
解決
これはあなたのせいです form2
オブジェクトは初期化されるだけです。コントロールは、このコントロールを表示するウィンドウが作成された後にのみハンドルを取得します。それで、あなたは電話する必要があります form2.Show()
または form2.ShowDialog()
その後チェックしてください gridControl1.IsHandleCreated
.
次のコードを使用して、この動作を簡単にテストできます。
Form2 obj = new Form2();
MessageBox.Show("Created: " + obj.handleCreated);
obj.Show();
MessageBox.Show("Shown: " + obj.handleCreated);
所属していません StackOverflow