0

実行時に tableLayoutpanel の行内にコントロールを動的に追加しました。追加されたコントロールは、LABELS、LINKLABEL、および PICTURE BOX です。

ここで、ボタンのクリック時に、これらの動的に追加されたコントロール (ラベル、リンクラベル) の値 (テキスト プロパティ) を指定された値に変更したいと考えています。

どうすればいいですか?コードを手伝ってください。

HTML にあるような、これらの動的コントロールの ID のようなものはありますか。

また、これを使用しようとしていますが、すべて無駄です....

Control[] GettableLayoutPanelControls = new Control[11];

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

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

2 に答える 2

3

次のようなものを試してください。これにより、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";
    }
}
于 2011-06-28T18:15:24.023 に答える
0

これを行う最も簡単な方法は、プライベート フィールドで動的に作成されたコントロールを追跡することです。

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!";

ASP.NET とは異なり、Windows フォームはステートフルな環境であるため、ユーザーがフォームを操作してもフィールドの値が失われないことに注意してください。

到着予定時刻:

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

コメントのこのコードは、SAME ラベルを 5 回追加します。それはあなたの意図ではないと思います。Text プロパティを設定すると、同じコントロールを参照するため、すべて同じテキストになります。私のソリューションを使用して宣言できます

Label myLabel1, myLabel2, ..., myLabel5;

ループで宣言しているほど多くある場合はDictionary<string, Label>、正しい配列を見つけるために配列を検索する必要がないように、それらを a に格納します。

于 2011-06-28T18:13:39.300 に答える