c# DataGridView中的CellValueChanged响应问题

donkey301 2011-09-09 03:05:18
我DataGridView某一个cell是combobox,其中用CellEnter来响应单击列出所有项,用CellValueChanged来响应combobox选项改变。
现在的问题是如果我改变了第二行的combobox的选项,此时还没有响应CellValueChanged,再点击一个删除按钮,那么就会删除第二行,此时第一行的combobox就会列出所有项。我希望第一行的combobox不列出所有项。请问怎么做?
大体代码:

private void DataGridView1_CellValueChanged(
object sender, DataGridViewCellEventArgs e)
{
if(e.RowIndex>-1&&e.ColumnIndex = 2)
{
datagridview.Rows[e.RowIndex].Cell[1].Value = ...
}
//...
}
private void DataGridView1_CellEnter(
object sender, DataGridViewCellEventArgs e)
{
if(e.RowIndex>-1)
{
///....
}
}

...全文
810 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
donkey301 2011-09-14
  • 打赏
  • 举报
回复
单击打开combobox我用的是下面网页介绍的方法:
http://hi.baidu.com/%CE%F7%CB%AB%C9%BD/blog/item/c7991fea75dba6c5d539c93d.html
donkey301 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sdl2005lyx 的回复:]

楼主,你的思路有问题,正确做法:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex == 1 && dat……
[/Quote]
谢谢,我把CellValueChanged改为用SelectedIndexChanged后,我说的那个问题没有了,不过单击打开下拉菜单时程序卡死在那,后来不得不直接取消了CellEnter事件,
如果能保留CellEnter来单击打开Combobox就更好了。
sdl2005lyx 2011-09-11
  • 打赏
  • 举报
回复
楼主,你的思路有问题,正确做法:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex == 1 && dataGridView1.CurrentCell.RowIndex != -1) //控制要处理的列
{
(e.Control as Combobox).SelectedIndexChanged+=new EventHandler(form1_SelectedIndexChanged); //订阅事件
}
void tform1_SelectedIndexChanged(object sender, EventArgs e)
{
.............;//事件处理
}
LMAOhuaNL 2011-09-11
  • 打赏
  • 举报
回复
upup楼上
shadan05 2011-09-09
  • 打赏
  • 举报
回复
你可以给combobox加一个SelectedIndexChanged事件,在这个事件里面去处理,别在CellValueChanged事件里处理,看是否可以

具体我也没咋看明白你的描述。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