Tag: winforms

这怎么可能:在WaitOne中处理OnPaint

我有一个ManualResetEvent 。 有一次,我使用WaitOne等待该事件。 令我惊讶的是,我在WaitOne收到了一个OnPaint事件。 这种情况经常发生。 堆栈跟踪如下所示: 我知道WaitOne会阻塞当前线程,并且在事件触发之前不允许执行任何其他代码。 有人可以解释这里发生了什么吗

打开多个文件(OpenFileDialog,C#)

我正在尝试使用OpenFileDialog一次打开多个文件,使用FileNames而不是FileName 。 但我无法在任何地方看到任何关于如何实现这一点的例子,甚至在MSDN上都没有。 据我所知 – 它也没有任何文件。 有没有人这样做过?

如何以编程方式检查控件时阻止触发CheckedChanged事件?

如何以编程方式检查控件时阻止触发CheckedChanged事件? 我通常按​​以下方式执行此操作。 private bool isFrozen = false; private void btn1_CheckedChanged(object sender, EventArgs e) { if (isFrozen) return; isFrozen = true; btn2.Checked = false; isFrozen = false; // Do some stuff } private void btn2_CheckedChanged(object sender, EventArgs e) { if (isFrozen) return; isFrozen = true; btn1.Checked = false; isFrozen = false; // Do another stuff } […]

如何以编程方式获取user.config文件的位置?

我想在我的Windows窗体应用程序中显示user.config文件的位置,以便用户可以轻松找到它。 我理解如何创建路径,这要归功于: 我可以控制.NET用户设置的位置,以避免丢失应用程序升级时的设置吗? 。 但是,如果这种情况发生变化,我宁愿不必在我的应用程序中构建路径,特别是如果有一个简单的方法来获取user.config文件位置。

从DataTable填充WinForms TreeView

我有一个WinForm TreeView控件,显示CaseNotes的父子关系(我知道这对大多数人来说没什么意义,但它可以帮助我看到答案)。 我有一个我需要显示的CaseNotes的DataTable。 父/子被定义为:如果行具有ParentNoteID,则它是该注释的childNode,否则它是rootNode。 它也可以是父笔记(但不是rootNode),如果另一行有它的ID,因为它是ParentNoteID。 为了使事情变得复杂(可能是简化),我有以下工作(大部分)代码,它们交替地为节点着色。 我手动为树视图创建了一个静态集合,它可以非常正确地为它们着色。 现在我需要从我的DataTable动态填充节点。 既然我已经逐个节点地通过树视图,那么我不能以某种方式将数据附加到这个过程中吗? 也许我需要先构建节点,然后将颜色作为一个单独的例程,但递归方法仍然适用,对吗? 假设我想为每个节点显示CaseNoteID。 这是在DataTable中返回的,并且是唯一的。 foreach (TreeNode rootNode in tvwCaseNotes.Nodes) { ColorNodes(rootNode, Color.MediumVioletRed, Color.DodgerBlue); } protected void ColorNodes(TreeNode root, Color firstColor, Color secondColor) { root.ForeColor = root.Index % 2 == 0 ? firstColor : secondColor; foreach (TreeNode childNode in root.Nodes) { Color nextColor = childNode.ForeColor = childNode.Index % […]

在数字后面有NumericUpDown控件内的文本

在WinForms中是否可以在NumericUpDown控件中显示文本? 例如,我想在我的numericupdown控件中显示值是微安培,所以它应该像“1 uA”。 谢谢。

为什么内部exception到达ThreadException处理程序而不是实际抛出的exception?

在抛出exception并在Application.ThreadException事件处理程序中捕获它们时,我看到了一些奇怪的行为。 基本上,下面的示例中发生的是在BackgroundWorker的DoWork事件处理程序中抛出exception。 RunWorkerCompleted事件处理程序重新抛出一个新exception,原始exception作为内部exception。 为什么内部exception出现在ThreadException事件处理程序中而不是抛出的实际exception? 如果我在RunWorkerCompleted事件处理程序中没有提供内部exception,则会显示正确的exception。 using System; using System.Windows.Forms; using System.ComponentModel; namespace WierdExceptionApp { class WierdExceptionForm : Form { BackgroundWorker worker = new BackgroundWorker(); public WierdExceptionForm() { worker.DoWork += new DoWorkEventHandler(worker_DoWork); worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted); worker.RunWorkerAsync(); } void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Error != null) { throw new Exception(“worker_RunWorkerCompleted”, e.Error); } } void […]

有没有办法在winforms中为标签页的标签添加颜色?

我正在努力找到为WinForms中的标签页的标题标题着色的方法。 有一些解决方案可以使用OnDrawItem事件为当前索引选项卡着色,但是可以一次为不同颜色的所有选项卡着色,以使用户对某种行为直观。 提前致谢, Rajeev Ranjan Lall

如何编写c#服务,我也可以作为winforms程序运行?

我有一个用C#编写的Windows服务,它充当后端数据库的一堆网络设备的代理。 为了测试并添加模拟层来测试后端,我希望有一个GUI供测试操作员运行模拟。 也适用于作为演示发送的条纹版本。 GUI和服务不必同时运行。 实现这种决斗操作的最佳方法是什么? 编辑:这是我的解决方案,从这个问题 , 我运行即服务和安装.NET Windows服务没有InstallUtil.exe使用这个优秀的代码 Marc Gravell 它使用以下行来测试是运行gui还是作为服务运行。 if (arg_gui || Environment.UserInteractive || Debugger.IsAttached) 这是代码。 using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using System.ComponentModel; using System.ServiceProcess; using System.Configuration.Install; using System.Diagnostics; namespace Form_Service { static class Program { /// /// The main entry point for the application. /// [STAThread] […]

将标签绑定到“变量”

假设我有一个名为X的全局变量INT。由于X是全局的,我们可以假设任何东西都可以修改它的值,因此每次都会更改它。 假设我有一个名为“label”的Label控件。 这就是我想要完成的事情: 我想将label.Text的值“绑定”到变量X.这样,当变量X被更改时,它将被reflection回label.Text。 现在,我不想编写事件监听器并与代理一起玩这个(我希望尽可能少的代码)。 有没有办法使用DataBinding组件? 或任何其他新技术? 谢谢,伊恩