标签: datagridview

绑定到DataGridView - 有没有办法"绑定"单元格的背景颜色?

我将List绑定到DataGridView.SomeObject类的一个属性是状态代码(例如Red,Yellow,Green).我可以轻松地将状态"绑定"到单元格的背景颜色吗?如何绑定到工具提示呢?

.net data-binding datagridview winforms

19
推荐指数
1
解决办法
1万
查看次数

C#:自定义DataGridView

我需要使用自然排序(在资源管理器中)对DataGridView进行排序,以便数字和文本(在同一列中)自然排序,而不是按字母顺序排序(以便"位置3"位于"位置20"之前,等等).我有一个DataGridView,我将DataView设置为DataSource.DataView包含一个DataTable,它是使用数据库中的某些值创建的.列类型是字符串.我有一个IComparer,它做了应有的事情,但我无法弄清楚如何使用它,因为我无法找到如何进行排序.DataGridView.SortCompare事件是完美的,因为它是数据绑定的,所以不起作用.DataView.Sort只接受具有列名和排序顺序的字符串.

很烦人.试图在StackOverflow上阅读相关问题,并搜索谷歌的很多和很多,但我真的找不到这个.只有我真正找到的东西是使用dataview的Sort(字符串)方法,因为它按字母顺序排序.

有没有人知道如何做到这一点没有太多麻烦?它应该是别人而不是我这个?我真的不想重新实现整个datagridview或dataview类,只是为了获得自定义排序...

更新:如果有人想知道,我仍然在寻找这个问题的好答案.虽然与此同时,我最终创建了自己的简单表类,然后手动将其提供给datagridview.覆盖SortCompare方法.有点烦人,但并不太难,因为我只需要显示值(没有编辑或任何东西),因此可以将所有内容转换为字符串.

c# sorting dataview datagridview

19
推荐指数
1
解决办法
2万
查看次数

BindingList <> ListChanged事件

我有一个类的BindingList <>设置为BindingSource的DataSource属性,该属性又设置为DataGridView的DataSource属性.

1.我的理解是,对列表的任何添加都将触发ListChanged事件,该事件将通过BindingSource传播,然后传播到DataGridView,DataGridView将更新自身以显示更改.这将发生,因为事件已自动连接.(是?)

当所有工作都在UI线程上完成时,这一切都很好,但是当从非UI线程创建和更改列表时,最终在更新网格时会发生跨线程异常.我能理解为什么会这样,但是没有办法解决这个问题......

2.我很难理解,我应该在哪里最好拦截ListChanged事件来尝试将内容整理到UI线程中?我猜我需要一个UI线程的引用以某种方式帮助做到这一点?

我已经阅读了很多这方面的帖子/文章,但我很难挣扎,因为我不完全理解这里的工作机制.

我们永远不会在列表中更改任何项目,只添加它们,并最初清除列表.

(我使用的是.NET 2.0)

.net c# data-binding datagridview winforms

19
推荐指数
1
解决办法
2万
查看次数

隐藏Winform应用程序中DataGridview底部的额外行

我已将datagridview绑定到数据表.但是gridview在底部显示了一个额外的空行?我该怎么隐藏它?提前致谢

.net c# datagridview winforms

19
推荐指数
1
解决办法
2万
查看次数

DataGridView keydown事件无法在C#中工作

当我在单元格内编辑文本时,DataGridView keydown事件不起作用.

我正在分配快捷键Alt + S来保存数据,它在单元格不处于编辑模式时有效,但如果它处于编辑模式,则代码不能正常工作

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
 {
    if (e.KeyData == (Keys.Alt | Keys.S))
    {
         //save data
    }
 }
Run Code Online (Sandbox Code Playgroud)

.net c# datagridview keydown winforms

19
推荐指数
3
解决办法
3万
查看次数

DataGridView:如何让一些单元格无法选择?

如何让DataGridView中的某些单元格无法选择?

"不可选择"是指:不能以任何方式选择它并试图选择它不会取消选择任何其他单元格.

我不是故意的ReadOnly.我的单元格已经将此属性设置为true.

DataGridView.MultiSelect 需要是假的.

感谢JYL的回答,我写了一个代码:

    private int selectedCellRow = 0;
    private int selectedCellColumn = 0;

    private void grid_CellStateChanged(object sender, DataGridViewCellStateChangedEventArgs e)
    {
        if (e.Cell == null || e.StateChanged != DataGridViewElementStates.Selected)
                return;

        if (e.Cell.RowIndex == 0 || e.Cell.ColumnIndex == 0 || e.Cell.RowIndex == 1 && e.Cell.ColumnIndex == 1)
        {
            e.Cell.Selected = false;
            grid.Rows[selectedCellRow].Cells[selectedCellColumn].Selected = true;
        }
        else
        {   
            selectedCellRow = e.Cell.RowIndex;
            selectedCellColumn = e.Cell.ColumnIndex;
        }

        //this was only for seeing what is happening
        //this.Text = selectedCellRow + " …
Run Code Online (Sandbox Code Playgroud)

c# datagridview visual-studio-2010 winforms

19
推荐指数
2
解决办法
2万
查看次数

如何在绑定到链接到EF4实体的绑定源时对DataGridView进行排序

我有一个DataGridView与a相关联的BindingSource.

BindingSource链接到一个IQueryable实体列表:

    public void BindTo(IQueryable elements)
    {
        BindingSource source = new BindingSource();
        source.DataSource = elements;

        bindingNavigator1.BindingSource = source;
        dataGridView1.DataSource = source;

    }
Run Code Online (Sandbox Code Playgroud)

我希望我的用户能够单击网格标题来对数据进行排序 - 努力使其工作.可能吗?如果是这样,我该怎么办?

c# sorting entity-framework datagridview winforms

19
推荐指数
1
解决办法
2万
查看次数

将值添加到特定DataTable单元格

我想知道是否可以将值添加到特定的DataTable单元格?

假设我有一个现有的dataTable,并且我添加了一个新列,如何在不覆盖现有列的行的情况下添加到新列的行?

据我所知,没有一种方法可以添加到特定的细胞(除非我错了).

  dt.Rows.Add(a, b, c, d)
Run Code Online (Sandbox Code Playgroud)

其中a,b,c和d是字符串值.那么如果我只想添加到d列呢?

任何帮助,将不胜感激.

c# datatable datagrid datagridview

19
推荐指数
2
解决办法
11万
查看次数

如何在DataGridView中获取选定的DataRow?

我有一个绑定到DataGridView的DataTable.我在DGV中启用了FullRowSelect.有没有办法将所选行作为DataRow获取,以便我可以获得对所选行的值的强类型访问?

c# data-binding ado.net datagridview winforms

18
推荐指数
2
解决办法
4万
查看次数

如何提高DataGridView的绘画性能?

(抱歉英文不好)

我重新涂漆时的性能存在很大问题DataGridView.

我正在使用a DataGridView来显示来自外部应用程序流的日志.来自流的消息以高频率(小于1毫秒)进入.如果我DataGridView在每条新消息到来时立即添加新行,DataGridView则在下一条消息到来之前没有时间重新绘制自己.

一种可能的解决方案是使用队列来收集消息,并使用队列中的消息DataGridView每100毫秒重新绘制一次.这很好但是DataGridView当它自动滚动到最后一行时闪烁.(禁用平滑滚动)

你能帮助我改善DataGridView表现吗?

.net datagridview paint repaint winforms

18
推荐指数
3
解决办法
2万
查看次数