Tag: winforms

确保只有一个应用程序实例

可能重复: 创建单个实例应用程序的正确方法是什么? 我有一个Winforms应用程序,它通过以下代码启动启动画面: Hide(); bool done = false; // Below is a closure which will work with outer variables. ThreadPool.QueueUserWorkItem(x => { using (var splashForm = new SplashScreen()) { splashForm.Show(); while (!done) Application.DoEvents(); splashForm.Close(); } }); Thread.Sleep(3000); done = true; 以上是主窗体的代码隐藏,并从加载事件处理程序调用。 但是,如何确保一次只加载一个应用程序实例? 在主窗体的load事件处理程序中,我可以检查进程列表是否在系统上(通过GetProcessesByName(…)),但是有更好的方法吗? 使用.NET 3.5。

Datagridview:如何在编辑模式下设置单元格?

我需要以编辑方式以编辑方式设置单元格。 我知道将该单元设置为CurrentCell然后调用方法BeginEdit(bool),它应该发生,但在我的情况下,它不会。 我真的很想要,我的DGV有几个列,用户只能选择并编辑前两个。 其他列已经是只读的,但用户可以选择它们,这就是我不想要的。 所以我在想,每当它完成在单元格上写入时告诉用户TAB,然后选择第二个单元格,然后再次选项卡并选择并开始编辑下一行的第一个单元格…… 我怎样才能做到这一点?

阻止.NET WebBrowser控件中的对话框

我有一个.NET 2.0 WebBrowser控件,用于导航一些没有用户交互的页面(不要问……长篇故事)。 由于此应用程序的用户性质较少,我已将WebBrowser控件的ScriptErrorsSuppressed属性设置为true,VS 2005状态中包含的文档将“隐藏其源自底层ActiveX控件的所有对话框,不只是脚本错误。“ 但是, MSDN文章没有提到这一点。 我已经设法取消了NewWindow事件,这会阻止弹出窗口,因此需要处理。 任何人都有使用其中一个并成功阻止所有对话框,脚本错误等的经验? 编辑 这不是IE的独立实例,而是生成在Windows窗体应用程序上的WebBrowser控件的实例。 任何人都有使用此控件或底层AxSHDocVW的经验吗? 再次编辑 对不起,我忘了提这个……我试图阻止一个JavaScript警报() ,只需一个OK按钮。 也许我可以转换成IHTMLDocument2对象并以这种方式访问​​脚本,我已经使用过MSHTML了,有人都知道吗?

如何在C#和WinForms中将项添加到ListBox?

我无法弄清楚如何在WinForms中向ListBox添加项目。 我试过了: list.DisplayMember = “clan”; list.ValueMember = sifOsoba; 如何使用int值和DisplayMember一些文本将ValueMember添加到列表中? list.Items.add(?) 顺便说一句。 我出于任何原因都无法使用ListBoxItem 。

在c#中的usercontrol中公开并引发子控件的事件

你好。 我有一个包含文本框的UserControl。 我想访问文本框的textchanged事件,但在usercontrol的事件属性中,我没有看到文本框的事件。 如何使用C#从Winforms中公开公开的UserControl公开和处理子控件的特定事件。

跨线程Winforms控件编辑

如果编辑文本的代码“属于”包含Windows窗体的单独线程,如何编辑Windows窗体元素中的文本? 我得到了例外: 跨线程操作无效:控制’textBox1’从其创建的线程以外的线程访问。 谢谢。

如何遍历表单上的所有复选框?

我有一个包含许多动态生成的复选框的表单。 在运行时,我如何迭代它们中的每一个,以便获得它们的值和ID?

DPI意识 – 在一个版本中不知道,在其他版本中意识到系统

所以我们有这个奇怪的问题。 我们的应用程序是一个C#/ WinForms应用程序。 在我们的6.0版本中,我们的应用程序不支持DPI。 在我们的6.1版本中,它突然变成DPI意识。 在6.0版本中,如果您在高DPI中运行它,它使用Windows位图缩放,这很好,因为这不会影响屏幕布局。 在6.1版本中,因为它由于某种原因变得DPI意识到,用户界面被破坏了。 我们现在无法解决这个问题。 我们有数百个屏幕,因此在DPI识别模式下使它们全部正常工作将花费大量时间。 我们已使用SysInternals Process Explorer确认了这一点。 在我们的6.0版本中,它显示了Unaware ,但在我们的6.1版本中,它最初显示Unaware ,但随后更改为System Aware 。 后者发生在代码从EXE进入包含所有用户界面代码的程序集DLL中时(我们的EXE基本上是一个非常薄的shell;它实际上只是在我们的表示层程序集上调用一个Controller类。) 我们已确认以下内容: 两个版本都使用VSS 2017在发布模式下构建。 两个版本都针对相同的.NET Framework(4.5) 两个版本都使用相同的DevExpress版本。 两个版本都具有相同的应用程序清单,该清单未启用DPI感知设置。 这两个版本都没有任何与DPI相关的Windows API的调用。 使用Sys Internals和一些消息框,我们确定了6.1版本在什么时候开始意识到(演示程序集中的入口点)以及那时加载了什么DLL(我们的,DevExpress,其他依赖项),然后我们构建了一个小的虚拟应用程序,引用相同的DLL,并确认它们已加载。 该虚拟应用程序不会成为DPI意识。 我们比较了两个版本之间的主要csproj文件,没有任何有意义的差异。 两个版本都没有引用WPF中的任何内容。 我们不明白为什么我们的6.1版本突然变得DPI意识到了。 我们还无能为力,我们需要一个修复程序,将此版本恢复到DPI unaware模式。 它正在阻止我们的发布。 非常感谢任何指针。 我们愿意在这一点上尝试任何事情。

淡化面板 – Windows窗体

我有一个可以显示或隐藏的详细信息面板。 如何显示/隐藏该面板(当然还有其内容)的简单淡入淡出效果? 我正在使用Windows窗体,并且控件在Windows窗体中没有opacity属性。

将json转换为C#数组?

有谁知道如何将包含json的字符串转换为C#数组。 我有这个从webBrowser读取text / json并将其存储到字符串中。 string docText = webBrowser1.Document.Body.InnerText; 只需要以某种方式将json字符串更改为数组。 一直在看Json.NET,但我不确定这是否是我需要的,因为我不想将数组更改为json; 但反过来说。 谢谢您的帮助!