Tag: events

避免在C#winform的键盘快捷方式上发出警报

我正在使用Visual Studio 2012在C#中创建Winform应用程序的键盘快捷方式。我的快捷方式非常完美。 但它会发出恼人的哔哔声。 我添加了e.Handled = true; 和e.SuppressKeyPress = true; 根据许multithreading。 但它不起作用,我的winform卡住了。 我怎么能避免这个? private void textBoxSearch_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Down) { do stuff } else if (e.KeyCode == Keys.Enter) { //do stuff } e.Handled = true; e.SuppressKeyPress = true; } 我也需要一个解决方案。 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if […]

如何订阅已提升的活动并一起打印?

我一直在研究一个有3个类的程序,其中2个类具有以不同间隔重复的定时器,并且一旦定时器的一个“循环”完成,它就会引发一个带有字符串作为返回的事件。 第3类从其他两个计时器类订阅事件并将它们打印到屏幕。 它很棒! 但我的问题是它是单独打印它们。 让我们说第一个计时器类运行,然后每隔2分钟发出一次“hello”,另一个类“dog”每秒发出一次,每次发生一个事件时它都会将引发的事件打印到控制台。 我希望它反而每秒打印“hellodog”并将第一个计时器(你好)的值存储在一个私有字段或其他东西,所以它仍然打印到屏幕,即使计时器(较慢的2分钟计时器)还没有被解雇。 当2分钟计时器触发时,它会将值更新为新的值,并将新值打印到屏幕,直到它再次触发。 如果令人困惑,我会很乐意澄清。 有点难以解释。 namespace Final { public class Output { public static void Main() { var timer1 = new FormWithTimer(); var timer2 = new FormWithTimer2(); timer1.NewStringAvailable += new EventHandler(timer1_NewStringAvailable); timer2.NewStringAvailable += new EventHandler(timer2_NewStringAvailable); Console.ReadLine(); } static void timer1_NewStringAvailable(object sender, BaseClassThatCanRaiseEvent.StringEventArgs e) { var theString = e.Value; //To something with […]

UWP NetworkConnectionChanged事件

我正在开发一个UWP应用程序,在丢失网络连接或再次连接设备后需要做一些事情。 连接丢失或连接后是否有任何事件触发? 我搜索了www,但我发现的任何东西都是WP8 … 我需要在Windows 10上使用UWP。 我试图使用NetworkInformation.NetworkStatusChanged 。

选择一个孩子后,WPF TreeviewItem父选择事件?

我有一个标准的WPF树视图项目与许多孩子。 以编程方式创建树时,我将选定的事件处理程序添加到父项和子项。 我发现的是,当子项目选择事件被触发并被处理后,然后触发父事件。 这个问题是我根据所选项填充数据网格。 因此,每次选择子项后,datagrid都会重置为父项选择。 请有人解释这个项目是否正常,或者我是否做错了什么以及如何解决它。 如果您需要更多信息,请告诉我。 连接事件处理程序: //parent TreeViewItem tvi = new TreeViewItem(); tvi.Header = str; tvi.Selected += CoreSupplierSelected //child TreeViewItem tvi = new TreeViewItem(); tvi.Header = str; tvi.Tag = resinSystems.Values[i]; tvi.Selected += CoreResinSystemSelected; 处理程序: private void CoreSupplierSelected(object sender, RoutedEventArgs e) { TreeViewItem item = e.OriginalSource as TreeViewItem; MaterialSelectionData thicknessData = editInterface.GetCoreThicknessData(new List() { […]

MonoMac窗口关闭没有错误

我刚开始使用Xamarin Studio中的MonoMac,我遇到了一个最奇怪的问题: 我是一个带有NSButton和NSTextField的窗口。 到目前为止,我已经删除了按钮上的事件处理程序,因此它不做任何事情,除非我点击它时突出显示。 按钮创建代码如下所示: nsButton = new NSButton(new System.Drawing.RectangleF(0, 0, 100, 100)); nsButton.BezelStyle = NSBezelStyle.RoundRect; nsButton.Font = NSFont.SystemFontOfSize( NSFont.SystemFontSizeForControlSize(NSControlSize.Regular)); nsButton.StringValue = text; …然后它会像这样添加到窗口中: nsView.AddSubview(control.Handle as NSView); (因为在这部分代码中,control.Handle被输入为对象,而nsView是窗口上的主视图)。 所有的运行和工作正常。 但是,如果我反复点击该按钮,最终窗口就会关闭。 没有错误,没有例外,应用程序本身也不会退出; 当我使用菜单时,菜单会继续响应并愉快地记录消息。 但窗户很简单 – 走了。 这是非常可重复的:它发生在21次点击之后。 如果我添加一个更新NSTextField的事件处理程序(例如hello.Caption =“Foo”;),那么它会在19次点击后发生。 无论是快点还是慢点都没关系; 它始终是相同的点击次数。 请注意,项目中没有关闭窗口的代码,窗口甚至没有关闭框; 我知道没有合法的方法来关闭它而不是退出应用程序。 我在这里感到困惑,不知道如何进一步调试。 在这么多活动之后,Xamarin是否有某种评估限制可以关闭你的窗户? 这是一个框架错误吗? 任何见解将不胜感激。

将两种不同类型的事件分配给事件处理程序的区别

我在SO中看到了这个示例代码,它说一个练习很糟糕而另一个很好。 但我不明白为什么? 事实上,我得到了那个着名的RCW COM对象错误,该post说这可能是一个原因。 public class SomeClass { private Interop.ComObjectWrapper comObject; private event ComEventHandler comEventHandler; public SomeClass() { comObject = new Interop.ComObjectWrapper(); // NO – BAD! comObject.SomeEvent += new ComEventHandler(EventCallback); // YES – GOOD! comEventHandler = new ComEventHandler(EventCallback); comObject.SomeEvent += comEventHandler } public void EventCallback() { // DO WORK } } 编辑:这是源的链接: 不能使用已与其基础RCW分离的COM对象

如何将委托作为参数传递给订阅作为事件处理程序?

我有一个提供事件StkQuit的外部应用程序。 我在静态类中订阅此事件,该类处理我的应用程序和[外部]应用程序之间的所有通信。 我想使用另一个位于我的表单类的处理程序订阅StkQuit事件。 此处理程序将通知用户外部应用程序已关闭。 我想在名为SubscribeToStkQuit的静态类中有一个generics方法,它接受委托作为参数,并将该委托(指我的表单类的处理程序) StkQuit到StkQuit事件。 这可能吗? 这是实现此类function的最优雅/最简单的方法吗? 我的示例代码: 表格类 public delegate void dForceClose(); public void SubscribeToStkQuit(dForceClose forceClose) { UtilStk.SubscribeToStkQuit(forceClose = new dForceClose(ForceClose)); } private void ForceClose() { MessageBox.Show(“TEST”); } 静态类 private static AgUiApplication _stkUiApplication; public static void SubscribeToStkQuit(Delegate subscribeHandler) { _stkUiApplication.OnQuit += subscribeHandler; } [更新] 根据评论,我已更新代码,如下所示: public delegate void dForceClose(object sender, EventArgs e); public […]

C#中静态事件的负面影响/不良做法

当我创建将在应用程序的不同区域中使用的事件时,我会重复使用下面的代码。 我觉得它非常有用,它使事件很容易在代码中遵循。 有什么理由说这可能是一个坏主意吗? 这有点宽泛,但基本上有理由不这样做吗? 活动课程: public delegate void FocusEventHandler(object source, FocusEventArgs e); class FocusEvent { public static event FocusEventHandler focusEvent; public static void Focus(bool status) { focusEvent(null, new FocusEventArgs(status)); } } public class FocusEventArgs : EventArgs { public bool Focused { get; set; } public FocusEventArgs(bool f) { Focused = f; } } 所以我需要的是: FocusEvent.Focus(false); […]

更新按钮触发编辑事件处理程序

我有一个gridview。 标记是这样的…… …Bound fields and template fields etc… 我的代码背后有这个…… protected void gvwServers_Edit(object sender, GridViewEditEventArgs e) { gvwServers.EditIndex = e.NewEditIndex; gvwServers.DataBind(); } protected void gvwServers_Updated(object sender, GridViewUpdatedEventArgs e) { gvwServers.DataBind(); } protected void gvwServers_Updating(object sender, GridViewUpdateEventArgs e) { gvwServers.DataBind(); } protected void gvwServers_Deleting(object sender, GridViewDeleteEventArgs e) { gvwServers.DataBind(); } protected void gvwServers_Cancelling(object sender, GridViewCancelEditEventArgs e) { […]

当我想要双击时如何避免点击?

我在WPF中有一个应用程序和一个按钮。 在这个buttun中,我想要实现代码的click事件,但我希望当用鼠标双击时,执行其他代码但不执行click事件的代码。 问题是click事件的代码总是被执行,我不知道当我做doulbe点击时是否有办法避免执行click事件。 我遵循MVVM模式,并使用MVVM灯将事件转换为命令。 谢谢。