Tag: event handling

如何在C#中使用事件驱动的SAX(Simple API FOR XML)解析器,还是使用System.XML命名空间更好?

在C ++中,我们可以将msxml DLL导入到我们的应用程序中,然后在我们的应用程序类中实现接口ISAXContentHandler的方法。 稍后创建一个ISAXReader对象并使用此类的实例调用contentHandler,其中我们已为eventhandler接口提供了实现。 同样,我想在C#中实现同样的目标。 有没有办法在C#中做到这一点? 我的意思是有没有办法在C#中进行基于事件的SAX解析。 我认为还有一种方法可以帮助我实现解析XML文档并将XML信息提供给我的应用程序。 我点击了链接“ http://www.codeguru.com/csharp/csharp/cs_data/xml/article.php/c4221 ” 这里使用DOM并使用System.XML命名空间。 有谁可以帮助我这方面,—- 在C#中实现事件驱动的XML解析的方法是什么 , 或者我应该使用System.XML命名空间(DOM)。 如果存在SAX事件驱动方式,请告诉我如何在C#中执行此操作

NotifyIcon事件未触发

我是新来的,开始时有一个非常神秘的问题。 我是英国的软件开发人员,拥有超过15年的经验,但只在.Net开发了18个月。 我的NotifyIcon鼠标事件没有被触发! 我正在使用C#编写一个以NotifyIcon(’主app图标’)开头的应用程序,并在鼠标右键单击时显示ContextMenu。 这很好用:ContextMenu,表单启动和鼠标单击事件触发。 一小部分背景:应用程序应该感知usb’设备’(它确实)的插入,询问它并创建另一个NotifyIcon(’设备图标’)以允许用户与该设备交互。 我之前段落中提到的“主应用程序图标”允许用户与数据库交互并配置软件。 为了封装这些设备交互function,我构建了一个“设备类”,其中包含设备NotifyIcon,ContextMenu,表单,鼠标单击事件等,允许与设备进行交互。 问题当我从ManagementEventWatcher EventArrived事件中实例化我的“设备类”时,问题就出现了。 如果我在我的程序Main中实例化’device class’,那么当我点击notifyicon时,事件会正确触发。 那么,拜托,有人能帮帮我吗? 干杯,提前 马修

捕获对TFS 2012事件订阅中的工作项所做的所有更改

我所追求的是一种方法来捕获对存储在我们的新TFS 2012服务器上的工作项中的某些字段所做的所有更改,以便我可以执行其他逻辑(通过Help Desk API处理更新),其结果基于开发人员改变了什么。 我已经苦苦挣扎了一个多星期,谷歌搜索和阅读参考资料,但似乎没有任何东西适用于TFS 2012。 我尝试过以下设置: 在TFS 2010中开发和调试服务器端事件处理程序(GeeksWithBlogs) 和其他许多“值得信赖”的消息来源,没有运气。 我对一般建议不感兴趣,但对这个问题有一个CONCRETE解决方案。 这可能是不止一种方法,但我会满足于一个有效的方法。 我已将这部分应用程序开发延迟到最后期限,因为在第一次阅读它时,这似乎是一件简单的事情。 我想我可以使用Microsoft.TeamFoundation.WorkItemTracking.Client库来完成这项工作,但事实certificate,没有预定义的事件要从客户端代码订阅。 (或者我还没有找到它)。 所以我想我需要创建一个自定义事件处理程序并将其安装到TFS上的Plugins目录中,如上面提到的链接中所述,但是当我这样做时,我在调试TFS时遇到exception并且没有任何反应: First-chance exception at 0x000007FEFD90BCCD (KernelBase.dll) in w3wp.exe 所以现在我已经超过我的截止日期,在寻求一个可行的解决方案之前寻找一个可行的解决方案,然后采用一些手动方式定期循环并检查WorkItems,就像我必须处理应用程序的帮助台一侧的票据一样。 如果我对事件和代表了解得更多,我想我能够为此创建一个很好的解决方案,但我没有,而且我现在正在学习C#,所以……

跟踪栏上的触发事件ValueChanged,但不在代码中

我希望能够在代码中修改跟踪栏的value属性而不触发我的事件处理程序。 我希望仅在用户通过拖动滑块或使用键盘移动控件来更改控件时触发事件。 实现这一目标的最简单方法是什么? 我有6个轨道栏,我想根据更改的轨迹栏更改其中3个的值。 问题是更改这些跟踪栏的值将触发其ValueChanged事件。

在main()中为SerialPort添加事件处理程序

我尝试为接收的数据事件订阅一个事件处理程序。 好像我无法指定事件处理函数名称。 我不明白为什么 myComPort.DataReceived + = new SerialDataReceivedEventHandler(comPort_DataReceived); 给我错误信息。 这是问题所在,希望有人能回答。 一只忙碌的猫http://img827.imageshack.us/img827/5904/20120125102247.png 一只忙碌的猫http://img444.imageshack.us/img444/3855/20120125102202.png namespace serialport { public class Program { internal List portBuffer = new List(1024); static void Main() { //1. find available COM port string[] nameArray = null; string myComPortName = null; nameArray = SerialPort.GetPortNames(); if (nameArray.GetUpperBound(0) >= 0) { myComPortName = nameArray[0]; } else […]

调用EventHandler

我有以下EventHandler: private EventHandler _myEventHandler; public event EventHandler MyEvent { add { _myEventHandler += value; } remove { _myEventHandler -= value; } } 有人可以解释以下片段之间的区别吗? Snippet EventHandler(A): //Snippet A: if (_myEventHandler != null) { _myEventHandler(new MyEventArgs()); } Snippet BeginInvoke(B): //Snippet B: if (_myEventHandler != null) { _myEventHandler.BeginInvoke(new MyEventArgs(), ar => { var del = (EventHandler)ar.AsyncState; del.EndInvoke(ar); }, […]

检查RoutedEvent是否有任何处理程序

我有一个自定义Button类,它在点击时总是执行相同的操作(打开一个特定的窗口)。 我正在添加一个可以在按钮的XAML中分配的Click事件,就像常规按钮一样。 单击它时,我想执行Click事件处理程序(如果已分配),否则我想执行默认操作。 问题是,显然没有办法检查是否有任何处理程序添加到事件中。 我认为对事件的空检查会这样做: if (Click == null) { DefaultClickAction(); } else { RaiseEvent(new RoutedEventArgs(ClickEvent, this));; } ……但那不会编译。 编译器告诉我除了+ =或 – =之外我不能对定义类之外的事件执行任何操作,尽管我正在尝试执行此操作检查INSIDE定义类。 我自己实现了正确的行为,但是它很丑陋且冗长,我无法相信没有内置的方法来做到这一点。 我肯定错过了什么。 这是相关的代码: public class MyButtonClass : Control { //… public static readonly RoutedEvent ClickEvent = EventManager.RegisterRoutedEvent(“Click”, RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MyButtonClass)); public event RoutedEventHandler Click { add { ClickHandlerCount++; AddHandler(ClickEvent, value); } remove […]