private void button1_Click( object sender, EventArgs e ) { Panel p = new Panel(); p.BorderStyle = BorderStyle.FixedSingle; this.flowLayoutPanel1.Controls.Add( p ); p.MouseEnter += new EventHandler( panel1_MouseEnter ); p.MouseHover += new EventHandler( panel1_MouseHover ); p.MouseLeave += new EventHandler( panel1_MouseLeave ); } private void panel1_MouseEnter( object sender, EventArgs e ) { this.Text = "Enter"; } private void panel1_MouseHover( object sender, EventArgs e ) { this.Text = "Hover"; } private void panel1_MouseLeave( object sender, EventArgs e ) { this.Text = "Leave"; }你在动态增加控件的时候,将控件的事件给加上去不就行了啊。 设置事件不一定非得通过属性窗口的 通过属性窗口最终也是用代码实现的
to sdfkfkd 是的啊,我代码里就是把事件也加上去的啊,但是事情没执行的啊下面就是我的增加控件的代码 for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { Panel panel = new Panel(); panel.BorderStyle = BorderStyle.FixedSingle; panel.Size = new Size(124, 60); panel.TabIndex = tabIndex; panel.Location = new Point((130 * i) + 3, (66 * j) + 3); panel.MouseHover += new EventHandler(panel_MouseHover); panel.MouseLeave += new EventHandler(panel_MouseLeave); panel.MouseClick += new MouseEventHandler(panel_MouseClick); Label labelA = new Label(); labelA.BackColor = SystemColors.Desktop; labelA.Dock = DockStyle.Top; labelA.Font = new Font(new FontFamily("宋体"), 12, FontStyle.Bold); labelA.ImageAlign = ContentAlignment.MiddleLeft; labelA.TextAlign = ContentAlignment.MiddleRight; labelA.Size = new Size(124, 30); labelA.ImageList = ImgList; labelA.ImageList.ImageSize = new Size(32, 32); labelA.ImageIndex = 6; labelA.Text = tabGrids.Rows[rowIndex]["gridId"].ToString(); panel.Controls.Add(labelA); Label labelB = new Label(); labelB.BackColor = SystemColors.Desktop; labelB.Dock = DockStyle.Bottom; labelB.Font = new Font(new FontFamily("宋体"), 12, FontStyle.Bold); labelB.TextAlign = ContentAlignment.MiddleCenter; labelB.Size = new Size(124, 30); labelB.ForeColor = Color.White; labelB.Text = tabGrids.Rows[rowIndex]["stateValue"].ToString(); labelB.Tag = tabGrids.Rows[rowIndex]["state"]; panel.Controls.Add(labelB); plData.Controls.Add(panel); rowIndex++; if (rowIndex >= rowCount) { break; } } }
ding ding ding ding ding
声明panel时声明panel.MouseHover += new EventHandler(panel_MouseHover),然后在方法private void panel_MouseHover( object sender, EventArgs e ) { //代码 } 中写要执行的代码即可
to jixuesong 大哥,我这里已经写了 panel.MouseHover += new EventHandler(panel_MouseHover); panel.MouseLeave += new EventHandler(panel_MouseLeave); panel.MouseClick += new MouseEventHandler(panel_MouseClick);对应的事件也有了,加载到FlowLayoutPanel中的Panel是有多个的,每个我都给绑定这些事件了
private void button1_Click( object sender, EventArgs e )
{
Panel p = new Panel();
p.BorderStyle = BorderStyle.FixedSingle;
this.flowLayoutPanel1.Controls.Add( p );
p.MouseEnter += new EventHandler( panel1_MouseEnter );
p.MouseHover += new EventHandler( panel1_MouseHover );
p.MouseLeave += new EventHandler( panel1_MouseLeave );
} private void panel1_MouseEnter( object sender, EventArgs e )
{
this.Text = "Enter";
} private void panel1_MouseHover( object sender, EventArgs e )
{
this.Text = "Hover";
} private void panel1_MouseLeave( object sender, EventArgs e )
{
this.Text = "Leave";
}你在动态增加控件的时候,将控件的事件给加上去不就行了啊。
设置事件不一定非得通过属性窗口的
通过属性窗口最终也是用代码实现的
是的啊,我代码里就是把事件也加上去的啊,但是事情没执行的啊下面就是我的增加控件的代码
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
Panel panel = new Panel();
panel.BorderStyle = BorderStyle.FixedSingle;
panel.Size = new Size(124, 60);
panel.TabIndex = tabIndex;
panel.Location = new Point((130 * i) + 3, (66 * j) + 3);
panel.MouseHover += new EventHandler(panel_MouseHover);
panel.MouseLeave += new EventHandler(panel_MouseLeave);
panel.MouseClick += new MouseEventHandler(panel_MouseClick); Label labelA = new Label();
labelA.BackColor = SystemColors.Desktop;
labelA.Dock = DockStyle.Top;
labelA.Font = new Font(new FontFamily("宋体"), 12, FontStyle.Bold);
labelA.ImageAlign = ContentAlignment.MiddleLeft;
labelA.TextAlign = ContentAlignment.MiddleRight;
labelA.Size = new Size(124, 30);
labelA.ImageList = ImgList;
labelA.ImageList.ImageSize = new Size(32, 32);
labelA.ImageIndex = 6;
labelA.Text = tabGrids.Rows[rowIndex]["gridId"].ToString();
panel.Controls.Add(labelA); Label labelB = new Label();
labelB.BackColor = SystemColors.Desktop;
labelB.Dock = DockStyle.Bottom;
labelB.Font = new Font(new FontFamily("宋体"), 12, FontStyle.Bold);
labelB.TextAlign = ContentAlignment.MiddleCenter;
labelB.Size = new Size(124, 30);
labelB.ForeColor = Color.White;
labelB.Text = tabGrids.Rows[rowIndex]["stateValue"].ToString();
labelB.Tag = tabGrids.Rows[rowIndex]["state"];
panel.Controls.Add(labelB);
plData.Controls.Add(panel);
rowIndex++;
if (rowIndex >= rowCount)
{
break;
}
}
}
{
//代码
}
中写要执行的代码即可
大哥,我这里已经写了 panel.MouseHover += new EventHandler(panel_MouseHover);
panel.MouseLeave += new EventHandler(panel_MouseLeave);
panel.MouseClick += new MouseEventHandler(panel_MouseClick);对应的事件也有了,加载到FlowLayoutPanel中的Panel是有多个的,每个我都给绑定这些事件了