Tag: events

在关闭C#WPF应用程序之前询问用户

我想在关闭申请前询问用户。 我是C#.NET 4.0应用程序。 我正在使用WPF。 我可以在Windows窗体中执行此操作,但不能在WPF中执行。 当用户想要关闭应用程序时会触发事件,消息框出现,包子无论按下哪个按钮(是或否)应用程序始终关闭。 为什么? 哪里出错? 它可以工作,但只有当用户按“X”时才有效。 当用户按下Application.Current.Shutdown()的按钮时; 它不起作用。 private void MainWindowDialog_Closing(object sender, System.ComponentModel.CancelEventArgs e) { MessageBoxResult result = MessageBox.Show(“Do you really want to do that?”, “Warning”, MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.No) { e.Cancel = true; } }

使用Monotouch处理iOS的UITableViewSource事件

我正在尝试捕获并处理一个事件,当单击UITableViewSource的元素时。 这是我的代码: public class TableViewSource : UITableViewSource { public event EventHandler SongSelected; private List rows; public TableViewSource (List list) { rows = list; } public override int RowsInSection (UITableView tableview, int section) { return rows.Count; } public override void RowSelected (UITableView tableView, NSIndexPath indexPath) { // raise our event var handler = SongSelected; if (handler […]

c#插件事件处理

我编写了一个使用接口的插件系统,并且满足此合同的任何插件都在运行时加载到主系统中。 插件有效地返回插入主应用程序的TabPage,并从插件dll中进行控制。 如果插件中发生错误,则会显示标准Windows错误消息。 我想要做的是创建一个返回错误消息的事件,以便我可以在我为文本保留的区域中显示它。 我是否需要跟踪所有连接的插件/接口实例,以便能够设置一个事件来监控每个实例? 目前,我的系统循环遍历app文件夹中的dll,并且那些满足接口契约的dll被加载,每次控件被丢弃时,接口的实际实例被丢弃,然后通过加载的按钮事件将其移交给dll。 TabPage并在插件中处理。 我希望这一切都有道理。

将事件视为对象

C#还不够OO吗? 在这里,我给出一个(可能是坏的)例子。 public class Program { public event EventHandler OnStart; public static EventHandler LogOnStart = (s, e) => Console.WriteLine(“starts”); public class MyCSharpProgram { public string Name { get; set; } public event EventHandler OnStart; public void Start() { OnStart(this, EventArgs.Empty); } } static void Main(string[] args) { MyCSharpProgram cs = new MyCSharpProgram { Name = […]

如何监控App外部按下的键击?

我需要在C#中使用一种方法来监视系统范围的键,例如Ctrl + A ,所以我可以采取行动。 我怎么能得到这样的事件,即使按下按键时我的应用程序不再是焦点?

如何安全地发射事件

当事件没有订阅者时,如何确保在触发事件时不会抛出exception。 // Delegate declaration public delegate void _delDisplayChange(object sender,string option); // Event declaration public event _delDisplayChange DisplayChange; //throwing the event DisplayChange(this, “DISTRIBUTION”);

有趣的事件“处置”行为

我注意到我们的.NET WinForms应用程序中有趣的行为。 我们有一个mdi表单,添加了许多mdi子项。 这些子forms听取“广播”事件,这实际上是一种刷新自己的呼叫。 事件在基类中声明,并在子表单中添加侦听事件。 我注意到,即使这些子窗体关闭,如果在Dispose()方法中没有显式删除事件,事件仍然会被命中。 这背后的原因是什么? 当然,如果表格被关闭,事件应该分开/处理? 是因为实际事件本身是在外部类中声明的吗? 这就是我的假设。 洞察力将非常感激。 (使用C#,.NET 3.5)

为PictureBox鼠标添加事件

我想让这个活动奏效: private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { //code } 我知道我必须为此添加一个事件,但我无法在任何地方找到语法。 我该如何添加此活动?

使用MulticastDelegate作为参数,同时避免使用DynamicInvoke

我有一个MulticastDelegate ,可以引用具有相同签名的许多(遗留)代理之一。 例如: public delegate void ObjectCreated(object sender, EventArgs args); public delegate void ObjectDeleted(object sender, EventArgs args); //… 然后,这些代表用于定义事件: public event ObjectCreated ObjectWasCreated; public event ObjectDeleted ObjectWasDeleted; 然后我有一个方法,它接受我用来做一些常见检查的MulticastDelegate : void DispatchEvent(MulticastDelegate handler, object sender, EventArgs args) { if (handler != null) { // … handler.DynamicInvoke(sender, args); } } 这是从定义事件的类的其他方法中调用的: DispatchEvent(ObjectWasCreated, sender, args); DispatchEvent(ObjectWasDeleted, sender, args); […]

如何使用MouseMove事件绘制单行

我正在尝试使用OnMouseMove()事件绘制一行。 我的问题是每次我移动鼠标都会留下痕迹。 我尝试使用刷新方法,但是当我停止移动鼠标时,线条消失了。 我不想要绘制OnPaint(); ,只想绘制它OnMouseMove() 。 编辑:我正在使用透明面板(cp.ExStyle | = 0x20;),所以我不能使用graphics.Clear()和BackColor() 这是没有Refresh()的示例图像: 这是我的代码: private void panel1_MouseMove(object sender, MouseEventArgs e) { Graphics g = panel1.CreateGraphics(); g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; using (var p = new Pen(Color.Black, 3)) { p.StartCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor; p.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor; g.DrawLine(p, st, e.Location); } Thread.Sleep(30); Invalidate(); //this.Refresh(); g.Dispose(); } 问候