如何动态设置TableLayoutPanel中的单元格颜色?

谢尔盖

我需要编写一个函数,该函数将TableLayoutPanel在运行程序期间根据某些条件设置单元格中的颜色

TableLayoutPanel除以16x16。程序启动时存在一些条件。如果该条件对于某个单元格为真,则此销售必须涂成蓝色。例如:

private void start_Click(object sender, EventArgs e)
{
    foreach (string str in some_list)
    {
       if (some condition)
       {
           set_color_in_cell at row[i] colum[j] //(what shoud i use here?)
       }
    }
}

我发现了这样的例子:

private void tableLayoutPanel_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
{
    if (e.Row == 0 && e.Column == 1)
    {
        e.Graphics.FillRectangle(new SolidBrush(Color.Black), e.CellBounds);
    }
}

但是我不知道如何使用它。如果有人知道这一点,请帮助我。

private void start_Click(object sender, EventArgs e)
{
    string SyncAnswer = "";
    foreach (string file_string in Data_from_file)
    {
       COM_Port.WriteLine(file_string);
       while (SyncAnswer != "READY")
       {
           SyncAnswer = COM_Port.ReadLine();
           if (SyncAnswer.Substring(0, 4) == "Fire")
           {
              //raise event
              //paint for example a cell in Row=i Colum=j
           }
           else if (SyncAnswer.Substring(0, 4) == "Skip")
          {
             //raise event
          }
      }
   }
}
雷扎·阿盖伊(Reza Aghaei)

选项1-使用CellPaint事件

这是一个分步示例:

  1. 创建一个 Form
  2. TableLayoutPanel来自工具箱放到您的Form
  3. tableLayoutPanel1在设计图面上选择,然后F4按键以查看属性。
  4. 在属性网格的工具栏中,可以选择显示属性enter image description here或事件enter image description here单击事件图标,然后从列表中双击CellPaint事件以tableLayoutPanel1_CellPaint在代码中创建事件处理程序。
  5. 您可以根据某些条件使用此方法绘制每个单元格的背景。该事件将为绘画每个单元格的背景而引发,e.Row它是行索引,e.Column列索引和e.CellBounds绘画单元格的边界。

例如在下面的示例中,我们绘制黑色背景,if ((e.Column + e.Row) % 2 == 1)否则,我们绘制白色背景:

private void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
{
    if ((e.Column + e.Row) % 2 == 1)
        e.Graphics.FillRectangle(Brushes.Black, e.CellBounds);
    else
        e.Graphics.FillRectangle(Brushes.White, e.CellBounds);
}

在此处输入图片说明

动态更改颜色

要从程序的另一点更改颜色,例如在Click发生按钮事件时,应将每个单元格的颜色存储在二维数组中,并使用该颜色为该单元格创建画笔:

bgColors在您的表单中定义

Color[,] bgColors = new Color[2, 2] {
    { SystemColors.Control, SystemColors.Control }, 
    { SystemColors.Control, SystemColors.Control } 
};

通过以下方式绘制单元格的背景:

private void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
{
    using (var b = new SolidBrush(bgColors[e.Column, e.Row]))
    {
        e.Graphics.FillRectangle(b , e.CellBounds);
    }
}

要更改BackColorCell您可以:

private void Button1_Click(object sender, EventArgs e)
{
    //column: 0 ,row: 1
    bgColors[0, 1] = Color.Red;
    tableLayoutPanel1.Refresh();
}

选项2-单元格中的主机面板

作为另一个简单的选项,您可以放入Panel每个单元格,将的Dock属性设置PanelFill,将其Margin属性设置0,0,然后每次要在位置更改面板的颜色时,(column, row)都可以使用以下代码:

this.tableLayoutPanel1.GetControlFromPosition(column, row).BackColor = Color.Red;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift:如何在包含多个单元格的TableViewController中设置动态单元格高度

来自分类Dev

在 DataGridView 中动态更改单元格颜色

来自分类Dev

如何在AngularJS中动态更改表格单元格颜色

来自分类Dev

如何在GridView单元格内设置链接颜色

来自分类Dev

如何以编程方式设置单元格颜色epplus?

