簡體   English   中英

在winform c#.net應用程序中更改動態添加的控件的值,如何跟蹤動態添加的控件

[英]Change values of dynamically added controls in winform c#.net application, how to track dynamically added controls

我在 tableLayoutpanel 的行內動態添加了控件,添加的控件是標簽、鏈接標簽和圖片框。

現在,我想通過單擊按鈕將這些動態添加的控件(標簽、鏈接標簽)的值(文本屬性)更改為某個指定值。

我該怎么做呢? 請幫忙寫代碼。

這些動態控件是否有某種 ID,就像我們在 HTML 中一樣。

另外,我想用這個,但都是徒勞的............

Control[] GettableLayoutPanelControls = new Control[11];

          GettableLayoutPanelControls =  tableLayoutPanel1.Controls.Find("Control Name", true) ;

             GettableLayoutPanelControls.SetValue("CHANGED VALUE ", 0); //this line gives error..........

嘗試這樣的事情,它將添加 11 個新文本框(或您想要的任何其他控件):

int NumberOfTextBoxes = 11;
TextBox[] DynamicTextBoxes = new TextBox[NumberOfTextBoxes];
int ndx = 0;

while (ndx < NumberOfTextBoxes) 
{
    DynamicTextBoxes[ndx] = new TextBox();
    DynamicTextBoxes[ndx].Name = "TextBox" + ndx.ToString();
    // You can set TextBox value here:
    // DynamicTextBoxes[ndx].Text = "My Value";
    tableLayoutPanel1.Controls.Add(DynamicTextBoxes[ndx]);
    ndx++;
}

這將動態地將文本框添加到您的 TableLayout 控件。 如果您以后需要檢索它們:

foreach (Control c in TableLayoutPanel1.Controls)
{
    if (c is TextBox)
    {
        TextBox TextBoxControl = (TextBox)c;

        // This will modify the value of the 3rd text box we added
        if (TextBoxControl.Name.Equals("TextBox3"))      
            TextBoxControl.Text = "My Value";
    }
}

最直接的方法是在私有字段中跟蹤動態創建的控件。

private Label _myLabel;
_myLabel = new Label();
myLabel.Text = "Hello World!";
tableLayoutPanel1.Controls.Add(myLabel);
// ... later in the button click handler ... //
myLabel.Text = "Goodbye Cruel World!";

請記住,Windows Forms 是一個有狀態的環境,與 ASP.NET 不同,因此當用戶與表單交互時,字段不會丟失其值。

預計到達時間:

Label dynamic_label = new Label();
for(in i =0;i<6;i++){this.Controls.Add(dynamic_label);}

您評論中的此代碼添加了 SAME label 5 次。 我不認為這是你的意圖。 當您設置 Text 屬性時,它們都將具有相同的文本,因為它們引用了相同的控件。 您可以使用我的解決方案並聲明

Label myLabel1, myLabel2, ..., myLabel5;

如果你有這么多,你要在一個循環中聲明它們,那么我會將它們存儲在Dictionary<string, Label>中,這樣你就不必搜索數組來找到正確的數組。

暫無
暫無

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

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