【问题标题】:C# DataGridView Cells automatically clearing when selectedC# DataGridView 单元格在选中时自动清除
【发布时间】:2012-10-10 10:42:44
【问题描述】:

我有一个 Windows 窗体应用程序,其中一部分带有 DataGridView (DGV)。我使用 Visual Studio UI 将列添加到 DGV,然后以编程方式添加具有一些默认值的行。我的问题是一旦添加了行,任何选择的单元格都会自动清空其中的任何值 - 甚至是只读单元格!

我只处理 DGV 的“CellValueChanged”事件,所做的只是验证行以确保至少存在一个有效的值组合,然后启用按钮。

为了增加混乱,选定单元格清除问题并不总是发生。添加行后,除非您进行更改或执行使用行重新加载 DGV 的操作,否则所有单元格都将清除。之后,部分单元格或没有一个单元格会自行清除。

有没有人遇到过这种情况或知道解决问题的方法?我从谷歌得到的只是“如何使单元格清晰”之类的。

谢谢,

  • 马特

* 更新 *

向 DGV 添加新行的代码:

        metaMapGrd.Rows.Clear();
        ((DataGridViewComboBoxColumn)metaMapGrd.Columns[1]).DataSource = _excel.ListHeaders(worksheetListCmb.SelectedItem.ToString());
        foreach (Field f in _sharePoint.CurrentFieldList)
        {
            // skip the key field matching portion.  These should be for comparison only.
            if (f.Title == spListKeyCmb.SelectedItem.ToString())
            {
                continue;
            }

            DataGridViewRow row = new DataGridViewRow();

            metaMapGrd.Rows.Add(row);

            DataGridViewTextBoxCell spcell = new DataGridViewTextBoxCell();
            spcell.Value = f.Title;
            spcell.ToolTipText = f.TypeAsString;
            row.Cells["spListColumn"] = spcell;

            DataGridViewCheckBoxCell fcell = new DataGridViewCheckBoxCell();
            fcell.Value = true;
            row.Cells["useThisColumn"] = fcell;
        }
        metaMapGrd.CurrentCell = null;

【问题讨论】:

  • 您是否也对 datagridview 进行数据绑定?
  • 不,只是添加行。是否也需要数据绑定?
  • 取决于你的用例......所以你基本上想在你的代码中处理网格的内容?
  • 另外,您能否提供一些示例代码来解释您如何设置单元格中的值?
  • 我想为特定列的每一行添加一个工具提示。否则我不反对将这该死的东西绑定到一个列表

标签: c# winforms datagridview event-handling


【解决方案1】:

根据我们的聊天,我建议不要尝试手动处理 DatagridView,而是使用底层的 DataObjects 列表,然后将 DGV 数据绑定到该列表。

使用隐藏列获取有关 SharePoint ColumnType 的信息。

希望这会有所帮助。

【讨论】:

  • 要提供有关聊天的更多详细信息,建议使用 BindingSource 对象。我做了这个并将数据对象列表分配给它,它工作得非常好。没有工具提示,但我仍然获得了我需要的信息,以一种有意义的方式使用和显示,同样重要的是,它有效。
猜你喜欢
  • 2022-01-02
  • 2021-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
相关资源
最近更新 更多