来自分类Dev

如何根据if条件设置datagridview单元格的颜色

来自分类Dev

快速设置UiCollectionView中单元格的选定颜色

来自分类Dev

如何在表格视图单元格中设置色调/突出显示颜色?

来自分类Dev

如何使用javascript设置html中特定单元格的背景颜色?

来自分类Dev

如果在qtableview中不为空,如何设置单元格的颜色?

来自分类Dev

PHPExcel如何应用样式并为动态生成的单元格设置单元格宽度和单元格高度

来自分类Dev

如何在 ASP 中动态生成表格的单元格中设置文本的对齐方式?

来自分类Dev

如何快速设置集合视图单元格的动态高度?

来自分类Dev

动态更改datagridview单元格颜色

来自分类Dev

在VBA Excel中动态设置单元格的NumberFormat

来自分类Dev

在handsontable中动态设置下拉单元格的数据

来自分类Dev

在 Ag Grid 中动态更改或设置单元格类别

来自分类Dev

如何强制WinForms控件填充TableLayoutPanel中跨多列单元格中的FlowLayoutPanel?

来自分类Dev

如何在Google表格中动态设置单元格范围?

来自分类Dev

如何在表格上以像素为单位获取TableLayoutPanel中单元格的左侧位置?

来自分类Dev

设置单元格颜色时出错

来自分类Dev

如何在VBA中的单元格中填充颜色?

来自分类Dev

如何在VBA中的单元格中填充颜色?

来自分类Dev

TableLayoutPanel中单元格上的工具提示

来自分类Dev

如何根据单元格值更改php中的单元格表颜色?

来自分类Dev

如何根据单元格值更改php中的单元格表颜色?

来自分类Dev

如何在iText Java中更改单元格颜色

来自分类Dev

如何更改表格中单元格的文本颜色?

来自分类Dev

如何在Wicket中更改AjaxEditableLabelColumn单元格的颜色

Related 相关文章

  1. 1

    Swift:如何在包含多个单元格的TableViewController中设置动态单元格高度

  2. 2

    在 DataGridView 中动态更改单元格颜色

  3. 3

    如何在AngularJS中动态更改表格单元格颜色

  4. 4

    如何在GridView单元格内设置链接颜色

  5. 5

    如何以编程方式设置单元格颜色epplus?

  6. 6

    如何根据if条件设置datagridview单元格的颜色

  7. 7

    快速设置UiCollectionView中单元格的选定颜色

  8. 8

    如何在表格视图单元格中设置色调/突出显示颜色?

  9. 9

    如何使用javascript设置html中特定单元格的背景颜色?

  10. 10

    如果在qtableview中不为空,如何设置单元格的颜色?

  11. 11

    PHPExcel如何应用样式并为动态生成的单元格设置单元格宽度和单元格高度

  12. 12

    如何在 ASP 中动态生成表格的单元格中设置文本的对齐方式?

  13. 13

    如何快速设置集合视图单元格的动态高度?

  14. 14

    动态更改datagridview单元格颜色

  15. 15

    在VBA Excel中动态设置单元格的NumberFormat

  16. 16

    在handsontable中动态设置下拉单元格的数据

  17. 17

    在 Ag Grid 中动态更改或设置单元格类别

  18. 18

    如何强制WinForms控件填充TableLayoutPanel中跨多列单元格中的FlowLayoutPanel?

  19. 19

    如何在Google表格中动态设置单元格范围?

  20. 20

    如何在表格上以像素为单位获取TableLayoutPanel中单元格的左侧位置?

  21. 21

    设置单元格颜色时出错

  22. 22

    如何在VBA中的单元格中填充颜色?

  23. 23

    如何在VBA中的单元格中填充颜色?

  24. 24

    TableLayoutPanel中单元格上的工具提示

  25. 25

    如何根据单元格值更改php中的单元格表颜色?

  26. 26

    如何根据单元格值更改php中的单元格表颜色?

  27. 27

    如何在iText Java中更改单元格颜色

  28. 28

    如何更改表格中单元格的文本颜色?

  29. 29

    如何在Wicket中更改AjaxEditableLabelColumn单元格的颜色

热门标签

归档