问题标签 [datagridview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6385 浏览

.net - DataGridView 鼠标选择

我在 Windows 窗体应用程序中使用 DataGridView 控件。当用户按住控件选择多个项目时,它可以正常工作。现在,当用户释放控制并单击(并按住鼠标左键)开始拖动操作时,选择会发生变化。当用户按住鼠标左键时,如何停止清除选择?

0 投票
3 回答
4260 浏览

.net - 如何根据单元格的值更改 DataGridView 中一行的背景色?

我有一个显示 DataTable 内容的 DataGridView。

我想根据该行中单元格的值设置行的背景色。

请注意,有问题的单元格位于 DataGridView 中未显示的列中 (Visible=False)。

0 投票
3 回答
23219 浏览

.net - 当网格绑定到排序的DataView时,如何将DataGridView的选定行设置为新添加的行?

我有DataGridView一个DataView. 用户可以在任何列上对网格进行排序。

DataView我通过在' 的基础上调用 NewRow 向网格中添加一行DataTable,然后将其添加到DataTable' 的 Rows 集合中。如何在网格中选择新添加的行?

我尝试通过创建一个BindingManagerBase绑定到 的对象BindingContextDataView然后设置BindingManagerBase.Position = BindingManagerBase.Count. 如果网格未排序,则此方法有效,因为新行被添加到网格的底部。但是,如果排序顺序是该行未添加到底部,则此方法不起作用。

如何可靠地将网格的选定行设置为新行?

0 投票
4 回答
552 浏览

.net - 用户根据给定 System.Windows.Forms.KeyEventArgs 中的值键入了哪些可打印字符(如果有)?

作为解决问题的方法,我认为我必须处理 KeyDown 事件来获取用户实际键入的可打印字符。

KeyDown 为我提供了具有 KeyCode、KeyData、KeyValue、Modifiers、Alt、Shift、Control 属性的 KeyEventArgs 对象。

我的第一次尝试只是将 KeyCode 视为 ascii 代码,但我键盘上的 KeyCode 是 46,一个句点(“.”),所以当用户键入删除键时,我最终打印了一个句点。所以,我知道我的逻辑是不充分的。

(对于那些好奇的人,问题是我在 DataGridView 的控件集合中有自己的组合框,并且不知何故我键入的某些字符不会产生 KeyPress 和 TextChanged ComboBox 事件。这些字母包括 Q、$、%...。

此代码将重现该问题。生成一个 Form App 并用此代码替换 ctor。运行它,然后尝试在两个组合框中输入字母 Q。

0 投票
1 回答
787 浏览

c# - 如何动态设置哪些属性绑定到 DataGridView?

我的 DataGridView 需要支持多种类型,这些类型可能具有任意数量的公共属性,而不是我想要显示的所有属性。

任何人都可以建议一种在将类绑定到数据源时动态自定义 DataGridView 列的方法吗?例如,是否有一个属性可以告诉控件是否将属性用作列?

建议表示赞赏。

0 投票
2 回答
1733 浏览

c# - 如何让 DataGridView 的 ComboBox 子项来处理所有键,包括“.”?

我遇到了与下面列出的帖子中描述的相同的问题。也就是说,当我在组合框中键入某些键时,它们根本不起作用,直到我第一次按下空格键。其中一个键是“.”,另一个是字母“Q”,还有其他的:“$”、“%”。

http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=659716&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2909173&SiteID=1&pageid=0
http://bytes。 com/forum/thread548399.html

到目前为止,我已经尝试了很多东西。我最近的失败是基于 DataGridView 可能使用 WIN32 API wndproc 子类化来拦截消息的理论,所以我编写了逻辑来保存旧的 wndproc 并在将其添加到 DataGridView 的控件集合后恢复它。那没有用。

墨西拿 - 感谢您提醒我有关 Spy++ 的信息。对于字母“A”,编辑窗口向其父组合框发送一个 EN_UPDATE。但是,不适用于“Q”。这太奇怪了。

我已经说服自己 DataGridView 不是组合和编辑的子类,因为我在创建之后和将它们添加到网格集合之前检查了 wndprocs 的地址,然后在我绘制时检查。除非网格安装某种全局钩子..

我在想,也许我可以子类化编辑控件,然后按照我在这里看到编辑控件的方式将通知发送到组合框?

编辑:更多信息在这里。来自 Spy++ 的网格、组合框和编辑控件的 Windows 消息:

HWNDs: 122064e < 网格 010d0674 < 组合框 01360696 < 组合框的编辑控件

字母 q

0 投票
3 回答
12610 浏览

.net - How to change cell's ComboBox style in DataGridViewComboBoxColumn

Cells in DataGridViewComboBoxColumn have ComboBoxStyle DropDownList. It means the user can only select values from the dropdown. The underlying control is ComboBox, so it can have style DropDown. How do I change the style of the underlying combo box in DataGridViewComboBoxColumn. Or, more general, can I have a column in DataGridView with dropdown where user can type?

0 投票
3 回答
6197 浏览

.net - 当用户取消添加过程时,如何删除正在添加的 DataGridView 行?

我有一个数据绑定DataGridView。当添加新行并且用户按下Esc我想删除整行时。我怎样才能做到这一点?

0 投票
1 回答
3070 浏览

c# - 从 DataGridView 中的自定义编辑控件引发 CellValueChanged

我有一个 DataGridView (WinForms),我在其中定义了一个从 DataGridViewTextBoxEditingControl 派生的自定义 EditingControl,它只允许数字字符。

每次用户按键时,我都需要在 DataGridView 上引发 CellValueChanged 事件,但默认行为是仅在编辑完成时引发事件。

每次按下键时如何引发事件?

更新:

我找到了一种解决方法,但我不确定这是一个好的解决方案:

0 投票
1 回答
2734 浏览

visual-studio - How to make a ComboBox column with two data sources (for DataGridView)

The data sources have the same structure, but different data. One would be used for rows that are saved (view mode), and the other one would be for rows that are being added or edited (edit/new rows). How can that be acomplished?

I have a standard foreign key column that references a standard lookup table which has an ID, Name and Active (bit). The combo box column uses that lookup table to show the list, but only active items. Let's say a lookup item is used and later deactivated (Active = 0). The combo box column now shows errors because the ID is not found in the list. Does anyone have any ideas how to solve it?