2016-05-19 10 views
0

私はint型の数は、私がしたいのですが、私のデータベースC#でハードコードされたフォームにイベントを追加するにはどうすればよいですか?

のカウント数に等しいデータベース

内の項目数に基づいて、ボタンを作成するフォームを作成しようとしました私は、C#で新たなんだ

int Count; 
     List<Panel> pnl = new List<Panel>(); 
     List<Label> tasklevel = new List<Label>(); 
     List<Label> taskStatus = new List<Label>(); 
     List<Label> taskname = new List<Label>(); 
     List<PictureBox> image = new List<PictureBox>(); 


for (int i = 0; i < Count; i++) 
     { 
      Panel pan = new Panel(); 
      pan.Name = "panel" + i; 
      pan.BackColor = Color.White; 
      pan.Dock = DockStyle.Top; 
      pan.Padding = new Padding(10, 0, 10, 10); 
      pan.Height = 80; 
      pnl.Add(pan); 

      Label lbl = new Label() 
      { 
       Name = "lbl" + i, 
       ForeColor = Color.Black, 
       //Dock = DockStyle.Left, 
       AutoSize = false, 
       Width = 0, 
       BackColor = Color.Silver, 
       TextAlign = ContentAlignment.MiddleLeft, 
       Padding = new Padding(10, 10, 10, 10), 
       Text = "Designing", 
      }; tasklevel.Add(lbl); 

      Label lblname = new Label() 
      { 
       Name = "lblname" + i, 
       ForeColor = Color.Black, 
       Dock = DockStyle.Left, 
       AutoSize = false, 
       Width = 0, 
       BackColor = Color.Gray, 
       TextAlign = ContentAlignment.MiddleLeft, 
       Padding = new Padding(10, 10, 10, 10), 
       Text = "Designing", 
      }; taskStatus.Add(lblname); 

      Label tskname = new Label() 
      { 
       Name = "tskName" + i, 
       ForeColor = Color.FromArgb(31, 31, 31), 
       Font = new Font("Segoe UI", 11, FontStyle.Regular), 
       Dock = DockStyle.Left, 
       AutoSize = false, 
       Width = 200, 
       BackColor = Color.Gainsboro, 
       TextAlign = ContentAlignment.MiddleCenter, 
       Padding = new Padding(10, 10, 10, 10), 
       Text = "Task Name", 
      }; taskname.Add(tskname); 

      PictureBox picBox = new PictureBox() 
      { 
       Name = "picBox" + i, 
       Dock = DockStyle.Fill, 
       AutoSize = false, 
       Image = DreametryMIS.Properties.Resources.f1, 
       SizeMode = PictureBoxSizeMode.StretchImage, 
       BackColor = Color.FromArgb(240,240,240), 
       Padding = new Padding(10, 10, 10, 10), 
      }; image.Add(picBox); 

      pan.Controls.Add(picBox); 
      pan.Controls.Add(lblname); 
      pan.Controls.Add(lbl); 
      pan.Controls.Add(tskname); 
      FlowPanel.Controls.Add(pan); 
     } 

、私はラベルをクリックしたとき、それは下のラベル の名前は私のコードであるMesssageBoxに表示されますことを、作成したラベルにイベントや機能を追加し、私はいくつかの缶を願っています助けてください

lblname.Click += label_Clicked; 
tskname.Click += label_Clicked; 

は、ラベルの1つは、現在クリックされた:あなたは今、たとえば、あなたのラベルのClickイベントにこのハンドラを追加することができます

public void label_Clicked(object sender, EventArgs e) 
{ 
    Label label = sender as Label; 
    if (label == null) return; 
    MessageBox.Show("Name: " + label.Name + " Text: " + label.Text); 
} 

+0

'Control.EventName + = Delegate_Method();'例えば: 'textBox1.TextChanged + = this.textBox1_TextChanged;' –

答えて

1

は、このようなイベントハンドラを実装しますメソッドlabel_Clickedは、senderの引数としてラベルを指定して呼び出されます。したがって、senderLabelにキャストすると、クリックしたラベルのプロパティに簡単にアクセスできます。

ラベルのオブジェクト初期化子の中にハンドラーを追加することはできませんが、私が示したように追加のステートメントで行う必要があります。

+0

今では簡単でした、ありがとうございましたそんなに、tisは大きな助けとなりました – yok2xDuran

1

あなたも行えます

lblname.Click += delegate { nameOfUrFunction (lblname) }; 

private void nameOfUrFunction (Label lbl)</code> 
{ 

} 
-1
TableCell cel2 = new TableCell(); 
Label lbl2 = new Label(); 
lbl2.Text = s; 
cel2.Controls.Add(lbl2); 
tr.Cells.Add(cel2); 
TableCell cel3 = new TableCell(); 
DropDownList ddlcountry = new DropDownList(); 
ddlcountry.ID = s; 
cel3.Controls.Add(ddlcountry); 
tr.Cells.Add(cel3); 
table.Rows.Add(tr); 
form1.Controls.Add(table); 
DropDownList ddl1 = (DropDownList)form1.FindControl("CountryId"); 
DropDownList ddlstate = (DropDownList)form1.FindControl("StateId"); 
ddl1.AutoPostBack = true; 
ddl1.SelectedIndexChanged += new EventHandler(ddl1_SelectedIndexChanged); 
protected void ddl1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
} 
関連する問題