C#winform问题 datagridview中combobox选项改变触发事件用哪个方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#winform问题 datagridview中combobox选项改变触发事件用哪个方法相关的知识,希望对你有一定的参考价值。

补充说明一下。。我把datagridview中的一列改成了combobox类型 有2个选项可供选择 如何在改变选项时触发事件.. 强调是combobox选项一改变就触发事件

这个需要触发的是datagridview的CellContentClick事件,在这个事件里,判断你的datagridview的ColumnIndex是不是所属的combobox的索引,如果是,才进行进一步的操作,例如:
//假定你的
combobox的索引是5,如果不确定,可以通过弹出e.ColumnIndex看看你所点击的combobox的索引是几

private void datagridview_CellContentClick(object sender, DataGridViewCellEventArgs e)

if (e.ColumnIndex == 5 && e.RowIndex != -1 && !datagridview.Rows[e.RowIndex].IsNewRow)

//这个地方写你的事件操作,如:
String id = datagridview.Rows[e.RowIndex].Cells[0].Value.ToString();
......

参考技术A 给你个VB的写法,自己改成C#的。

'下面这个保证一旦ComboBox数据改变会提交给事件
Private Sub DataGridView1_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
If DataGridView1.IsCurrentCellDirty Then
DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
End Sub

’这里响应事件
Private Sub DataGridView1_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
If e.ColumnIndex = 1 AndAlso e.RowIndex > -1 Then
MessageBox.Show(DataGridView1.Rows(e.RowIndex).Cells(1).Value)
End If
End Sub
参考技术B TextChanged(),因为你改变的是文本的值,相当于input的 text属性一样 参考技术C 能不能说具体点 说你的目的是什么 参考技术D a.SelectedIndexChanged
b.Controlassed
c.styleChanged
d.imeModeChanged

C#winform程序中,将A窗体datagridview中选中的数据传到B窗体里面的各个文本框中进行修改

如何实现?

我写好了,以下是截图,完整源码在附件中,有问题欢迎追问。

1.单击任意单元格


2.弹出修改对话框,输入新值,单击修改按钮,对话框自动关闭


3.修改成功了


参考技术A 通过datagridview双击事件实现获取datagridview数据,代码如下:
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)


// 取得当前单元格内容
Console.WriteLine(DataGridView1.CurrentCell.Value);
// 取得当前单元格的列 Index
Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex);
// 取得当前单元格的行 Index
Console.WriteLine(DataGridView1.CurrentCell.RowIndex);

参考技术B 这个很简单!
我只讲思路!
1:通过鼠标单击选中某行数据触发datagridview的行选中事件,得到选中的这行数据!
2:在B窗体里面你可以通过构造方法在实例化B窗体对象的时候将选中的行数据传递到B窗体。
3:接下来就是给B窗体里面的控件赋值!至于怎么修改这条数据我想这个你应该会了吧!
4:再不明白就加我QQ657236296我给你代码吧追问

能不能给我个代码看看,我想学习一下

追答

string sID = dgvDsp.SelectedRows[0].Cells[0].Value.ToString();
这个是选中datagridview行获取它的ID的代码,只要怎么获取其它的数据我想就很简单了吧
接下来是传值
frmB b=new frmB(sID,...)你可以在B窗体里面定义一个构造函数在你传值到B窗体的时候通过new这个对象调用这个构造函数将值传递到B窗体(其实窗体传值方式很多可以通过属性、结构等方式)
接下来就是对这条数据进行你想要的操作了!代码我不会给你全部的,做程序开发最忌讳就是照抄别人的,你得有自己的思路只要思路清晰了代码自然就好写了,不然给了你代码问题是解决了但是对你的技术提高是没有任何好处的!

追问

在不会的时候就只能照葫芦画瓢啊,然后自己才能从中总结和提升!麻烦请教一下窗体间通过属性的传值、结构的传值的实现方式!

参考技术C 这b框体中 创建一个属性。A窗体中直接 传个对象过去 参考技术D 你百度一下,子窗体传值给父窗体、父窗体传值给子窗体,就可以解决你的问题了。追问

能不能给我个代码看看?学习一下

以上是关于C#winform问题 datagridview中combobox选项改变触发事件用哪个方法的主要内容,如果未能解决你的问题,请参考以下文章

C#winform问题 datagridview中combobox选项改变触发事件用哪个方法

如何使用动态枢轴c#winform将总计列和行插入datagridview

winform datagridview 绑定 list .c#

C#Winform中DataGridView合并单元格的问题?

用c#winform拖的datagridview控件,当选中一行数据以后鼠标离开之后,就选不中了

C#winform中datagridview导出Excel