将WinForms应用程序最小化到系统托盘的正确方法是什么?
注意:最小化到系统托盘 ; 在时钟任务栏的右侧.我不是要求最小化到任务栏,这是当你点击窗口上的"减号"按钮时会发生的事情.
我已经看到了像"最小化,设置ShowInTaskbar = false,然后显示你的NotifyIcon"这样的hackish解决方案.
像这样的解决方案是hackish,因为应用程序似乎不像其他应用程序那样最小化托盘,代码必须检测何时设置ShowInTaskbar = true,以及其他问题.
这样做的正确方法是什么?
我想在应用程序加载时显示启动画面.我有一个带有系统托盘控件的表单.我希望在加载此表单时显示启动画面,这需要一些时间,因为它正在访问Web服务API以填充一些下拉菜单.我还想在加载之前对依赖项进行一些基本测试(也就是说,Web服务可用,配置文件是可读的).随着启动的每个阶段的进行,我想要通过进度更新启动屏幕.
我一直在阅读很多关于线程的内容,但是我对它应该控制的地方感到迷茫(main()方法?).我也想知道它是如何main()工作的,这是应该创建的线程吗?现在,如果带有系统托盘控件的表单是"生命"表单,那么它应该来自那里吗?在形式完成之前不会加载吗?
我不是在寻找代码讲义,更多的是算法/方法,所以我可以一劳永逸地解决这个问题:)
我们在Winform应用程序中看到此错误.任何人都可以帮助您看到此错误的原因,更重要的是如何修复它或避免它发生.
System.ComponentModel.Win32Exception: Error creating window handle. at System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp) at System.Windows.Forms.Control.CreateHandle() at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) at System.Windows.Forms.Control.CreateControl() at System.Windows.Forms.Control.OnVisibleChanged(EventArgs e) at System.Windows.Forms.ButtonBase.OnVisibleChanged(EventArgs e)
我在C#Forms应用程序上有一个TextBox.我使用有关窗体的Load事件的信息填充TextBox.然后我打电话给以下人员:
this.txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
this.txtLogEntries.ScrollToCaret();
Run Code Online (Sandbox Code Playgroud)
但是TextBox不会滚动到底部?
这仅适用于Load事件.我还会在应用程序运行时从应用程序的其他部分更新此TextBox,并且只要其中一个事件更新为TextBox,它就会滚动到底部.
那么,如何在Form Load事件中预先填充TextBox时将其滚动到底部?
我有一个有2个组合框的表格.我想combobox2.DataSource基于combobox1.Text和填充combobox2.Text(我假设用户已完成输入combobox1并且正在输入中combobox2).所以我有一个这样的事件处理程序combobox2:
private void combobox2_TextChanged(object sender, EventArgs e)
{
if (cmbDataSourceExtractor.IsBusy)
cmbDataSourceExtractor.CancelAsync();
var filledComboboxValues = new FilledComboboxValues{ V1 = combobox1.Text,
V2 = combobox2.Text};
cmbDataSourceExtractor.RunWorkerAsync(filledComboboxValues );
}
Run Code Online (Sandbox Code Playgroud)
至于构建DataSource是一个耗时的过程(它创建一个对数据库的请求并执行它)我决定使用BackgroundWorker在另一个进程中执行它更好.因此,当cmbDataSourceExtractor尚未完成其工作并且用户再键入一个符号时,会出现这种情况.在这种情况下,我在这一行上得到一个例外,
cmbDataSourceExtractor.RunWorkerAsync(filledComboboxValues );说明BackgroundWorker正忙,无法同时执行多个操作.
如何摆脱这种异常?
提前致谢!
我有一个经历无限循环并处理数据的表单.当我单击"关闭"表单的按钮时,表单即使关闭也会继续处理.我希望表单完全结束并退出其循环语句,然后打开一个新表单.
这是我用来关闭表单的代码
frmMain.Close()
frmMain.Dispose()
Run Code Online (Sandbox Code Playgroud)
注意:我没有使用线程,它只是一个简单的VB.NET应用程序.我没有关闭主要的启动表格.
如何在DataGridView列中右对齐文本?我正在编写.NET WinForms应用程序.
我需要在应用程序启动时显示启动画面几秒钟.有人知道如何实现这个吗?
非常感谢您的帮助.
我想用一个文本框来显示一些文字.我无法禁用它,因为滚动条将无法正常工作.
如何防止在多行文本框中进行编辑,但是使其看起来好像已启用,以便滚动条正常工作?