Tag: 事件

CheckedChanged事件中的问题

我有一个复选框,我订阅了CheckedChanged事件。 处理程序在那里执行一些操作。 我以编程方式检查并取消选中该复选框(例如: chkbx_Name.Checked = true ),并且会触发CheckedChanged事件。 我希望只有在手动检查或取消选中时才会触发此事件。 当我以编程方式检查/取消选中时,有没有办法避免触发此事件?

C#:收集WeakReference之前的通知?

在C#/ .NET中,有没有办法在弱引用指向的对象被破坏之前获得通知? 基本上,我想允许收集一个对象,但在对象被销毁之前做一些事情,而不修改代码来添加析构函数(因为我不知道究竟什么类型的对象将被我的代码起诉)。 谢谢,罗伯特

我是否必须取消订阅本地变量的匿名事件处理程序?

如果我有一个看起来像这样的代码: public void Foo() { Bar bar = new Bar(); bar.SomeEvent += (sender, e) => { //Do something here }; bar.DoSomeOtherThingAndRaiseSomeEvent(); } 当方法用完范围时会收集bar ,还是我必须手动取消订阅事件以防止由于引用SomeEvent而导致内存泄漏?

我可以颠倒多播委托事件的顺序吗?

在.NET中订阅事件时,订阅将添加到多播委托。 触发事件时,将按订阅顺序调用委托。 我想以某种方式覆盖订阅,以便订阅实际上以相反的顺序触发。 可以这样做,怎么做? 我认为这样的事情可能就是我所需要的: public event MyReversedEvent { add { /* magic! */ } remove { /* magic! */ } }

如何在winforms应用程序中优雅地处理hibernate/睡眠模式?

我正在使用C#在.net中编写一个Windows窗体应用程序。 我遇到一个问题,如果我的程序在计算机进入睡眠和/或hibernate状态时运行(我不确定此时哪一个,或两者都导致问题),当机器再次唤醒时该程序只是挂起。 退出它的唯一方法是从任务管理器中终止进程。 出于显而易见的原因,这不是我希望程序运行的方式。 即使我只是在程序进入这些状态时关闭程序,那也没关系,但我不太清楚如何做到这一点,或者是否有更优雅的方式来处理这个问题。

如何识别生成Click事件的控件?

在以下代码中,如何识别引发Click事件的控件? void x_Click(object sender, EventArgs e) { //How do I identify the sender? } private void fill() { for(blah) { Button x = new Button(); x.Click += new EventHandler(x_Click); this.controls.Add(x) } }

当TextBox TextChanged事件被触发时?

我的问题是: 我们知道ViewState不负责存储和恢复TextBox,CheckBox等控件的值。 这是通过LoadPostData()方法来实现IPostBackDataHandler接口的控件。 并且我们也知道在Load阶段之后,会发生RaisePostBackEvent阶段并引发相应的事件,如Button Click或如果TextBox中的Text更改,则会触发其TextChanged事件。 那么,如果ViewState不对此负责,以及哪种机制实际触发TextBox TextChanged事件,系统如何跟踪文本是否已更改? 到目前为止我真的很困惑。 提前致谢。

C#阻塞等待响应

我多次偶然发现这个问题,主要用黑客来解决它,但是希望看到一个“推荐者”的方式去做。 我正在编写一个通信协议,与我的端点询问“查询”的方式非常相似,他们收到“回复”。 现在……我想实现一个名为SendCommand的函数,该函数将发出一个查询,并等待对该问题的回复,并将其返回。 所以我可以做点什么 int outside_temp = SendCommand(What is the temperature outside).ToInt(); 这样做的问题是消息是异步发送和接收的,并且事件通知我新消息已经到达,以及它是什么。 我需要阻止该线程,直到对所提到的查询的回复到达,提取其数据内容,并将其返回给调用者。 我的问题是阻止线程。 阻止线程不是问题,我们正在谈论一个multithreading应用程序,因此UI不会冻结等等,但问题是实现这一目的的正确方法是什么? 我正在考虑在SendCommand函数中初始化信号量,等待它,并在消息接收事件处理程序中释放信号量(在检查它是正确的消息后)? 此致,axos88

当两个线程都不是WinForm时,在两个线程之间引发事件

我找不到ac#example,它显示了如何在以下条件中引发跨线程事件: 假设我有1个事件和3个线程: 事件DoStuff 线程A – WinForm 线程B – 从线程A产生的线程进行一些处理。 具有订阅DoStuff的Function Foo() 线程C – 从线程B产生的线程进行一些子处理和引发事件DoStuff 现在,我如何确保在线程C中引发的事件是在线程B内而不是C或A中处理的。 我运行的所有示例都提示向Form / Control.Invloke,或者那种类型的东西,我真的想要拥有实际订阅事件的任何线程在它的repsective线程内执行,而不仅仅是主表单线程。

C#中的事件 – 定义和示例

什么是C#中的事件? 你能给我一个清晰的实时例子和程序吗?