Tag: 事件处理

事件处理程序位于与MainWindow不同的类中

所以我按照以下网站上的指南来限制文本框可以接受的字符。 How to limit or prevent characters in a TextBox in C#? Or How to create a NumberTextBox or DigitBox object? 我的问题是我无法弄清楚如何在辅助类中创建事件处理程序触发器。 基本上我如何告诉VS在该类而不是MainWindow中查找事件处理程序代码? 我试过搜索,但显然不知道使用的正确术语。 我使用的xaml参考是 xmlns:DigitBox=”clr-namespace:System.Windows.Controls;assembly=PresentationFramework” 有任何想法吗?

如何连接COM事件调度程序?

VBIDE API公开了奇妙的神秘_dispVBComponentsEvents接口(以及其他),它看起来像我可以用来捕获VBE中的各种有趣事件。 所以我在一个类中实现了接口,该类打算捕获事件并为我的应用程序的其余部分引发“正常”.net事件,如下所示: public class VBComponentsEventDispatcher : _dispVBComponentsEvents { public event EventHandler<DispatcherEventArgs> ComponentAdded; public void ItemAdded(VBComponent VBComponent) { OnDispatch(ComponentAdded, VBComponent); } public event EventHandler<DispatcherEventArgs> ComponentRemoved; public void ItemRemoved(VBComponent VBComponent) { OnDispatch(ComponentRemoved, VBComponent); } public event EventHandler<DispatcherRenamedEventArgs> ComponentRenamed; public void ItemRenamed(VBComponent VBComponent, string OldName) { var handler = ComponentRenamed; if (handler != null) { handler.Invoke(this, new […]

异步方法上的事件订阅

我想以两种方式启动LoadDataAsync 。 首先是使用ManualLoad()和经典方法ManualLoad() 。 但我不能让它发挥作用。 我无法订阅任务返回。 使用void它可以正常工作,但是无法在ManualLoad()方法中await void 。 两种方式如何运作? public delegate void ProductDelegate(long? iShopProductId); public event ProductDelegate ProductSelectionChanged = delegate { }; public async Task LoadDataAsync(long? iProductId) { //await action…. } //first way public void FormLoad() { this.ProductSelectionChanged += LoadDataAsync //UNDERLINED ERROR; } //second way public async Task ManualLoad() { await LoadDataAsync(2); }

Windows窗体中通用事件处理程序的解决方法

很久以前,我注意到Visual Studio的Windows窗体编辑器不支持包含generics类型参数的事件。 例如,像这样的事件 public event EventHandler<ListEventArgs> MyStrangeEvent { add { … } remove { … } } 哪里 public class ListEventArgs : EventArgs { List args; } 甚至没有出现在Visual Studio的属性管理器的事件列表中。 现在,这是一个有点人为的例子,可以通过重写类及其事件轻松修改以在Visual Studio中工作。 但是,我目前正在开发一个项目,由于兼容性原因我无法更改某些类。 我唯一能做的就是改变用户控件的事件。 此控件的事件当前如下所示: public event EventHandler<Plane.DrawingErrorEventArgs> DrawingError { add { _Plane.DrawingError += value; } remove { _Plane.DrawingError -= value; } } 请注意,无法更改基础Plane类(由_Plane实例表示,它是受保护的字段)。 它的DrawingError事件及其EventArgs类型在Plane类中声明如下: public […]

是否可以在lambda表达式中定位EventHandler?

举一个简单的例子,如果我有某种按钮UI类,我是否可以编写一个函数来获取指向其Click事件处理程序的表达式: SomeMethod(button => button.Click); 我正在尝试消除当前用于系统的一些魔术字符串以使事件等待。 有问题的代码来自Frank Krueger撰写的博客文章 (如果你想要一些背景,那么值得一读)。 public static Task GetEventAsync(this object eventSource, string eventName) where TEventArgs : EventArgs { //… Type type = eventSource.GetType(); EventInfo ev = type.GetEvent(eventName); //… } 虽然内部的细节可能并不重要,但完整的方法允许您使用Event触发作为Task的完成源,使得使用await更容易管理。 对于某个引发事件的类,您可以通过简单的调用将该事件绑定到Task 。 Task eventTask = someEventCausingObject.GetEventAsync(“SomeEventHandler”); // traditionally used as someEventCausingObject.SomeEventHandler += …; await eventTask; // Proceed back here when SomeEventHandler event […]

委派活动

这是一个C#问题。 我有一个用户控件A. A包含另一个用户控件B. B有一个名为BEvent的事件。 我想在A中公开这个事件,所以任何使用控件A的人都可以订阅BEvent。 如何编写代码来实现此设计? 谢谢。

在CQRS中注册EventHandler

我正在尝试使用CQRS和DDD模拟购买域,我知道我在域中引发事件但我不知道在我使用命令时在哪里注册它们。 应该在命令处理程序中注册事件处理程序吗? 或者我误解了一些东西。 这是我的过程,你可以帮助建模吗? 最终确定采购订单命令,比命令处理程序最终确定订单(从存储库获取订单,更改其状态并保存回db),订单最终事件发生在域模型中,而不是事件处理程序使用id及其行项找到此订单,查找它供应商联系信息(可能是电子邮件甚至是外部服务)并通知他新的采购订单。 我的命令和命令处理程序在应用程序层中(事件处理程序也应该在这里?)。 域层中的域模型,事件和IRepositories。 基础架构层中的存储库实现。 域模型(跳过大多数属性): public class PurchaseOrder { public PurchaseOrder(int purchaseOrderID, int supplierID, bool isOrderFinalized) { PurchaseOrderID = purchaseOrderID; SupplierID = supplierID; IsOrderFinalized = isOrderFinalized; } public int PurchaseOrderID { get; private set; } public int SupplierID { get; private set; } public bool IsOrderFinalized { get; private set; } […]

选择器的完成按钮的Event_Handler

我有一个带有项目列表的xamarin选择器,我想在iPhone上按下“完成”按钮并在android上按下“Oke”按钮时删除选择器。 我有删除选择器的代码。 但我不知道可能由哪个event_Handler。 码: Picker picker = new Picker { Title = “What’s in the slot?”, VerticalOptions = LayoutOptions.CenterAndExpand //HorizontalOptions = LayoutOptions.Center }; private void Displaypickerview(int row, int column) { if (status == “filling board”) { foreach (string text in pickerText) { picker.Items.Add(text); } foreach (string ore in oreLevels) { picker.Items.Add(ore); } picker.SelectedIndexChanged += (sender, […]

C ++到C#事件处理

所以我有了我的C# WinForm应用程序,从它我称之为C ++ CLI MFC dll库。 但是我的C ++库上有一些事件 ,即使这个事件发生在这个库的本机(非CLI)部分。 我需要从我的C#应用​​程序调用一些代码,并在此事件上获得一些数据。 所以当从客户端调用这个本机函数时: bool __stdcall ClassName::WorkQuery() { …… switch(pp->code) { case READCOMPLEX: ………. 我需要从C#带来数据, 所以我需要以某种方式将此注册为事件。

WPF:当IsEnabled = false时获取MouseEnter事件

我想在禁用控件时处理自定义控件的MouseEnter事件。 有办法处理吗?