可能重复:
单击一次打开下拉列表(在数据网格视图中)
我们有一个DataGridView,其中一列是具有DropDownButton样式的ComboBox.DataGridView处于FullRowSelect模式.假设我有5行,并在DataGridView中选择了行0.
我想从-say的ComboBox中选择一个项目例如第2行,因此我单击ComboBox的小箭头.当我这样做时,首先,选择DataGridView的第2行.ComboBox尚未打开.只有第二次单击才能打开ComboBox.
事实上,它过去需要3次点击,但后来我们重载了CellMouseDown来做:
myDataGridView.ClearSelection();
myDataGridView.Rows[e.RowIndex].Selected = true;
Run Code Online (Sandbox Code Playgroud)
有了这个,我们只有2次点击.有没有办法只显示一次单击显示ComboBox项目?
编辑:我还应该提一下,如果我单击ComboBox本身,而不是单击ComboBox的小箭头,只需3次单击即可显示ComboBox项目!
datagridview datagridviewcolumn datagridviewcombobox datagridviewcomboboxcell
dataGridView.Rows.Add(
metaData.Offset.ToString("X2"),
metaData.Length,
metaData.Format, // This parameter goes to a ComboBox cell which throws an
metaData.Description, // exception above
null,
null);
Run Code Online (Sandbox Code Playgroud)
以编程方式将数据分配给的有效方法是什么DataGridViewComboBoxCell?
我想使用c#使用comboboxcolumns创建一个datagridview.
问题是我不知道如何为每行中的组合框提供不同的值.
DataTable dt = new DataTable();
dt.Columns.Add("state");
dt.Columns.Add("city");
dt.Rows.Add("a1", "b1");
dt.Rows.Add("a1", "b2");
dt.Rows.Add("a2", "b3");
dt.Rows.Add("a2", "b4");
dt.Rows.Add("a3", "b5");
DataGridViewComboBoxColumn comboStates = new DataGridViewComboBoxColumn();
comboStates.HeaderText = "HeaderText_1";
this.dataGridView1.Columns.Insert(0, comboStates);
DataGridViewComboBoxColumn comboCities = new DataGridViewComboBoxColumn();
comboCities.HeaderText = "HeaderText_2";
this.dataGridView1.Columns.Insert(1, comboCities);
for (int i = 0; i < dt.Rows.Count; i++)
{
dataGridView1.Rows.Add();
comboStates.Items.Add(dt.Rows[i][0]);
DataGridViewComboBoxCell stateCell = (DataGridViewComboBoxCell) (dataGridView1.Rows[i].Cells[0]);
stateCell.Value = comboStates.Items[i];
comboCities.Items.Add(dt.Rows[i][1]);
DataGridViewComboBoxCell cityCell = (DataGridViewComboBoxCell)(dataGridView1.Rows[i].Cells[1]);
cityCell.Value = comboCities.Items[i];
}
Run Code Online (Sandbox Code Playgroud)
此示例提供以下结果:
对于每一行:
comboboxcolumnstate:
a1
a1
a2
a2
a3
Run Code Online (Sandbox Code Playgroud)
comboboxcolumncity:
b1
b2
b3 …Run Code Online (Sandbox Code Playgroud) 我Datagridview在Winform中有一个.其中一列是a Combobox.是否可以设置属性,以便用户可以输入,而不能从下拉列表中选择条目.
我能够Combobox在属性窗口中对以下更改的项目执行此操作:
AutoCompleteMode.SuggestAppend;
AutoCompleteSource.CustomSource;
DropDownStyle : Dropdown;
Run Code Online (Sandbox Code Playgroud)
谢谢
private void CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if(whatever)
e.CellStyle.BackColor = SystemColors.ControlDark;
Run Code Online (Sandbox Code Playgroud)
这适用于文本列,但对于组合框列,它没有任何区别.如果有更简单的方法,我很快就不会让所有者进行控制.
谢谢,斯派克
我正在尝试selectedindex为我的datagridviewcomboboxcellthroughcellvaluechanged事件设置 ,即当我更改数据网格行中的某些值时,该列应自动更改。这是代码。
Private Sub DataGridView1_CellValueChanged(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
Try
If Me.DataGridView1.Rows(e.RowIndex).Cells(2).Value.ToString <> Nothing Then
Me.DataGridView1("unit_code", e.RowIndex).Value = "1"
MsgBox(Me.DataGridView1.Rows(e.RowIndex).Cells(6).Value)
End If
Else
Exit Sub
End If
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Run Code Online (Sandbox Code Playgroud)
我的 datagridview 绑定到数据集。搜索了许多站点并进行了所有研究,得到了上述解决方案,我们需要将其设置valuemember为.value部分。即使在这样做之后,它也会给system.formatexception:datagridviewcomboboxcell value is not valid.
请帮我。
[编辑]
表结构
unit_code descp
0 -
1 nos
2 kgs
3 gms
[编辑 2]
query = "select Switch(qty=0,'2',qty<=rcvd_qty,'1',rcvd_qty=0,'2',qty>rcvd_qty,'3') …Run Code Online (Sandbox Code Playgroud) 我一直在摸不着头脑.
所以我在设计模式中添加了一个datagridview表单.
datagridview有2列,一列是textbox列,另一列是combobox列.
我已经弄清楚如何以编程方式填充文本框的单元格,但是我无法确定用于填充组合框列的属性.
我只想找到dropdown3个选项.任何想法都会很棒.
PS:我刚刚2天前拿起VB.net,所以如果问题是原始的话,我道歉:)