C# 如何从控件创建事件';那还没有创造出什么?
我的程序是创建datagridview程序,用户可以创建动态列,如行、列、面板(面板是面板的数量),这样用户也可以标记它, 据我所知,我可以用CurrentCell.Style.BackColor标记单元格 当我生成datagridview时,我已经指定了它的名称,但是!!!!它不能使用新的datagridvieweventhandler命令,因此我不能对每个datagridview执行任何操作 这是我的Datagridview生成代码C# 如何从控件创建事件';那还没有创造出什么?,c#,vb.net,winforms,datagridview,C#,Vb.net,Winforms,Datagridview,我的程序是创建datagridview程序,用户可以创建动态列,如行、列、面板(面板是面板的数量),这样用户也可以标记它, 据我所知,我可以用CurrentCell.Style.BackColor标记单元格 当我生成datagridview时,我已经指定了它的名称,但是!!!!它不能使用新的datagridvieweventhandler命令,因此我不能对每个datagridview执行任何操作 这是我的Datagridview生成代码 string[] Panelname = { "O
string[] Panelname = { "One","Two","Three","Four","Five"};
for(i=0;i<Panelname.length;i++){
Generate(Panelname[i],a,b)}
DataGridView generate(string name,int columns,int rows)
{
int i;
Control Gen;
Control LB;
LB = new Label();
LB.Text = "Panel : "+name;
LB.Location = new Point(50 + 120 / (c - 1) + 900 / c , 315);
LB.BackColor = Color.Silver;
Gen = new DataGridView();
Gen.Name = name.ToString();
Gen.Size = new Size(900/c,300 );
Gen.Location = new Point(120 / (c ) + 900 / c, 0);
DataGridView CH = (DataGridView)Gen;
CH.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
CH.CellClick += new DataGridViewCellEventHandler(CH_CellClick);
CH.Location = new Point(0+locate, 0);
for (i = 1; i <= columns; i++)
{
CH.Columns.Add("", "");
}
for (i = 1; i < rows; i++)
{
CH.Rows.Add("", "");
}
dataGridView1.Controls.Add(LB);
dataGridView1.Controls.Add(CH);
return null;
}
string[]Panelname={“一”、“二”、“三”、“四”、“五”};
对于(i=0;i创建datagridview)
for (int i = 0; i < 10; i++)
{
DataGridView d = new DataGridView();
d.MouseClick += dataGridView_MouseClick;
}
我发现的问题是,当我在datagridview中创建datagridview时,很难定义您正在单击的datagridview是什么,所以我陷入这个问题有一段时间了
现在我找到了解决问题的方法现在,问题来了
对于(i=0;i
和*********CH.Click+=新事件处理程序(控制单击);**********这是我的英雄
private void control_click(object sender, EventArgs e)
{
if (sender is DataGridView)
{
DataGridView A = (DataGridView)sender;
textBox2.Text = A.CurrentCell.RowIndex.ToString();
textBox1.Text = A.CurrentCell.ColumnIndex.ToString();
textBox3.Text = A.Name.ToString();
}
}
在send control click函数中,您可以找到您的控件类型并将其强制转换,因此无论您单击哪个控件,现在都可以设置它的功能!为什么您不能使用DataGrid
事件处理程序?正如我所知,当对象已经创建时,可以创建事件处理程序,但在这种情况下,我仍然不要创建它,这样它就不能调用eventhandler来使用它为什么要调用eventhandler?我想你可以调用它,但通常它是由一个事件触发的,正如名字所说的那样当我想改变单元格颜色时,我必须调用eventhandler。我已经创建了5个datagridview,我想在文本框中显示我点击datagridview 1,我必须调用One_click事件,因为现在我的程序无法分离哪个datagridview正在选择sry,我的响应速度很慢,我不是很慢在englishokay的ood中,这是datagridview由datagridview d=new datagridview()创建的方式;因此我们可以调用add handler方法,但在我的情况下,我没有编写datagridview d=new datagridview()的代码;因为我必须使用for循环来创建它,所以它不能这样做。实际上,您可以…单个事件处理程序将处理无限数量控件的事件。这就是为什么.NET中的大多数(如果不是所有)事件处理程序的第一个参数都是sender参数的原因。
DataGridView generate2(string name, int columns, int rows,int form)
{
Control Gen;
Control LB;
int x = 1;
int runcolumn = columns;
int runrow = rows;
int count=0;
LB = new Label();
LB.Text = "Panel : " + name;
LB.Location = new Point(50 + 120 / (c - 1) + 900 / c, 320);
LB.BackColor = Color.Silver;
Gen = new DataGridView();
Gen.Name = name.ToString();
Gen.Location = new Point(120 / (c) + 900 / c, 0);
DataGridView CH = (DataGridView)Gen;
CH.RowTemplate.Height = 290 / rows;
CH.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
CH.Size = new Size(900 / c, 300);
CH.RowHeadersWidth = 10;
CH.ColumnHeadersHeight = 10;
CH.Location = new Point(0 + locate, 0);
private void control_click(object sender, EventArgs e)
{
if (sender is DataGridView)
{
DataGridView A = (DataGridView)sender;
textBox2.Text = A.CurrentCell.RowIndex.ToString();
textBox1.Text = A.CurrentCell.ColumnIndex.ToString();
textBox3.Text = A.Name.ToString();
}
}