-1

実行時に作成されたコントロールのテキストを取得するにはどうすればよいですか?

private void button1_Click(object sender, EventArgs e)
{
    Button btn = new Button();
    btn.Top = 50;
    btn.Left = 50;
    btn.Name = "mybtn";
    btn.Text = "My button";
    this.Controls.Add(btn);
}

private void button2_Click(object sender, EventArgs e)
{
    Console.WriteLine(mybtn.text); // error
}
4

4 に答える 4

2
var b = this.Controls.OfType<Button>().FirstOrDefault(b => b.Name == "mybtn");
if (b == null) { return; }

Console.WriteLine(b.Text);
于 2013-10-10T16:32:46.610 に答える
1

新しく作成されたコントロールをクラス メンバー (プロパティまたはフィールド) として宣言します。

Button btn ;
private void button1_Click(object sender, EventArgs e)
{
    btn = new Button();
    btn.Top = 50;
    btn.Left = 50;
    btn.Name = "mybtn";
    btn.Text = "My button";
    this.Controls.Add(btn);
}

また

フォーム コントロールから検索します。

private void button2_Click(object sender, EventArgs e)
{
    Console.WriteLine(this.Controls.Cast<Control>().Single(p=>p.Name == "mybtn").Text);
}
于 2013-10-10T16:34:24.830 に答える
1
private void button2_Click(object sender, EventArgs e)
{
    // find mybtn
    Button mybtn = this.Controls.FirstOrDefault(i => i.Name == "mybtn") as Button;
    if (mybtn != null)
    {
        Console.WriteLine(mybtn.Text);
    }
}
于 2013-10-10T16:32:39.847 に答える
0
private void button2_Click(object sender, EventArgs e)
{
   Console.WriteLine(this.Controls.Find("myBtn", false).FirstOrDefault().Text);
}  
于 2013-10-10T16:46:03.823 に答える