我要创建c#windows应用程序。在我的表单中,我有一个gridview,有两列,一列是textboxcolumn,另一列是Combobox列。我希望在同一行中更改第一个文本框列值时更改所选的组合索引。 例如,如果我在文本框单元格中输入2,则在下一个单元格组合框(产品)中,所选值在同一行中为2。请帮我代码。 提前谢谢。
答案 0 :(得分:-1)
您需要使用以下内容处理CellValueChanged
事件:
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if(e.ColumnIndex == TextColumn.Index && ComboBoxColumn.Items.Count >0)
{
int itemIndex = GetCorrectItem();
dataGridView1.Rows[e.RowIndex].Cells[ComboBoxColumn.Index].Value = ComboBoxColumn.Items[itemIndex];
}
}
GetCorrectItem()方法应根据您的具体实现获取正确的项目索引。
如果您想要在退出后输入文本框时更新组合框,则需要处理EditingControlShowing
事件并处理编辑控件的TextChanged
事件。如下所示:
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex == TextColumn.Index)
{
var textbox = e.Control as TextBox;
if (textbox != null)
{
textbox.TextChanged += textboxColumn_TextChanged;
}
}
}
private void textboxColumn_TextChanged(object sender, EventArgs e)
{
int itemIndex = GetCorrectItem();
dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[ComboBoxColumn.Index].Value = ComboBoxColumn.Items[itemIndex];
}