Tag: 事件

如何在加载应用程序时显示图像

我有和应用程序窗口forms.net和我的form1花了很多时间出现,因为在它的事件form1_Load做了很多操作。 我的目标是在操作完成时显示图像。 private void form1_Load(object sender, EventArgs e) { methode1(); } 虽然我的methode1()正在工作,我的表格没有显示,我想在我的methode1()工作时在屏幕上显示图像,因为当methode1()工作时,屏幕上什么也没有。

在控制台应用程序中捕获ctrl + c事件(multithreading)

我有一个Console应用程序的主线程,它以这种方式运行很少的外部进程 private static MyExternalProcess p1; private static MyExternalProcess p2; private static MyExternalProcess p3; public void Main() { p1 = new MyExternalProcess(); p2 = new MyExternalProcess(); p3 = new MyExternalProcess(); p1.startProcess(); p2.startProcess(); p3.startProcess(); } public static void killEveryoneOnExit() { p1.kill(); p2.kill(); p3.kill(); } class MyExternalProcess { private Process p; … public void startProces() { // do […]

为什么我的按钮的’Validating’事件处理程序从未调用过?

在下面的迷你应用程序中,我想知道为什么永远不会调用BtnOk_Validating事件处理程序。 我希望单击“确定”按钮可以调用事件处理程序。 真实对话框有更多控件,每个控件都有一个validation事件处理程序。 我的计划是在允许关闭对话框之前使用Ok按钮validation事件处理程序来调用每个其他事件处理程序。 如果不是很明显,那么对于Forms开发来说,我就是新手。 using System.ComponentModel; using System.Windows.Forms; namespace ConsoleApp { class Program { static void Main( string[] args ) { Dialog dialog = new Dialog(); dialog.ShowDialog(); } } public class Dialog : Form { Button m_BtnOk; Button m_BtnCancel; public Dialog() { m_BtnOk = new System.Windows.Forms.Button(); m_BtnCancel = new System.Windows.Forms.Button(); m_BtnOk.CausesValidation = true; m_BtnOk.DialogResult […]

C# – 覆盖事件处理程序 – 添加参数

我正在使用System.Diagnostics.Process类来执行命令行程序。 我使用OutputDataReceived方法将输出重定向到我自己的方法。 pr.OutputDataReceived += new DataReceivedEventHandler(OnDataReceived); pr.ErrorDataReceived += new DataReceivedEventHandler(OnDataReceived); 但是,我有多个线程运行此cmd程序的多个实例。 我想要做的是能够识别输出数据来自哪个流程实例 – 理想情况下,包含名称的字符串。 (每个进程在GUI上都有自己的进度条。我创建了另一个事件来将输出传递给GUI,因此,我需要知道数据来自哪个进程来更新其进度条)。 我开始尝试: public override delegate void DataReceivedEventHandler(object sender, DataReceivedEventArgs e, string processName); 然后我意识到我必须覆盖Process类中的OutputDataReceived方法。 这反过来意味着我必须创建一个inheritanceSystem.Diagnostics.Process的自定义类,并且有一个接受字符串参数的方法,以便OutputDataReceived事件可以将流程实例名称(字符串)传递给我重写的DataReceivedEventHandler 。 问题的目的是获得关于如何进行的一些意见。 我的建议似乎是实现我想要的正确方法吗? 或者,有更好的方法吗?

文件夹事件中的新文件

有人可以帮我理解如何构建一个24/7全天候监听特定文件夹的软件(例如C:\ Actions),每次我在该文件夹中放置一个新文件时,软件需要阅读和处理它。 如果文件夹中没有文件,则软件不应该只做等待下一个文件。 文件示例(action1.txt)内容(1 + 1) 软件正在处理(1 + 1),将答案(2)保存到另一个文件夹并从“C:\ Actions \”文件夹中删除文件(action1.txt)。 我知道如何读取文件并进行处理.. 我很难理解如何在文件夹中有新文件时如何触发软件以及如何在不使用太多内存或导致内存泄漏的情况下全天候运行软件…… 直到现在我已经以原始的循环方式使用它,每次60秒(睡眠)我正在检查文件夹中的新文件。 那是无用的,不那么有效。 如果有人能帮我理解如何让它更有效,我会很高兴的。 非常感谢你

以编程方式更改值时,不要在DataGridView中触发单元格值更改事件

我想知道当以编程方式更改值时是否有办法在DataGridView中不触发CellValueChanged事件? 我只想在用户手动更改值时处理该事件,例如单击或键入其中一个框。 在我的应用程序中,我还以编程方式设置值,并且不希望处理该事件。 谢谢,Ritesh

如果不是双击,如何处理WinForms控件单击事件

我需要区分单击和双击,但我需要在点击事件期间执行此操作。 我需要这个,因为如果只有一次单击我想调用函数A,如果有双击我想调用函数B.但是只有单击才能调用函数A. 如何使用C#(或VB)中的标准Winforms实现此目的?

用于检查更改的DataGridView事件

我有一个DataGridView ,它有一堆列和一个名为IsChecked的checkBoxColumn。 我想在行检查状态发生变化时引发事件。 检查或取消选中行可以在用户单击checkBox时或按行上的空格键时完成。 这是我将checkBoxColumn添加到我的网格的方式: dgvMain.Columns.Add(new DataGridViewCheckBoxColumn { Name = “IsChecked” , Width = 20, Visible = false, HeaderText = “”, SortMode = DataGridViewColumnSortMode.NotSortable, DisplayIndex = Columns.Count, //to be displayed as last column ValueType = typeof(bool), FalseValue = false, TrueValue = true }); 这就是我按下空格键时检查单元格的方法: private void dgvMain_KeyDown(object sender, KeyEventArgs e) { foreach (DataGridViewRow row in […]

在没有控件的情况下使用invoke

我有一个Component(System.ComponentModel.Component) 该组件从另一个Thread接收事件。 通常我会使用这种模式在GUI线程中执行此代码 private void handle_Event(object sender, EventArgs e) { var control = this.Button1; if (control.InvokeRequired) control.Invoke(() => DoSomething()); else DoSomeThing(); } 但是,在这种特殊情况下,我没有控制权。 我该怎么做呢?

为一个事件两次查询一名代表

我最近被问到一个问题,如果我要两次查询一个处理程序会发生什么。 我来告诉你代码: public delegate void OpenEventHandler(object sender, EventArgs e); public class MyWindow { public event OpenEventHandler Open; public void OpenWindow() { if (Open != null) { Open(this, new EventArgs()); } } } public class TwoDelegates { public static void HandleOpen(Object sender, EventArgs e) { Console.WriteLine(“Birds fly”); (sender as MyWindow).Open -= HandleOpen; } public static void […]