내 문제는 다음과 같습니다 : 두 개의 컨트롤을 폼로드, 단추 및 콤보 상자에서 만든, 또한 단추에 대한 이벤트가 있지만 이벤트를 새로 만든 된 콤보 상자를 볼 수 있어야합니다. 이름으로 콤보를 호출하려고하면이 컨텍스트에 존재하지 않는다고 말합니다. 개인 무효 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
}
}
그것을 작동시키는 방법이 있습니까?
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
}
당신은FindControl ()메서드를 사용하여 객체를 먼저 찾습니다.
private void przycisk_Click(object sender, EventArgs e)
{
ComboBox kombo = (ComboBox)FindControl("kombo");
kombo.Items.Add("Panel");
}