簡體   English   中英

c#如何引用動態創建的組件?

[英]c# How to reference a dynamically created component?

我有一些代碼,只需點擊一下按鈕即可創建一些組件。 像這樣的東西。

CheckBox chk = new CheckBox();
chk.Top = 50;
chk.Left = 50;
chk.Text = "Check Box Test";
chk.Name = "chkTest"
this.Controls.Add(chk);

那么我該如何使用這個組件呢。 例如,我試過這個,但得到了錯誤,說該組件不存在。 我只是想得到他們的價值觀。

if(chkTest.Checked)
{
//Do this
}

請幫忙。

謝謝你。

您可以在類中創建一個名為chkTest的成員變量,以后可以使用,或者在需要時從Controls集合中快速檢索它,如下所示:

CheckBox chkTest = (CheckBox)Controls["chkTest"];
if(chkTest.Checked) {
    // ...
}

如果您僅在選中或取消選中控件時關注控件,請使用事件。

chk.Checked += new RoutedEventHandler(CheckBox_Checked);
chk.Unchecked += new RoutedEventHandler(CheckBox_Checked);

private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
    CheckBox chkBox = sender as CheckBox;
    if (chkBox.IsChecked.Value)
    {
        // Do this...
    }
}

確保在完成后取消訂閱事件處理程序。

您正在引用chkTest但是您創建了chk。

您可以將Checkbox聲明為頁面的成員變量。 然后,您將能夠更輕松地訪問它。

MyPage {CheckBox chkTest;

//然后在頁面加載// chkTest = new CheckBox(); ...

}

if ((Controls.Items["chkTest"] as CheckBox).Checked)
{
// Do this
}

應該工作,但看起來並不漂亮。 :)

您可以將其聲明為變量,然后像您一樣使用它:

CheckBox chkTest = Controls.Items["chkTest"] as Checkbox;
if (chkTest.Checked)
{
// Do this
}

在這個方便的頁面上查看操作和訪問Control的項目集合的方法: http//msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection_members.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM