Tag: 事件

设置WPF依赖项属性而不触发事件

我需要在我的代码中的控件(Slider.Value)上设置依赖项属性,而不会触发ValueChanged事件(因为我设置了值,而不是用户)。 在WPF中处理这种情况的最佳方法是什么? 为了澄清,我想要做的是将WPF滑块连接到WinForms用户控件。 目前在我的应用程序中,我有一个ValueChanged事件处理程序,它通过方法调用将滑块值传递给WinForms控件。 WinForms控件(实际上是本机OpenGL窗口的包装器)需要能够根据它的内部计算动态更改滑块。 为此,我使用滑块的抽象(ISlider),我在我的应用程序中实例化该滑块的WPF风格,并通过WinForms用户控件上的.NET属性将句柄传递给WinForms控件。 所有这一切当前都在工作,只是当内部逻辑决定滑块需要更改时,它调用ISlider :: SetPos(),然后更改WPF滑块,然后触发滑块上的ValueChanged事件和处理程序对于该事件,提取滑块的位置并将其传递给WinForms控件,该控件首先发起事件。 ligaz和Alan Le的建议似乎都应该有效,但我不确定我是否会以最好的方式解决这个问题。

有没有办法知道用户离开asp.net页面?

我的问题有点棘手。 至少我认为。 反正也许不是。 我想知道是否有任何方法可以知道用户是否离开了该页面。 无论他点击“上一个按钮”,关闭窗口或点击我网站上的链接。 如果我的记忆仍然很好,我认为使用JavaScript是可能的。 但就我而言,我想在我的代码隐藏中做一些事情(清理对象)。

为什么不使用自定义类而不是inheritanceEventArgs类

我想知道为什么我应该使用从EventArgs类inheritance的类而不是使用在传递事件数据时为我做同样工作的自定义类?

鼠标滚轮事件未触发

我已经看过这个关于完全相同的问题的线程 ,但该解决方案对我不起作用。 基本上我想要完成的是当用户与Windows窗体上的图表控件交互时的鼠标滚轮事件。 现在我尝试了一些不同的东西。 public mainForm() { InitializeComponent(); this.chData.MouseWheel +=new MouseEventHandler(chData_MouseWheel); } 我也尝试将其添加到mainForm.Designer.cs: this.chData.TabIndex = 2; this.chData.Text = “chart2”; this.chData.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.chData_MouseWheel); this.chData.MouseClick += new System.Windows.Forms.MouseEventHandler(this.chData_MouseClick); this.chData.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.chData_MouseDoubleClick); this.chData.MouseMove += new System.Windows.Forms.MouseEventHandler(this.chData_MouseMove); (我已将整个区块包括在内以供演示)。 我也有如下定义的function: private void chData_MouseWheel(object sender, MouseEventArgs e) { MessageBox.Show(“FJDKS”); } 不幸的是我无法解决这个问题? 谁能告诉我哪里出错了? 提前致谢!

为什么在调用之前为事件分配处理程序?

基本上,我已经看到这经常使用: public event MyEventHandler MyEvent; private void SomeFunction() { MyEventHandler handler = this.MyEvent; if (handler != null) { handler(this, new MyEventArgs()); } } 什么时候可以像这样容易地做到: public event MyEventHandler MyEvent; private void SomeFunction() { if (MyEvent != null) { MyEvent(this, new MyEventArgs()); } } 那么,我错过了什么吗? 是否有人将事件分配给处理程序,然后引发处理程序而不是事件本身? 这只是“最佳实践”吗?

是否有必要取消订阅活动?

不取消订阅c#中的事件可能有多严重? 是强制性还是可取的行动?

在C#中编写全局自定义事件

我在这个窗体上有一个winform winform1和2个用户控件control1和control2 现在我想定义一个自定义事件 ,它在control1中被引发/触发并在control2中被接收。 该事件应该是全局的,而不是在control1中直接定义。 control2不应该知道control1的存在。 该事件也应由其他控件提出。 C#代码怎么样? 我需要像发布者类这样的东西吗?

单次活动订阅

我相信这是不可能的,但我会问。 为了对事件进行单次订阅,我经常发现自己使用这种(自我发明的)模式: EventHandler handler=null; handler = (sender, e) => { SomeEvent -= handler; Initialize(); }; SomeEvent += handler; 这是相当多的锅炉板,它也使得Resharper对改装后的瓶盖抱怨。 有没有办法将此模式转换为扩展方法或类似方法? 这样做的更好方法是什么? 理想情况下,我喜欢这样的东西: SomeEvent.OneShot(handler)

了解C#事件使用发送方对象

我是C#作为一种语言(来自C ++背景)的新手,我目前正在编写一个使用事件驱动API的应用程序。 这主要包括注册事件/响应处理程序和启动事件监视器,然后处理这些异步事件/响应。 我理解有点麻烦的是发送者对象的使用。 我想要使​​用的是在发出请求(或设置监视器)时将句柄传递给具有各种结构和数据的类对象。 然后在收到的响应/正在引发的事件中,我可以获取发送者对象,将其转换回预期的类类型并访问成员,进行进一步的更改等等,以便将其视为仍然是指向原始数据的指针(我希望它会是什么?)。 所以我的问题是,当我在我的请求中传递一个类对象时,它是否实际上是一个引用,或者它将被复制到值的某个位置,因为它实际上只是一个通用对象,我最终会得到一个活动中我的class级对象的空副本? 或者第三个选项,我可能完全在错误的轨道上,应该忘记整个事情? 🙂 问题是我的大脑仍然在指针模式下工作我想…

取消ListBox SelectedIndexChange事件

是否可以取消winforms应用程序上列表框的SelectedIndexChange事件? 这似乎是合乎逻辑的事情,我必须忽略一些简单的function。 基本上,我一直在弹出一个消息框,询问用户是否真的想要移动到另一个项目,因为这将改变UI,我不希望他们的更改丢失。 如果用户没有保存他们正在处理的内容,我希望能够取消该活动。 有更好的方法吗?