问题标签 [winforms]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
54938 浏览

c# - C# 强制表单焦点

所以,在问这个问题之前,我确实搜索了谷歌和 SO。基本上我有一个 DLL,其中编译了一个表单。该表单将用于在屏幕上显示信息。最终它将是异步的,并在 dll 中公开大量自定义。现在我只想让它正确显示。我遇到的问题是我通过在 Powershell 会话中加载它来使用 dll。因此,当我尝试显示表单并将其置于顶部并获得焦点时,它在显示所有其他应用程序时没有问题,但我终生无法将其显示在 Powershell 窗口上. 这是我目前用来尝试显示的代码。我敢肯定,一旦我弄清楚了大部分内容就不需要了,这只是代表了我通过谷歌找到的所有东西。

正如我所说的,我确信其中大部分不是必需的,甚至完全是错误的,我只是想展示我尝试过的东西。另外,正如我所提到的,我计划在某个时候异步显示它,我怀疑这最终需要一个单独的线程。将表单拆分到它自己的线程中会更容易使其专注于 Powershell 会话吗?


@Joel,感谢您提供的信息。这是我根据您的建议尝试的:

该表单仍然出现Powershell 会话下。我将继续解决线程问题。我之前已经产生了线程,但从来没有在父线程需要与子线程对话的地方,所以我们将看看它是如何进行的。

到目前为止,谢谢大家的所有想法。


好的,线程解决了这个问题。@Quarrelsome,我确实尝试了这两种方法。两者都没有(也没有一起)。我很好奇使用线程有什么坏处?我没有使用 Application.Run 并且我还没有遇到问题。我正在使用父线程和子线程都可以访问的中介类。在该对象中,我使用 ReaderWriterLock 来锁定一个属性,该属性表示我希望在子线程创建的表单上显示的消息。父级锁定属性,然后写入应该显示的内容。子线程锁定属性并读取它应该将表单上的标签更改为什么。孩子必须在轮询间隔(我默认为 500 毫秒)上执行此操作,我对此并不满意,但我找不到事件驱动的方式让子线程知道属性已更改,

0 投票
4 回答
14230 浏览

c# - 显示 C# winforms 编辑控件的提示

我正在开发一个 C# winforms 应用程序(VS.NET 2008,.NET 3.5 sp 1)。我在表单上有一个搜索字段,而不是在搜索字段旁边有一个标签,我想在搜索字段本身的背景中显示一些灰色文本(例如“搜索词”)。当用户开始在搜索字段中输入文本时,文本应该会消失。我怎样才能做到这一点?

0 投票
9 回答
64044 浏览

c# - 最小化托盘 C# WinForms 应用程序的正确方法是什么?

将 WinForms 应用程序最小化到系统托盘的正确方法是什么?

注意:最小化到系统托盘;在时钟旁边的任务栏右侧。我不是要最小化到任务栏,这是当你点击窗口上的“减号”按钮时会发生的。

我见过一些骇人听闻的解决方案,例如“最小化,设置 ShowInTaskbar = false,然后显示您的 NotifyIcon。”

像这样的解决方案是骇人听闻的,因为该应用程序似乎不像其他应用程序那样最小化到托盘,代码必须检测何时设置 ShowInTaskbar = true 以及其他问题。

这样做的正确方法是什么?

0 投票
3 回答
6537 浏览

winforms - 如果 ListView 中的 ListViewItem 数量发生变化,是否会触发事件?(Windows 窗体)

我想根据我控制的项目数量启用/禁用其他一些控件ListView。我找不到任何可以做到这一点的事件,无论是在ListView它本身还是在ListViewItemCollection. 也许有一种方法可以通用地观察 C# 中的任何集合以进行更改?

我也会对其他事件感到满意,即使是有时在项目不更改时触发的事件,但例如ControlAddedandLayout事件不起作用:(。

0 投票
2 回答
6549 浏览

.net - 更改用户以运行 Windows 窗体程序

我用 C# 编写了一个简单的 Windows 窗体程序。我希望能够输入 Windows 用户名和密码,并且当我单击登录按钮运行代码时,以我输入的用户身份运行代码。

0 投票
6 回答
44564 浏览

c# - Winforms c# - 将焦点设置到 TabPage 的第一个子控件

假设我有一个Textbox嵌套在TabControl.

当表单加载时,我想关注它Textbox(默认情况下焦点设置为TabControl)。

textbox1.focus()在表单的情况下简单地调用Load似乎不起作用。

我已经能够通过执行以下操作来集中注意力:

我的问题是:

有没有更优雅的方法来做到这一点?

0 投票
12 回答
44036 浏览

c# - C#中的多线程启动画面?

我希望在应用程序加载时显示启动画面。我有一个带有系统托盘控件的表单。我希望在此表单加载时显示初始屏幕,这需要一些时间,因为它正在访问 Web 服务 API 以填充一些下拉列表。我还想在加载之前对依赖关系做一些基本的测试(即web服务可用,配置文件可读)。随着启动的每个阶段的进行,我想用进度更新启动屏幕。

我已经阅读了很多关于线程的内容,但是我迷失了应该从哪里控制它(main()方法?)。我也错过了如何Application.Run()工作,这是应该创建线程的地方吗?现在,如果带有系统托盘控件的窗体是“活”窗体,那么飞溅应该来自那里吗?在表单完成之前它不会加载吗?

我不是在寻找代码讲义,更多的是一种算法/方法,所以我可以一劳永逸地解决这个问题:)

0 投票
7 回答
44912 浏览

c# - 在 C# 中读取默认应用程序设置

我的自定义网格控件有许多应用程序设置(在用户范围内)。其中大部分是颜色设置。我有一个表单,用户可以在其中自定义这些颜色,我想添加一个按钮来恢复默认颜色设置。如何读取默认设置?

例如:

  1. 我有一个名为CellBackgroundColorin的用户设置Properties.Settings
  2. 在设计时,我将值设置CellBackgroundColorColor.White使用 IDE。
  3. 用户在我的程序中设置CellBackgroundColor为。Color.Black
  4. 我用 保存设置Properties.Settings.Default.Save()
  5. 用户点击Restore Default Colors按钮。

现在,Properties.Settings.Default.CellBackgroundColor返回Color.Black。我怎么回去Color.White

0 投票
6 回答
1211 浏览

visual-studio - 《视觉传承》玩的什么状态

我们有一个应用程序,它必须灵活地向用户显示它的主表单 - 根据用户的不同,表单应该略有不同,可能在这里或那里有一个额外的按钮,或者其他一些细微差别。为了停止编写代码来显式删除或添加控件等,我转向视觉继承来解决这个问题——我认为这是一种整洁、干净和合乎逻辑的 OO 风格——结果表明,有一半的时间继承的表单很难无缘无故地在 VS 中渲染自己等等——我觉得开发人员和微软在某种程度上回避了视觉继承的做法——你能证实这一点,我在这里遗漏了什么吗?

问候。

0 投票
6 回答
1617 浏览

winforms - winforms的HTML布局

我不想通过指定像素位置来安排 Winform 表单上的控件,而是将其布局类似于您在 html 中布局表单的方式。这将使它更好地扩展(对于更大的字体等)。

有谁知道允许您在 xml 中定义表单并将其布局类似于 html 的布局库?