Tag: 事件处理

动态(以编程方式)添加复选框和已检查的已更改事件

我以编程方式添加一些复选框和事件处理程序时遇到了一些问题。 复选框都显示正常,但点击时它们不会执行任何操作。 有谁知道我做错了什么? 我的代码: foreach (Statement i in theseStatements) { box = new CheckBox(); box.Text = i.StatementText; box.AutoPostBack = true; box.CheckedChanged += new EventHandler(this.CheckedChange); PlaceHolder.Controls.Add(box); } protected void CheckedChange(object sender, EventArgs e) { CheckBox x = (CheckBox)sender; Instructions.Text = “change”; WorkPlaceHazardsBox.Text += x.Text; }

Winforms单击“事件未触发”

我有一个winforms应用程序。 我在这个应用程序中有几个表单(主表单和几个专门的表单),并且在一个表单上,单击事件不会触发我的任何按钮。 并不是处理程序中的代码被破坏了。 这可以通过单击按钮时永远不会到达处理程序第一行的断点来确定。 其他事件正在发挥作用(我正在使用此表单上的CheckedChanged事件并且它们正在运行)。 我的团队成员已经审核过,也无法发现问题。 这是我的代码的简化视图: Designer生成代码 partial class MyForm { private System.Windows.Forms.Button addButton; private void InitalizeComponent() { this.addButton = new System.Windows.Forms.Button(); this.addButton.Name = “addButton”; // Drawing statements here this.addButton.Click += new System.EventHandler(this.addButton_Click); this.Controls.Add(this.addButton); } } 我的代码 public partial class MyForm : Form { public MyForm() { InitializeComponent(); } private void addButton_Click(object sender, EventArgs […]

如何处理ComboBox的SelectedIndexChanged事件?

我有DataGridView ,它包含两个ComboBox列。 第二个ComboBox将根据第一个ComboBox的选定值填充数据。 如何处理第一个ComboBox的SelectedIndexChanged事件。

关于事件的价值/参考类型的问题

在MSDN上,我发现以下内容: public event EventHandler SampleEvent; public void DemoEvent(string val) { // Copy to a temporary variable to be thread-safe. EventHandler temp = SampleEvent; 是参考吗? 如果是这样,我不理解其含义,因为当SampleEvent变为null时,temp也是如此 if (temp != null) temp(this, new MyEventArgs(val)); }

为OnScroll创建事件处理程序以进行Web浏览器控制

有没有人成功地在Web浏览器组件中捕获鼠标滚动事件? 我有两个网页浏览器控件我想同时滚动。 但是没有针对Web浏览器的滚动事件。 我想在下面创建一个类似的事件? 有没有人做过或看过这个? private void webCompareSQL_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { Document.Window.AttachEventHandler(“OnScroll”); } 在这里,我将调用我的事件并继续执行代码。 private void windowEvents_OnScroll() { int nPos = GetScrollPos(webCompareSQL.Handle, (int)ScrollBarType.SbVert); nPos <<= 16; uint wParam = (uint)ScrollBarCommands.SB_THUMBPOSITION | (uint)nPos; SendMessage(WebPrevSQL.Handle, (int)Message.WM_VSCROLL, new IntPtr(wParam), new IntPtr(0)); } 我找到了这段代码,但不知道如何使用它。 这是一个事件。 webCompareSQL.Document.Window.Scroll

C#:线程安全事件

下面的实现是否是线程安全的? 如果不是我错过了什么? 我应该在某处使用volatile关键字吗? 或OnProcessingCompleted方法中的某个锁? 如果是这样,在哪里? public abstract class ProcessBase : IProcess { private readonly object completedEventLock = new object(); private event EventHandler ProcessCompleted; event EventHandler IProcess.ProcessCompleted { add { lock (completedEventLock) ProcessCompleted += value; } remove { lock (completedEventLock) ProcessCompleted -= value; } } protected void OnProcessingCompleted(ProcessCompletedEventArgs e) { EventHandler handler = ProcessCompleted; if (handler […]

如何以正确的方式使用委托/了解委托

使用 – C#(。Net Framework 4.5,Visual Studio 2012) 我试着理解像代表这样的主题,目前我有几点,必须为我澄清。 我在互联网上发现了很多不同的信息来描述如何使用它,但是对我来说理解这个主题有点复杂。 据我所知,我必须做一些使用委托的事情: 创建一些实体用于它(需要创建一些委托) 声明委托类型 创建一些我调用委托的方法 在主类调用委托与使用实体的必需方法(从第一点) 所有描述如下所示 问题 – 我是否正确理解了所有或者我错了 – 请澄清一下。 另外一个关于DELEGATE的问题 – 在哪里更好地将代码与DELEGATE放在一起 – 在Console C#应用程序中我可以在任何使用过的命名空间的地方创建它 – 我可以在下面看到。 但也许有一些建议/要求不仅为控制台应用程序而且为WinForms,WPF等放置委托。 这个主题对我来说是新的,我花了一天时间来理解它,但仍然有点(或更多)与此混淆,最后创建这篇文章以获得更好和清晰的理解。 认为这是非常强大的东西。 编辑 namespace SimpleCSharpApp { delegate void myDelagate (); }

如何在C#中引用事件

我有以下类,它有一个名为LengthChanged公共事件: class Dimension { public int Length { get { return this.length; } set { if (this.length != value) { this.length = value; this.OnLengthChanged (); } } protected virtual void OnLengthChanged() { var handler = this.LengthChanged; if (handler != null) { handler (this, System.EventArgs.Empty); } } public event System.EventHandler LengthChanged; private int length; } 我希望能够在一个名为Observer的方法中注册/取消注册此事件的处理程序,该方法对Dimension类一无所知。 […]

我应该实例化一个新的代表吗?

我刚刚意识到我可以通过两种方式添加事件处理程序: 考虑像这样的事件处理程序: private void MyEventHandler() {} 方法1:实例化新委托 MyObject.MyEvent += new Action(MyEventHandler); 方法2:添加事件处理程序而不实例化新委托 MyObject.MyEvent += MyEventHandler; 应该考虑这两种实现之间有什么区别吗?

C#动态添加事件处理程序

嗨我有一个简单的问题。 这是我的代码: XmlDocument xmlData = new XmlDocument(); xmlData.Load(“xml.xml”); /* Load announcements first */ XmlNodeList announcements = xmlData.GetElementsByTagName(“announcement”); for (int i = 0; i < announcements.Count; i++) { ToolStripMenuItem item = new ToolStripMenuItem(); item.Name = announcements[i].FirstChild.InnerText; item.Text = announcements[i].FirstChild.InnerText; /* HERE IS WERE I NEED HELP */ item.Click += new EventHandler(); this.freedomMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { item }); […]