是否有更简单或单行的方法来获取 DataGridViewComboBoxCell 的选定索引?
Posted
技术标签:
【中文标题】是否有更简单或单行的方法来获取 DataGridViewComboBoxCell 的选定索引?【英文标题】:Is there a simpler or one line method to get the selected index of a DataGridViewComboBoxCell? 【发布时间】:2019-01-09 18:54:15 【问题描述】:我有一个数据网格,其中主要包含 DataGridViewComboBoxColumn 列作为数据。 DataGridView 中的列数因类型而异 列出的产品。为了使每一行数据的编辑更容易,我创建了一个模式编辑器来将所有列显示为多行和多列 (需要移除数据网格强加给用户的水平滚动)。需要将datagrid的一行数据传输到模态编辑器中。
显然,模态编辑器中的控件将不是 DataGridViewComboBoxCell 类型。它们目前是 ListBox 类型,但在大多数 在这种情况下,这很容易更改为 ComboBox。
模态编辑器中的控件需要用当前启动 如果用户之前已经选择了 DataGridViewComboBox 单元格的值 编辑了控件。
我最初计划这样做的方式是获取选定的索引 DataGridViewComboBox 但这似乎不存在。有没有办法得到 不涉及将单元格值与每个单元格值进行比较的选定索引 DataGridViewComboBoxColumn.items 列表中的项目?
这个问题指的是第二个构造函数,它循环遍历项目列表以获取选定的索引。
public class ControlTransferData
private List<string> _valueStrings;
private string _name;
private bool _hasSelection;
private int _indexSelected;
public ControlTransferData()
_valueStrings = new List<string>();
_name = null;
_indexSelected = -1;
_hasSelection = false;
Width = 0;
Height = 0;
public ControlTransferData(DataGridViewComboBoxColumn CboxCol, DataGridViewCell currentControlToTransfer)
_valueStrings = new List<string>();
foreach (string item in CboxCol.Items)
string itemStringValue = item.ToString();
if (!string.IsNullOrWhiteSpace(itemStringValue) && !string.IsNullOrEmpty(itemStringValue))
_valueStrings.Add(itemStringValue);
if (currentControlToTransfer.Value != null)
_hasSelection = true;
int selectedIndex = 0;
string selectedItem = currentControlToTransfer.Value.ToString();
foreach (string currentString in _valueStrings)
if (currentString.CompareTo(selectedItem) == 0)
_indexSelected = selectedIndex;
selectedIndex++;
else
_indexSelected = -1;
_hasSelection = false;
_name = CboxCol.HeaderText;
Width = 0;
Height = 0;
public string Name set _name = value get return _name;
public List<string> ValueStrings set _valueStrings = value; get return _valueStrings;
public bool HasSelection set _hasSelection = value; get return _hasSelection;
public int IndexSelected set _indexSelected = value; get return _indexSelected;
public int Width set; get;
public int Height set; get;
【问题讨论】:
【参考方案1】:您可以使用以下代码:
myDGV.Columns["SampleColumn"].Index;
这适用于 winForms。
【讨论】:
@pacmaninbw : 编辑了我的答案并添加了 winforms 的工作代码。以上是关于是否有更简单或单行的方法来获取 DataGridViewComboBoxCell 的选定索引?的主要内容,如果未能解决你的问题,请参考以下文章
是否有更简洁的方法来获取错误和 Promise 的结果 [重复]
是否有更简单的方法来加载 Spring OAuth 客户端配置
在 JavaScript 中,是不是有更简单的方法来检查属性的属性是不是存在?
是否有更清晰的方法来处理不在聚合函数或 GROUP BY 子句中的字段?