Tag: events

何时使用WPF / MVVM的事件和命令?

我正在练习如何使用MVVM模式编写WPF应用程序。 到目前为止,我还没有在我的代码中使用命令。 在我的Viewmodel中,我实现了INotifyPropertyChanged并使用(事件PropertyChangedEventHandler PropertyChanged )来触发事件。 为什么我觉得我仍然想念WPF关于如何使用命令的概念? 何时适合使用命令?

捕获和处理Web浏览器关闭事件

我正在使用Windows窗体和WebBrowser控件,我需要捕获和处理WebBrowser控件调用关闭。 我已经看了这个,但它不能正常工作,因为我需要它: http : //blogs.artinsoft.net/Mrojas/archive/2009/05/21/Extended-WebBrowser-Control-Series-WebBrowser-Control-and- windowClose()。ASPX 这是我收到的消息: ————————— Web Browser ————————— The webpage you are viewing is trying to close the window. Do you want to close this window? ————————— Yes No ————————— 我需要捕获此事件并禁止它,然后执行一个函数。 有谁知道一个简单的方法来做到这一点?

.NET WinForms – 如何监听系统LogOff,用户锁定,Hibernate启动和系统恢复的事件?

我想在我的Windows窗体.NET应用程序中监听以下系统范围事件中的事件: 注销锁定Windows Hibernate已启动睡眠启动系统已恢复 这些可能吗? 谢谢

使用Observable.FromEvent转换事件而不使用EventArgs

我正在努力将以下事件转换为IObservable : public delegate void _dispSolutionEvents_OpenedEventHandler(); event _dispSolutionEvents_OpenedEventHandler Opened; 该活动来自图书馆,所以我无法改变它。 应该执行它的IObservable.FromEvent的重载具有以下签名: public static IObservable FromEvent ( Action addHandler , Action removeHandler ) 所以我尝试转换这样的事件: var opened = Observable.FromEvent ( h => _SolutionEvents.Opened += h , h => _SolutionEvents.Opened -= h ); 但编译器不喜欢_SolutionEvents.Opened += h和_SolutionEvents.Opened += h因为 无法将类型’System.Action’隐式转换为’EnvDTE._dispSolutionEvents_OpenedEventHandler’。 我不认为我只能说_SolutionEvents.Opened += new _dispSolutionEvents_OpenedEventHandler(h)因为那时删除不起作用,因为我有一个不同的实例,对吧? Observable.FromEvent还有另一个重载,带有以下签名: public static IObservable FromEvent […]

你需要“unwire”一个匿名函数/ lambda

我的理解是,用C#连接的任何事件处理程序都需要无线连接。 Object myObject = new Object(); myObject.Event += EventHandler; //Wired myObject.Event -= EventHandler; //Unwired 但是你需要取消以下代码吗? 如果是的话,怎么样? Object myObject = new Object(); myObject.Event += (object sender, EventArgs e) => { }; //Wired myObject.Event -= ????? //Unwire? How? 我的假设是不是?

我应该使用EventHandler 和/或EventArgs委托模式吗?

阅读我的C#书,它讨论了在MS喜欢的模式中使用事件/代理(我假设我认为事件相当于没有成员变量访问的公共委托): public delegate Something(object o, EventArgs e) 然后进入有关EventArgs解释,基本上不需要委托声明: public EventHandler events 与(我认为)相同 private delegate Something(object o, SomeEventArgs e); public event Something events; 使用EventHandler是个好主意吗? 我可以看到为什么发送object可能有用,但不是所有时间 – 而且很多时候,EventArgs可能会变得很烦人。

如何在C#中的Windows面板控件中获取Keypress事件

我想在c#的windows面板控件中获取keypress事件,对我来说是否有任何身体帮助……

一段时间后,FileSystemWatcher停止引发事件

我们已经构建了一个使用FileSystemWatcher监听文件夹的窗口服务,在创建时我们处理文件,依此类推。 但是几天后事件就停止了。 它可能被垃圾收集器(GC)收集吗? GC是否收集持有类(单身)? 我应该使用弱事吗? 我是否有错误意味着事件未注册? 我认为问题是,FSW有一个内部缓冲区,当它溢出错误时,请看一下本文提供的代码来解决这个问题。 希望这有助于任何人。

如果事件在.NET中作为委托实现,那么.event IL部分的重点是什么?

我在Stack Overflow上看到了一些关于委托,事件和这两个特性的.NET实现的非常好的问题。 特别是一个问题,“ C#Events如何在幕后工作? ”,产生了一个很好的答案,可以很好地解释一些微妙的观点。 上述问题的答案提出了这一点: 当您声明类似字段的事件时……编译器会生成方法和私有字段(与委托类型相同)。 在类中,当您引用ElementAddedEvent时,您指的是该字段。 在课外,你指的是这个领域 从同一个问题(“类字段事件 ”)链接的MSDN文章添加: 引发事件的概念恰好等同于调用事件所代表的委托 – 因此,没有用于引发事件的特殊语言结构。 为了进一步检查,我构建了一个测试项目,以便查看事件和委托编译到的IL: public class TestClass { public EventHandler handler; public event EventHandler FooEvent; public TestClass() { } } 我希望委托字段handler和事件FooEvent编译成大致相同的IL代码,并使用一些其他方法来包装对编译器生成的FooEvent字段的访问。 但是IL产生的不是我预期的: .class public auto ansi beforefieldinit TestClass extends [mscorlib]System.Object { .event [mscorlib]System.EventHandler FooEvent { .addon instance void TestClass::add_FooEvent(class [mscorlib]System.EventHandler) .removeon instance void TestClass::remove_FooEvent(class […]

如何在UML类图中最好地表示c#.net事件构造?

我正在设计一个实体/组件系统,其中实体内部通信的问题由事件消息系统解决。 组件分为两部分,一部分在实体中,一部分在子系统中“实体代理”,通过观察者类型系统保持同步。 我正在尝试使用事件和代理进行实现。 我试图模拟我的应用程序的事件/消息系统的结构,我遇到代理问题。 它现在的方式是一个图表(附加),显示系统中的delegate,eventArgs和实​​体,但是它们之间关系的性质仅表示为通用关联。 我还有第二张图显示了系统的接口。 我需要显示在这些对象中引发的事件,因为这是系统中大部分复杂性的地方。 我知道我也需要动态协作和时序图,但我想弄清楚我需要什么样的类型和多少不同的事件支持类以及inheritance结构的样子。 我想给自己一个我知道将一起工作的消息类型的选择。 我想我可以从这些预定义类型中选择EventArgs派生和委托类型,以便在动态图表和组件构建时重用。 我无法弄清楚的主要问题是,是将事件建模为属性还是操作。 我一直在尝试使用委托的关联类和带有事件构造型的OnSomeEvent()类型操作。 我不喜欢这个,因为事件不是一个操作。 我已经使用这个On ****()命名约定在代码中保护了方法。 这种方法并未真正捕获委托签名,多播行为和观察者模式。 其他人用什么方法来表达这些复杂且紧密耦合的类? 对我来说,图表的重点是既要文档又要更全面地理解系统中的接口。 在我的过程的这个阶段,我希望冻结接口并继续实现组件本身。