问题标签 [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.
c# - C# 强制表单焦点
所以,在问这个问题之前,我确实搜索了谷歌和 SO。基本上我有一个 DLL,其中编译了一个表单。该表单将用于在屏幕上显示信息。最终它将是异步的,并在 dll 中公开大量自定义。现在我只想让它正确显示。我遇到的问题是我通过在 Powershell 会话中加载它来使用 dll。因此,当我尝试显示表单并将其置于顶部并获得焦点时,它在显示所有其他应用程序时没有问题,但我终生无法将其显示在 Powershell 窗口上. 这是我目前用来尝试显示的代码。我敢肯定,一旦我弄清楚了大部分内容就不需要了,这只是代表了我通过谷歌找到的所有东西。
正如我所说的,我确信其中大部分不是必需的,甚至完全是错误的,我只是想展示我尝试过的东西。另外,正如我所提到的,我计划在某个时候异步显示它,我怀疑这最终需要一个单独的线程。将表单拆分到它自己的线程中会更容易使其专注于 Powershell 会话吗?
@Joel,感谢您提供的信息。这是我根据您的建议尝试的:
该表单仍然出现在Powershell 会话下。我将继续解决线程问题。我之前已经产生了线程,但从来没有在父线程需要与子线程对话的地方,所以我们将看看它是如何进行的。
到目前为止,谢谢大家的所有想法。
好的,线程解决了这个问题。@Quarrelsome,我确实尝试了这两种方法。两者都没有(也没有一起)。我很好奇使用线程有什么坏处?我没有使用 Application.Run 并且我还没有遇到问题。我正在使用父线程和子线程都可以访问的中介类。在该对象中,我使用 ReaderWriterLock 来锁定一个属性,该属性表示我希望在子线程创建的表单上显示的消息。父级锁定属性,然后写入应该显示的内容。子线程锁定属性并读取它应该将表单上的标签更改为什么。孩子必须在轮询间隔(我默认为 500 毫秒)上执行此操作,我对此并不满意,但我找不到事件驱动的方式让子线程知道属性已更改,
c# - 显示 C# winforms 编辑控件的提示
我正在开发一个 C# winforms 应用程序(VS.NET 2008,.NET 3.5 sp 1)。我在表单上有一个搜索字段,而不是在搜索字段旁边有一个标签,我想在搜索字段本身的背景中显示一些灰色文本(例如“搜索词”)。当用户开始在搜索字段中输入文本时,文本应该会消失。我怎样才能做到这一点?
c# - 最小化托盘 C# WinForms 应用程序的正确方法是什么?
将 WinForms 应用程序最小化到系统托盘的正确方法是什么?
注意:最小化到系统托盘;在时钟旁边的任务栏右侧。我不是要最小化到任务栏,这是当你点击窗口上的“减号”按钮时会发生的。
我见过一些骇人听闻的解决方案,例如“最小化,设置 ShowInTaskbar = false,然后显示您的 NotifyIcon。”
像这样的解决方案是骇人听闻的,因为该应用程序似乎不像其他应用程序那样最小化到托盘,代码必须检测何时设置 ShowInTaskbar = true 以及其他问题。
这样做的正确方法是什么?
winforms - 如果 ListView 中的 ListViewItem 数量发生变化,是否会触发事件?(Windows 窗体)
我想根据我控制的项目数量启用/禁用其他一些控件ListView
。我找不到任何可以做到这一点的事件,无论是在ListView
它本身还是在ListViewItemCollection
. 也许有一种方法可以通用地观察 C# 中的任何集合以进行更改?
我也会对其他事件感到满意,即使是有时在项目不更改时触发的事件,但例如ControlAdded
andLayout
事件不起作用:(。
.net - 更改用户以运行 Windows 窗体程序
我用 C# 编写了一个简单的 Windows 窗体程序。我希望能够输入 Windows 用户名和密码,并且当我单击登录按钮运行代码时,以我输入的用户身份运行代码。
c# - Winforms c# - 将焦点设置到 TabPage 的第一个子控件
假设我有一个Textbox
嵌套在TabControl
.
当表单加载时,我想关注它Textbox
(默认情况下焦点设置为TabControl
)。
textbox1.focus()
在表单的情况下简单地调用Load
似乎不起作用。
我已经能够通过执行以下操作来集中注意力:
我的问题是:
有没有更优雅的方法来做到这一点?
c# - C#中的多线程启动画面?
我希望在应用程序加载时显示启动画面。我有一个带有系统托盘控件的表单。我希望在此表单加载时显示初始屏幕,这需要一些时间,因为它正在访问 Web 服务 API 以填充一些下拉列表。我还想在加载之前对依赖关系做一些基本的测试(即web服务可用,配置文件可读)。随着启动的每个阶段的进行,我想用进度更新启动屏幕。
我已经阅读了很多关于线程的内容,但是我迷失了应该从哪里控制它(main()
方法?)。我也错过了如何Application.Run()
工作,这是应该创建线程的地方吗?现在,如果带有系统托盘控件的窗体是“活”窗体,那么飞溅应该来自那里吗?在表单完成之前它不会加载吗?
我不是在寻找代码讲义,更多的是一种算法/方法,所以我可以一劳永逸地解决这个问题:)
c# - 在 C# 中读取默认应用程序设置
我的自定义网格控件有许多应用程序设置(在用户范围内)。其中大部分是颜色设置。我有一个表单,用户可以在其中自定义这些颜色,我想添加一个按钮来恢复默认颜色设置。如何读取默认设置?
例如:
- 我有一个名为
CellBackgroundColor
in的用户设置Properties.Settings
。 - 在设计时,我将值设置
CellBackgroundColor
为Color.White
使用 IDE。 - 用户在我的程序中设置
CellBackgroundColor
为。Color.Black
- 我用 保存设置
Properties.Settings.Default.Save()
。 - 用户点击
Restore Default Colors
按钮。
现在,Properties.Settings.Default.CellBackgroundColor
返回Color.Black
。我怎么回去Color.White
?
visual-studio - 《视觉传承》玩的什么状态
我们有一个应用程序,它必须灵活地向用户显示它的主表单 - 根据用户的不同,表单应该略有不同,可能在这里或那里有一个额外的按钮,或者其他一些细微差别。为了停止编写代码来显式删除或添加控件等,我转向视觉继承来解决这个问题——我认为这是一种整洁、干净和合乎逻辑的 OO 风格——结果表明,有一半的时间继承的表单很难无缘无故地在 VS 中渲染自己等等——我觉得开发人员和微软在某种程度上回避了视觉继承的做法——你能证实这一点,我在这里遗漏了什么吗?
问候。
winforms - winforms的HTML布局
我不想通过指定像素位置来安排 Winform 表单上的控件,而是将其布局类似于您在 html 中布局表单的方式。这将使它更好地扩展(对于更大的字体等)。
有谁知道允许您在 xml 中定义表单并将其布局类似于 html 的布局库?