1

내 문제는 다음과 같습니다 : 두 개의 컨트롤을 폼로드, 단추 및 콤보 상자에서 만든, 또한 단추에 대한 이벤트가 있지만 이벤트를 새로 만든 된 콤보 상자를 볼 수 있어야합니다. 이름으로 콤보를 호출하려고하면이 컨텍스트에 존재하지 않는다고 말합니다.         개인 무효 Form1_Load (개체 발신자, EventArgs 전자)         {             버튼 przycisk = 새 버튼 ();             przycisk.Name = "przycisk";             przycisk.Dock = DockStyle.Bottom;             przycisk.Text = "Wybierz";

        ComboBox 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)
    {

        kombo.Items.Add("Panel");  //just an example 
    }
}

그것을 작동시키는 방법이 있습니까?

2 답변


2

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

당신은FindControl ()메서드를 사용하여 객체를 먼저 찾습니다.

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

관련된 질문

최근 질문