You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# Winform中如何实现矩阵单元格颜色填充及点击交互?

解决方案

1. 创建所需矩阵

你可以用二维数组存储矩阵的行列数据,再动态生成DOM节点渲染到页面即可,以下是示例代码:

// 配置矩阵行列数,可按需调整数值
const ROW_COUNT = 6;
const COL_COUNT = 6;
const matrixContainer = document.getElementById('matrix-container');

// 生成矩阵DOM
function createMatrix() {
  for (let i = 0; i < ROW_COUNT; i++) {
    const rowDom = document.createElement('div');
    rowDom.className = 'matrix-row';
    for (let j = 0; j < COL_COUNT; j++) {
      const cellDom = document.createElement('div');
      cellDom.className = 'matrix-cell';
      // 可存储行列标识方便后续扩展操作
      cellDom.dataset.row = i;
      cellDom.dataset.col = j;
      rowDom.appendChild(cellDom);
    }
    matrixContainer.appendChild(rowDom);
  }
}

配套基础样式可自行调整,控制单元格宽高、边距、边框即可。

2. 监听单元格点击事件

推荐用事件委托的方式绑定点击事件,不需要给每个单元格单独绑定,矩阵规模大的时候性能表现更好:

matrixContainer.addEventListener('click', function(e) {
  // 校验点击目标为矩阵单元格
  if (e.target.classList.contains('matrix-cell')) {
    // 触发全量填充逻辑
    fillAllCells();
  }
})

如果你的矩阵规模很小,也可以在生成单元格的环节直接给每个cellDom绑定click事件,执行逻辑完全一致。

3. 复用已有单单元格填充代码

你已经写好的单单元格填充逻辑不需要做任何修改,只要把它封装成接收单元格DOM作为入参的函数即可,比如你原来的函数命名为fillSingleCell(cell),新增一个批量填充的函数遍历所有单元格调用它就行:

// 你已有的单单元格4色填充代码,无需调整内部逻辑
function fillSingleCell(cell) {
  // 此处保留你原来的填充逻辑
}

// 新增批量填充逻辑,直接复用原有函数
function fillAllCells() {
  const allCells = document.querySelectorAll('.matrix-cell');
  allCells.forEach(cell => {
    fillSingleCell(cell);
  })
}

内容的提问来源于stack exchange,提问作者REX LIN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:24:01