【问题标题】:DataGridViewTextBoxColumn that changes to ComboBox on editing编辑时更改为 ComboBox 的 DataGridViewTextBoxColumn
【发布时间】:2023-03-17 08:44:01
【问题描述】:

我想显示一个带有 ComboBox 列的 DataGridView,它看起来像 DataGridViewTextBoxColumn。

在 DataGridView 中,我显示了 DataGridViewTextBoxColumn,当​​用户将焦点设置在此列中的一个单元格上时,该单元格应更改为 ComboBox。

我不知道必须重写哪个函数。

DataGridTextBoxColumn 中有 Edit 函数,我可以在这个函数中绘制我的组合框吗?

【问题讨论】:

    标签: c# datagridviewcombobox


    【解决方案1】:

    除非我遗漏了什么 - 你应该能够简单地使用 DataGridViewComboBoxColumn 列类型。

    根据您添加列的方式,您可以在“添加列”对话框的“类型”下拉菜单中选择此类型,也可以像这样以编程方式添加它:

    DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
    dataGridView1.Columns.Add(col);
    

    要实现您在编辑之前看起来像文本框的组合框的效果,请将 DataGridViewComboBoxColumn DisplayStyle 属性设置为 Nothing:

    List<string> names = new List<string> { "Joe", "Sally", "Kate" };
    
    DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
    col.DataSource = names;
    col.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
    
    dataGridView1.Columns.Add(col);
    

    您还可以通过 EditingControlShowing 事件访问 DataGridView 单元格的底层控件。

    【讨论】:

    • 是的,但我希望所有列都为 DataGridViewTextBoxColumn,并且在用户单击单元格之前,该单元格应更改为 DataGridViewComboBoxCell。
    • @albert 所以你想要一个在被点击之前看起来是一个文本框的组合框列?
    • 是否有可能使这个组合框与第一项可编辑?就像使用 comboBoxToolStripItem 一样。
    • @albert - 是的,在editingcontrolshowing 事件中将底层组合框控件更改为DropDown 样式。这里解释了sommergyll.com/datagridview-usercontrols/… 虽然它可能值得在这个网站上进行更多搜索(我想我之前可能已经回答过这个问题)如果你什么也没找到,问一个问题,因为在这里收集大量信息以帮助未来人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    相关资源
    最近更新 更多