Tag: events

来自其他类的事件被触发时通知

我有 class A { B b; //call this Method when b.Button_click or b.someMethod is launched private void MyMethod() { } ?? } Class B { //here ie a button is pressed and in Class A //i want to call also MyMethod() in Class A after the button is pressed private void Button_Click(object o, EventArgs s) […]

从登录和注销获得通知

我必须开发一个程序,它在本地PC上作为服务运行,为服务器提供几个用户状态。 一开始我必须检测用户登录和注销 。 我的想法是使用ManagementEventWatcher类并查询Win32_LogonSession ,以便在发生更改时收到通知。 我的第一个测试运行良好,这是代码部分(这将作为服务的线程执行) : private readonly static WqlEventQuery qLgi = new WqlEventQuery(“__InstanceCreationEvent”, new TimeSpan(0, 0, 1), “TargetInstance ISA \”Win32_LogonSession\””); public EventWatcherUser() { } public void DoWork() { ManagementEventWatcher eLgiWatcher = new ManagementEventWatcher(EventWatcherUser.qLgi); eLgiWatcher.EventArrived += new EventArrivedEventHandler(HandleEvent); eLgiWatcher.Start(); } private void HandleEvent(object sender, EventArrivedEventArgs e) { ManagementBaseObject f = (ManagementBaseObject)e.NewEvent[“TargetInstance”]; using (StreamWriter fs […]

PropertyChangedEventHandler如何工作?

这是一个非常简单的问题,但我想知道是否有人可以解释第4行实际上在做什么? 所以第一行给处理程序一个事件。 我真的不知道在什么情况下处理程序将返回null或最后一行的作用。 当你传递处理程序你的对象和哪个属性发生了变化时,它对它们有什么影响? PropertyChangedEventHandler handler = PropertyChanged; //property changed is the event if (handler != null) { handler(this, new PropertyChangedEventArgs(name)); } 我假设我使用它来获取此代码,但我想了解它正在做什么。

清理事件处理程序引用的最佳做法是什么?

我常常发现自己编写的代码如下: if (Session != null) { Session.KillAllProcesses(); Session.AllUnitsReady -= Session_AllUnitsReady; Session.AllUnitsResultsPublished -= Session_AllUnitsResultsPublished; Session.UnitFailed -= Session_UnitFailed; Session.SomeUnitsFailed -= Session_SomeUnitsFailed; Session.UnitCheckedIn -= Session_UnitCheckedIn; UnattachListeners(); } 目的是清理我们在目标(会话)上注册的所有事件订阅,以便GC可以自由处理会话。 我与同事讨论了实现IDisposable的类,但他相信这些类应该像这样执行清理: /// /// Disposes the object /// public void Dispose() { SubmitRequested = null; //frees all references to the SubmitRequested Event } 是否有理由选择其中一个? 有没有更好的方法来解决这个问题? (除了各处的弱参考事件) 我真正希望看到的是一些类似于引发事件的安全调用模式:即安全和可重复。 每次我附加到活动时我都记得要做的事情,这样我就可以确保清理起来很容易。

如何编写鼠标在TextBox中滚动时发生的事件?

我想在鼠标滚动时更改TextBox的数量。 我有一个Scroll TextBox但是我不想用它。 有没有与此相关的事件? 我应该写一个TextBox事件吗? 如果是,我如何编写鼠标滚动时发生的textBox事件?

如何获得WinRT中的Key

我曾使用OnTextInput Event来获取WPF / Silverlight中最终用户的Key Pressed,但是在WinRT的情况下,我没有这样的事件,我对KeyDown事件感到震惊。 虽然事件返回用户按下的键,但是当事件返回VirtualKey Enum时,我无法区分大小写(即大写或小写)。 有没有可能的解决方法? 问候

我可以使用null条件运算符而不是经典事件提升模式吗?

C#6.0添加了这个新的?. 现在允许调用这样的事件的运算符: someEvent?.Invoke(sender, args); 现在,根据我的阅读,这个运算符保证someEvent被评估一次。 使用这种调用而不是经典模式是否正确: var copy = someEvent if(copy != null) copy(sender, args) 我知道某些情况下上面版本的模式需要额外的锁,但让我们假设最简单的情况。

为什么C#要求您在每次触发事件时都写一个空检查?

这对我来说似乎很奇怪 – VB.NET通过其RaiseEvent关键字隐式处理空检查。 它似乎大大增加了围绕事件的样板数量,我看不出它提供了什么好处。 我确信语言设计师有充分的理由这样做..但我很好奇,如果有人知道为什么。

如何将鼠标事件传递给我在C#/ Vista中的应用程序?

我在C#中编写了一个非常专业的应用程序,它作为整个桌面上的一个大多数透明窗口浮动。 我希望能够创建鼠标事件并将其传递给我后面的应用程序,并使它们看起来“正常”运行,以响应这些事件。 如果窗口管理器可以响应,也是更可取的。 我不是Windows大师,也不确定如何最好地实现这一目标。 从此页面: http : //bytes.com/forum/thread270002.html 似乎mouse_event会很好,除了因为我的应用程序漂浮在其他所有内容上,我猜我生成的事件永远不会进入下面的其他应用程序。 似乎替代方案是SendMessage,但这需要大量手动操作窗口,并且生成的鼠标事件不是“真实的”。 有关最佳方法的任何想法吗?

xamarin.forms中的页面生命周期事件

我刚刚开发了我的第一个xamarin.forms应用程序。 我对xamarin.forms很兴奋,但我想念几个事件。 在xamarin.forms ContentPage中是否有任何页面生命周期事件? 我知道这两个: protected override void OnAppearing() { } protected override void OnDisappearing() { } 但OnAppearing()事件只触发一次。 在Android上,当我按下开始按钮并返回到我的应用程序时,此事件不会再次触发。 是否有解决方法(如WindowsPhone页面中的OnNavigatedTo)? 谢谢。