Tag: events

在C#中实现消息/订阅机制

我正在使用MVVM模式对WPF应用程序进行原型设计。 在回答这个问题后,我设置了一个ModelProviderService ,它将模型公开为属性。 服务的消费者是视图模型,即他们从服务中提取模型而不是自己实例化。 class ModelProviderService { private LoginModel loginModel; public LoginModel LoginModel { get { return loginModel; } set { loginModel = value; } } private ProjectsModel projectsModel; public ProjectsModel ProjectsModel { get { return projectsModel; } set { projectsModel = value; } } public ModelProviderService() { loginModel = new LoginModel(); projectsModel = new […]

寻找域事件的示例

有没有人知道在哪里可以找到域事件实现的示例代码,如Udi Dahan在Domain Events – Salvation中所描述的那样?

将.NET事件暴露给COM?

我一直在尝试向VBA客户端公开和触发事件。 到目前为止,在VBA客户端,事件已暴露,我看到方法事件处理方法添加到我的模块类,但VBA事件处理方法不会触发。 出于某种原因,调试事件时为null。 同步修改我的代码也没有帮助。 为了记录,我已经检查了其他SO问题,但他们没有帮助。 任何好的答案将不胜感激。 [ComVisible(true)] [Guid(“56C41646-10CB-4188-979D-23F70E0FFDF5”)] [ClassInterface(ClassInterfaceType.None)] [ComSourceInterfaces(typeof(IWebEvents))] [ProgId(“MyAssembly.MyClass”)] public class MyClass : ServicedComponent, IMyClass { public string _address { get; private set; } public string _filename { get; private set; } [DispId(4)] public void DownloadFileAsync(string address, string filename) { _address = address; _filename = filename; System.Net.WebClient wc = new System.Net.WebClient(); Task.Factory.StartNew(() => […]

使用WMI处理启动事件 – 未检测到所有进程启动

我在Windows服务(运行为NT_AUTHORITY\SYSTEM )中使用以下C#代码来创建用于接收进程创建事件的事件处理程序(使用WMI和WQL): string queryString = “SELECT * FROM Win32_ProcessStartTrace”; ManagementEventWatcher watcher = new ManagementEventWatcher(new WqlEventQuery(queryString)); watcher.EventArrived += new EventArrivedEventHandler(ProcessStartEvent); watcher.Start(); 在ProcessStartEvent : int processId = int.Parse(e.NewEvent.Properties[“ProcessId”].Value.ToString()); Process proc = Process.GetProcessById(processId); Out(“Received process: ” + proc.ProcessName); 我遇到的问题是(出于一些奇怪的原因) 并非每个进程启动都被程序捕获并报告。 如果我同时启动大约6个进程,则可能不会在输出中显示。 我曾尝试使用WMI对捕获进程创建事件进行一些研究,但是可用的信息有限。 我已经看到也可以使用类似的东西捕获进程开始: SELECT TargetInstance FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA ‘Win32_Process’ ( 如此Stack Overflow答案中所示 ) 使用__InstanceCreationEvent和Win32_ProcessStartTrace之间是否有任何重大差异? […]

创建一个没有标准(Obj sender,EventArgs args)签名的事件处理程序委托有多么错误?

我理解使用标准MS事件处理程序委托签名的好处,因为它允许您轻松扩展通过事件传递的信息,而不会破坏任何基于旧委托签名的旧关系。 我想知道在实践中人们经常遵循这条规则吗? 说我有一个像这样的简单事件 public event NameChangedHandler NameChanged; public delegate void NameChangedHandler(Object sender, string oldName, string newName); 这是一个简单的事件,我几乎肯定我从NameChanged事件中需要知道的唯一参数是名称已更改的对象,旧名称和新名称。 那么创建一个单独的NameChangedEventArgs类是否值得,或者像这样的简单事件是否可以直接通过委托参数返回参数?

永远不会执行加载项事件

我使用“Visual Studio的加载项”向导来创建一个新的Addin项目,现在,我正在尝试添加一些事件处理程序: public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; _applicationObject.Events.BuildEvents.OnBuildBegin += BuildEvents_OnBuildBegin; _applicationObject.Events.BuildEvents.OnBuildDone += BuildEvents_OnBuildDone; _applicationObject.Events.SelectionEvents.OnChange += SelectionEvents_OnChange; _applicationObject.Events.DocumentEvents.DocumentOpened += DocumentEvents_DocumentOpened; _applicationObject.Events.DocumentEvents.DocumentSaved += DocumentEvents_DocumentSaved; } 但无论我做什么,我的处理程序都不会被执行! 我瞎了吗? 我是否必须做任何其他事情来注册这些处理程序或为什么它不起作用?

wpf c#按钮等待按下按钮

好吧,我是编码时的傻瓜 所以我要做的就是按钮谁会等待 用户单击其他多个按钮之一继续 void Mainbutton() { //the program run throw so method //Wait for the user to choose one button (I made a numeric pad with buttons) //Then use this information to work } 我知道我的英语不是很好,非常感谢

自定义RichTextBox事件句柄

我是Custom Controls的新手,我正在寻求帮助。 我想知道是否可以在我的自定义类中的事件(例如“Key_Press”)上添加validation,而不是通过表单代码中的事件添加validation。 我的目标是阻止使用Return&Enter键作为控件。 我创建了一个自定义的RichTextBox,代码如下: – public class CustomRTB : RichTextBox { protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if ((keyData == (Keys.Control | Keys.V))) { IDataObject iData = Clipboard.GetDataObject(); if (iData.GetDataPresent(DataFormats.Text)) { string contents = Clipboard.GetText().Replace(“\r\n”, ” “); Clipboard.SetData(DataFormats.Text, contents); this.Paste(); } return true; } else { return base.ProcessCmdKey(ref msg, keyData); } […]

ASP.NET Listview->单击Row->执行操作

我需要一些帮助以下内容。 我有一个列表视图,我填写代码隐藏: Linq-> SQL: ListView1.DataSource = from x in database.ITEMS select x; ListView1.DataBind(); 项目内容: ID 名称 数量 我只显示字段的名称: <asp:Label ID="nameLabel" runat="server" Text='’ /> 假设我在数据库中有25行,我用25行填充列表视图。 接下来是我需要帮助的。 用户需要单击25个名称中的一个(完整行)并重定向到显示该行内容的页面。 所以,假设有人点击“汽车”,他将被重定向,他会看到:你选择了汽车,汽车的ID为19,数量为6。 我已经浏览过互联网,但我无法找到我能理解的解决方案。 在列表视图和其他数据显示方法方面,我有点像菜鸟。 我的2个问题: 单击一行(而不是该行中的按钮或链接)时如何启动事件? 当我单击一行并开始一个事件时,如何检查哪一个被点击了? 我希望有人能够以一种用户友好的noob方式向我解释这是如何完成的,或者将我重定向到讨论我的问题的教程,以及用户友好的方式。 提前致谢。

检测何时创建新虚拟驱动器

我如何知道计算机上安装了哪些trueCrypt卷? 注意我已经知道可以挂载哪些文件。 换句话说,唯一可以安装的卷是: C:\Vol1.tc , C:\Vol2.tc和C:\Vol3.tc 如何知道何时卸下卷? 我设法通过使用.net类FileSystemWatcher来做到这一点。 每次卸载卷时我都会注意到事件FileSystemWatcher.Changed会触发。 如何知道卷的安装时间? 这是我遇到麻烦的地方! 我是否经常查询驱动器并查看驱动器是否存在。 这听起来是个坏主意,因为如果有人插入一个USB并且Windows将驱动器号分配给它,我将会出错。 如何知道何时创建新的虚拟驱动器? 为什么我需要这个? 我需要创建一个应用程序,用户可以从手机中查看安装了哪些trueCrypt卷。 我唯一想做的就是找出装入卷的时间……