Tag: 事件

在ASP.NET中向父级冒泡事件

我在ASP.NET中说过这个层次结构: page user control 1 user control 2 control 3 我想要做的是,当控件3(它可以是任何类型的控件,我想一般地执行此操作)让用户做一些触发回发的事情,它会将某些事件冒泡到用户控件2 ,或者甚至可能是用户控制1(虽然我也可以让UC 2手动鼓泡事件)。 同样,我想要通常这样做,以便层次结构可以改变,它仍然有效。 也许有多个控件(控件4等)或数据绑定控件。 这可能吗? 谢谢。

事件参数是通过C#中的引用还是值传递的?

一个相当简单的问题(我认为),但我似乎没有看到答案。 我知道有些值是通过值传递的(比如int和long),而其他值是通过引用传递的(比如字符串),当你将它们传递给函数时。 在我的程序中,我使用后台工作程序,以便在我们在后台执行长时间的过程时GUI不会锁定。 我需要将数据从另一个文件传递回UI线程,所以我一直在使用事件。 现在我需要将一个字符串数组列表发送回GUI线程来处理,我担心它将如何处理。 基本上,在工作线程中,我有一个循环,它将填充列表,通过事件处理程序将其发送回GUI,然后清除它,以便它可以在下一次循环中填充它并重新开始。 我担心当我这样做时,如果列表是通过引用传递的,那么在UI线程上,我会认为它会在读取中间清除,因为工作线程仍将在后台清除它。 在这种情况下,传递将是更可取的,我可以找到强制它的方法(复制到某个持有者数组或添加互斥体或类似的东西),但我认为知道事件参数是否通过传递是很好的一般的引用或值,或者它与方法是否相同,并且它会在通常传递参数时传递它们?

如何在C#中实现取消事件

我知道在C#中,有几个内置事件传递参数(“取消”),如果设置为true,将停止在引发事件的对象中进一步执行。 如何实现一个事件,其中提升对象能够跟踪EventArgs中的属性? 这是我想要做的WinForms示例: http://msdn.microsoft.com/en-us/library/system.componentmodel.canceleventargs.cancel.aspx 谢谢。

异步多播代理

我最近在一个广泛使用事件的项目上做了一些工作。 我需要做的一件事是在多播委托上异步调用多个事件处理程序。 我认为诀窍是在GetInvocationList中的每个项目上调用BeginInvoke,但看起来好像BeginInvoke不存在。 有没有办法做到这一点,或者我是否需要开始使用ThreadPool.QueueUserWorkItem并以这种方式滚动我自己的解决方案?

如何以wpf格式捕捉窗口关闭按钮(窗口右上角的红色X按钮)的事件?

如何以wpf格式捕捉窗口关闭按钮(窗口右上角的红色X按钮)的事件? 我们还有关闭事件,窗口卸载事件,但是如果他点击wpf表单的关闭按钮,我们想要显示一个弹出窗口。 请帮助。

是否可以在.NET中向外部公开类的成员对象的事件?

假设我在ASP.NET中有一个包含按钮的用户控件: public class MyUserControl : UserControl { private Button btnSave = new Button(); } 我可以通过创建指向按钮的属性将按钮的任何属性暴露给外部: public string SaveButtonText { get { return btnSave.Text; } set { btnSave.Text = value; } } 那么我可以这样设置按钮的文本: MyControl.SaveButtonText = “hello world”; 是否有类似的构造我可以用来向外部公开按钮的事件? 就像是: public event SaveButtonClick { return btnSave.OnClick; } … MyControl.SaveButtonClick += new EventHandler(…);

C#:从锁定块调用事件

我经常听说在调用事件监听器之前解锁所有锁是个好主意,以避免死锁。 但是,由于lock {}块可以由C#中的同一个线程重入,是否可以从锁定块调用事件,或者我是否需要复制相关状态数据并在锁定块外调用事件? 如果没有,请举例说明从lock {}块中调用事件是否有问题。 谢谢

如何编写触发器?

每当为我的对象赋值时,我希望我的C#代码调用一个事件。 我到底该怎么做呢? class MyClass { ManualResetEvent mre; public MyClass() { mre = new ManualResetEvent(false); Data = null; } public object Data { get; set; } void DataSet(object sender, EventArgs e) { Console.WriteLine(“object Data has been set.”); mre.Set(); } } 代表似乎不是我需要的。 也许是一个事件? 如果是这样的话我怎么写这样的事件呢? MyClass mc; void processA() { mc = new MyClass(); mc.Data = GetDataFromLongProcess(); }

如何停止文本框离开事件触发窗体关闭

使用c#winforms vs2008 我在表单上有一个文本框,其中一个方法是从textBox1_Leave事件中调用的。 该方法获取有问题的文本框的内容,并根据内容填充其他文本框。 我的问题是用户关注文本框然后单击按钮关闭表单(调用this.close)然后表单不会关闭,因为文本框离开事件被触发。 如果文本框没有关注表单关闭,则表单关闭正常。 但是,如果用户通过单击顶角的小X关闭图标来关闭表单,则它会一直关闭,而不会触发文本框离开事件。 如何复制X关闭function,以便我可以在不触发文本框离开事件的情况下关闭表单?

使用C#在Windows窗体应用程序中正确使用OnClick与MouseClick事件

我正在开发一个自定义控件,并意识到我的代码正在运行两次。 这不是一个很大的问题(它只是一个Focus方法调用)。 但是,我想了解它。 从阅读MSDN描述中点击| onclick事件 ,它声明: 当用户在对象上单击鼠标左键时触发。 所以我添加了OnClick事件和MouseClick事件来处理左右点击。 但在调试代码后,我发现OnClick处理左右键单击事件。 为什么OnClick处理这两个并且我是否需要将这两个事件保存在我的代码中由于某些原因我忽略了? protected override void OnClick(EventArgs e) { this.Focus(); base.OnClick(e); } private void CustomControl_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { rightClickMenu(e); } }