【问题标题】:C# datagrid specific cell editableC# datagrid 特定单元格可编辑
【发布时间】:2019-12-09 13:24:52
【问题描述】:

我想启用特定单元格进行编辑。

我的 datagridview 是只读的 false。

在单元格上单击我得到我的 columnindex 并尝试做:

     if (e.ColumnIndex == 7)
                {
                if (String.IsNullOrEmpty(Convert.ToString(dgv.Rows[e.RowIndex].Cells["id"].Value)))
                    {
                        dgv.Columns[e.ColumnIndex].ReadOnly = true;
                    }
                    else
                    {
                        dgv.Columns[e.ColumnIndex].ReadOnly = false;
                        dgv.BeginEdit(true);
                        dgv.Rows[rowindex].Cells[columnindex].Selected = true;
                    }


                }

没有成功,我的手机保持禁用状态。 有人可以帮忙吗。 谢谢

【问题讨论】:

  • 代码是否有可能将整个网格设置为只读?如果整个网格设置为只读……那么“网格”只读属性将“覆盖”任何特定于行、列或单元格的只读命令。如果是这种情况,那么您需要将“grids”只读属性设置为false,然后才能编辑任何行、列或单元格。为避免这种情况,您可以遍历各个行、列或单元格并将它们单独设置为只读,然后您的代码应该可以工作。

标签: c# datagridview cell editing


【解决方案1】:

我用这段代码解决了我的问题:

private void dgvLocataire_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
       {
           dgvLocataire.BeginEdit(false);

           var ec = dgvLocataire.EditingControl as DataGridViewComboBoxEditingControl;
           if (ec != null && ec.Width - e.X < SystemInformation.VerticalScrollBarWidth)
               ec.DroppedDown = true;

           if ((e.ColumnIndex != 5) && (e.ColumnIndex != 6) && (e.ColumnIndex != 7))
           {
               dgvLocataire.Columns[e.ColumnIndex].ReadOnly = true;
           }

       }

感谢您的帮助

【讨论】:

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