C#在另一个控件事件中使用表单加载时创建的控件

C#在另一个控件事件中使用表单加载时创建的控件,c#,scope,C#,Scope,我的问题如下:我在表单加载、按钮和组合框上创建了两个控件,我也有按钮的事件,但是事件应该能够看到新创建的组合框。当我试着用它的名字来调用这个组合时,它说它在这个上下文中不存在 私有void Form1\u加载(对象发送方、事件参数e) { 按钮przycisk=新按钮(); przycisk.Name=“przycisk”; przycisk.Dock=DockStyle.Bottom; przycisk.Text=“Wybierz” 有什么方法可以让它工作吗?您必须先使用该方法找到对象 pri

我的问题如下:我在表单加载、按钮和组合框上创建了两个控件,我也有按钮的事件,但是事件应该能够看到新创建的组合框。当我试着用它的名字来调用这个组合时,它说它在这个上下文中不存在 私有void Form1\u加载(对象发送方、事件参数e) { 按钮przycisk=新按钮(); przycisk.Name=“przycisk”; przycisk.Dock=DockStyle.Bottom; przycisk.Text=“Wybierz”

有什么方法可以让它工作吗?

您必须先使用该方法找到对象

private void przycisk_Click(object sender, EventArgs e)
{
   ComboBox kombo = (ComboBox)FindControl("kombo");
   kombo.Items.Add("Panel");
}

只有在带有runat=“server”的标记中使用的控件才是页面上的类变量。它们实际上是在设计器文件中定义的

您要做的是在类中添加如下内容,其中有一个类变量,然后在页面加载函数中分配kombo。然后,它将存在于单击事件处理程序中

 // kombo is now scoped for use throughout this class
 ComboBox kombo = null;

 private void Form1_Load(object sender, EventArgs e)
    {
        Button przycisk = new Button(); 
        przycisk.Name = "przycisk";
        przycisk.Dock = DockStyle.Bottom;
        przycisk.Text = "Wybierz";

        // Assign to our kombo instance
        kombo = new ComboBox(); 
        kombo.Name = "kombo";
        kombo.Dock = DockStyle.Bottom;
        kombo.Items.Add("Przycisk");   
        kombo.Items.Add("Etykeita");
        kombo.Items.Add("Pole tekstowe");

        Controls.Add(kombo);  
        Controls.Add(przycisk);

        przycisk.Click += new EventHandler(przycisk_Click); 

    }

    private void przycisk_Click(object sender, EventArgs e)
    {
        // Using the kombo we created in form load, which is still referenced
        // in the class
        kombo.Items.Add("Panel");  //just an example 
    }
+1.是所有语言的基础,OP必须了解它。
 // kombo is now scoped for use throughout this class
 ComboBox kombo = null;

 private void Form1_Load(object sender, EventArgs e)
    {
        Button przycisk = new Button(); 
        przycisk.Name = "przycisk";
        przycisk.Dock = DockStyle.Bottom;
        przycisk.Text = "Wybierz";

        // Assign to our kombo instance
        kombo = new ComboBox(); 
        kombo.Name = "kombo";
        kombo.Dock = DockStyle.Bottom;
        kombo.Items.Add("Przycisk");   
        kombo.Items.Add("Etykeita");
        kombo.Items.Add("Pole tekstowe");

        Controls.Add(kombo);  
        Controls.Add(przycisk);

        przycisk.Click += new EventHandler(przycisk_Click); 

    }

    private void przycisk_Click(object sender, EventArgs e)
    {
        // Using the kombo we created in form load, which is still referenced
        // in the class
        kombo.Items.Add("Panel");  //just an example 
    }