【问题标题】:Datagrid View: Restricting user to NOT to select certain cellsDatagrid View:限制用户不选择某些单元格
【发布时间】:2015-04-02 11:23:44
【问题描述】:

我有一个数据网格视图,其中每个单元格都是布尔值,当用户单击单元格时,我将其保存为 true,否则保存为 false。 此外,当用户单击单元格时,其颜色变为蓝色,如果他重新单击同一单元格,则其颜色变为红色。 我将这些布尔值保存在数据库中,然后检索这些值并填充单元格。

保存后所有这些单元格变为灰色。 我想以这样一种方式划分我的数据网格视图,即从数据库填充的单元格(用户的最后选择)将变得不可点击,而其他未填充的单元格应保持可点击状态。 现在填充单元格时以前保存的值,用户可以单击它,它将从默认颜色更改为蓝色(即选中 == True)。我想限制用户,这样他就不能选择这些单元格。

【问题讨论】:

    标签: c# datagridview


    【解决方案1】:

    您可以通过处理DataGridViewCellStateChanged 事件来做到这一点:

    private void dataGridView1_CellStateChanged(object sender, DataGridViewCellStateChangedEventArgs e)
    {
        if (...)
        {
            e.Cell.Selected = false;
        }
    }
    

    【讨论】:

      【解决方案2】:

      另一个选项是当您从数据库加载单元格时,将这些单元格设置为ReadOnly。然后,您只需将一个条件添加到您的 CellClick 逻辑中即可更改颜色。

      foreach (bool value in /* values loaded from the database */ )
      {
        var cell = this.dataGridView1.Rows[rowToLoad].Cells[columnToLoad];
        cell.Value = value;
        cell.ReadOnly = true;
      }
      
      private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
      {
        if (!this.dataGridView1.CurrentCell.ReadOnly)
        {
          /* Your color logic. */
        }
      }
      

      这仍然允许用户选择加载的单元格,但逻辑检查将阻止颜色更改,而ReadOnly 将阻止用户更改单元格的值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-11
        • 1970-01-01
        • 1970-01-01
        • 2011-04-21
        • 1970-01-01
        • 2011-07-25
        • 1970-01-01
        • 2014-11-01
        相关资源
        最近更新 更多