处理在运行时创建的picturebox中的onclick事件

时间:2014-04-03 10:38:16

标签: c# winforms tablelayout tablelayoutpanel

我正在使用c#中的Windows窗体应用程序。

首先,我在运行时创建了一个表格布局,然后在从数据库中读取后插入了图片框。现在我想在每个tablepanel cell / picturebox上编写sql查询。

首先我通过拖放插入图片框来尝试这个,我在picturebox_onclick函数中写了查询。但现在我在运行时动态创建图片框。现在我如何处理我在运行时创建的图片框的onclick功能。

private void GenerateTable(int columnCount, int rowCount)
{
   //Clear out the existing controls, we are generating a new table layout
   tableLayoutPanel1.Controls.Clear();

   //Clear out the existing row and column styles
   tableLayoutPanel1.ColumnStyles.Clear();
   tableLayoutPanel1.RowStyles.Clear();

   //Now we will generate the table, setting up the row and column counts first
   tableLayoutPanel1.ColumnCount = columnCount;
   tableLayoutPanel1.RowCount = rowCount;

   for (int x = 0; x < columnCount; x++)
   {
      //First add a column
      tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));

      for (int y = 0; y < rowCount; y++)
      {
         //Next, add a row.  Only do this when once, when creating the first column
         if (x == 0)
         {
            tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize));
         }

         //Create the control, in this case we will add a button
         picturebox cmd = new picturebox();
         cmd.image = new bitmap("c:\\images\\abc.png");
         tableLayoutPanel1.Controls.Add(cmd, x, y);
      }
   }
}

请建议我简单的方式,因为我是新的发展。提前谢谢。

1 个答案:

答案 0 :(得分:3)

这应该为你做。

PictureBox cmd = new PictureBox();
cmd.Click += cmd_Click;

然后有一个新功能来处理点击。

    void cmd_Click(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }  

要根据ClickBox的内容执行独特的操作,您可能需要为PictureBox提供一个可以与之相关的名称,例如行号或行的唯一ID。

PictureBox cmd = new PictureBox();
cmd.Click += cmd_Click;
cmd.Name = y.ToString();

    void cmd_Click(object sender, EventArgs e)
    {
        string RowID = ((PictureBox)sender).Name;
    }