草庐IT

C# 列表框项目双击事件

我有一个包含一些项目的列表框。无论如何,我可以为每个项目附加一个双击事件吗?Item1Item2Item3如果我双击项目2,会弹出一个消息框,上面写着“项目2”我该怎么做? 最佳答案 voidlistBox1_MouseDoubleClick(objectsender,MouseEventArgse){intindex=this.listBox1.IndexFromPoint(e.Location);if(index!=System.Windows.Forms.ListBox.NoMatches){MessageBox.Show(i

C# 列表框项目双击事件

我有一个包含一些项目的列表框。无论如何,我可以为每个项目附加一个双击事件吗?Item1Item2Item3如果我双击项目2,会弹出一个消息框,上面写着“项目2”我该怎么做? 最佳答案 voidlistBox1_MouseDoubleClick(objectsender,MouseEventArgse){intindex=this.listBox1.IndexFromPoint(e.Location);if(index!=System.Windows.Forms.ListBox.NoMatches){MessageBox.Show(i

c# - 使用扩展方法引发 C# 事件 - 这不好吗?

我们都熟悉C#事件声明的可怕之处。为确保线程安全,thestandardistowritesomethinglikethis:publiceventEventHandlerSomethingHappened;protectedvirtualvoidOnSomethingHappened(EventArgse){varhandler=SomethingHappened;if(handler!=null)handler(this,e);}最近在此板上的其他一些问题(我现在找不到)中,有人指出在这种情况下可以很好地使用扩展方法。这是一种方法:staticpublicclassEventExt

c# - 使用扩展方法引发 C# 事件 - 这不好吗?

我们都熟悉C#事件声明的可怕之处。为确保线程安全,thestandardistowritesomethinglikethis:publiceventEventHandlerSomethingHappened;protectedvirtualvoidOnSomethingHappened(EventArgse){varhandler=SomethingHappened;if(handler!=null)handler(this,e);}最近在此板上的其他一些问题(我现在找不到)中,有人指出在这种情况下可以很好地使用扩展方法。这是一种方法:staticpublicclassEventExt

c# - 事件不是领域——我不明白

在C#indepth(到目前为止是一本优秀的书),Skeet解释说事件不是领域。我多次阅读此部分,但我不明白为什么这种区别会产生任何影响。我是混淆事件和委托(delegate)实例的开发人员之一。在我看来,他们是一样的。两者不都只是一种间接形式吗?我们可以同时多播。一个事件被设置为一个字段作为速记……当然。但是,我们正在添加或删除处理程序。将它们堆叠起来以便在事件触发时调用。难道我们不能对委托(delegate)做同样的事情,将它们堆叠起来并调用invoke吗? 最佳答案 其他答案基本正确,但换个角度看:Iamoneofthosed

c# - 事件不是领域——我不明白

在C#indepth(到目前为止是一本优秀的书),Skeet解释说事件不是领域。我多次阅读此部分,但我不明白为什么这种区别会产生任何影响。我是混淆事件和委托(delegate)实例的开发人员之一。在我看来,他们是一样的。两者不都只是一种间接形式吗?我们可以同时多播。一个事件被设置为一个字段作为速记……当然。但是,我们正在添加或删除处理程序。将它们堆叠起来以便在事件触发时调用。难道我们不能对委托(delegate)做同样的事情,将它们堆叠起来并调用invoke吗? 最佳答案 其他答案基本正确,但换个角度看:Iamoneofthosed

c# - 添加和删​​除匿名事件处理程序

我想知道这是否真的有效?privatevoidRegisterKeyChanged(Titem){item.OnKeyChanged+=(o,k)=>ChangeItemKey((T)o,k);}privatevoidUnRegisterKeyChanged(Titem){item.OnKeyChanged-=(o,k)=>ChangeItemKey((T)o,k);}编译器如何知道事件处理程序相同?这是否值得推荐? 最佳答案 有一个MSDN页面讨论了这个问题:HowtoSubscribetoandUnsubscribefromEv

c# - 添加和删​​除匿名事件处理程序

我想知道这是否真的有效?privatevoidRegisterKeyChanged(Titem){item.OnKeyChanged+=(o,k)=>ChangeItemKey((T)o,k);}privatevoidUnRegisterKeyChanged(Titem){item.OnKeyChanged-=(o,k)=>ChangeItemKey((T)o,k);}编译器如何知道事件处理程序相同?这是否值得推荐? 最佳答案 有一个MSDN页面讨论了这个问题:HowtoSubscribetoandUnsubscribefromEv

c# - 将额外参数传递给事件处理程序?

假设我想在分配事件处理程序时传递一些额外的数据。考虑以下代码:privatevoidsetup(stringsomeData){Object.assignHandler(evHandler);}publicvoidevHandler(Objectsender){//needsomeDatahere!!!}我如何将someData放入我的evHandler方法中? 最佳答案 privatevoidsetup(stringsomeData){Object.assignHandler((sender)=>evHandler(sender,

c# - 将额外参数传递给事件处理程序?

假设我想在分配事件处理程序时传递一些额外的数据。考虑以下代码:privatevoidsetup(stringsomeData){Object.assignHandler(evHandler);}publicvoidevHandler(Objectsender){//needsomeDatahere!!!}我如何将someData放入我的evHandler方法中? 最佳答案 privatevoidsetup(stringsomeData){Object.assignHandler((sender)=>evHandler(sender,