Tag: winforms

Async / Await与WinForms ProgressBar

我已经使用BackgroundWorker在过去使用过这种类型的东西,但我想使用.NET 4.5的新异步/等待方法。 我可能正在咆哮错误的树。 请指教。 目标 :创建一个组件,该组件将执行一些长时间运行的工作,并在执行工作时显示带有进度条的模态表单。 该组件将获取窗口的句柄,以便在执行长时间运行的工作时阻止交互。 状态 :请参阅下面的代码。 在我尝试与windows进行交互之前,我认为自己做得很好。 如果我把事情单独处理(即不要触摸!),一切都“完美”运行,但是如果我点击任一窗口,那么程序会在长时间运行结束后挂起。 忽略实际交互(拖动),就像UI线程被阻止一样。 问题 :我的代码可以很容易修复吗? 如果是这样,怎么样? 或者,我应该使用不同的方法(例如BackgroundWorker)吗? 代码 (Form1是带有ProgressBar和公共方法的标准表单,UpdateProgress,用于设置ProgressBar的值): using System; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine(“Starting..”); var mgr = new Manager(); mgr.GoAsync(); Console.WriteLine(“..Ended”); Console.ReadKey(); } } class Manager { private static […]

如何在ac#win表单应用程序中捕获键盘敲击(CTRl + alt + Del)

有没有办法处理Ctrl + Alt + Del Key组合。 例如,在测验应用程序(Win Forms)中,用户不应该在测试结束之前切换到其他窗口。 我可以使用c#标准属性单独捕获Ctrl和Alt键。 但是一旦用户点击了Del键。 控件不在我的应用程序中,窗口处理它。 任何想法都会有所帮助。 谢谢。

Windows窗体应用程序中的内存泄漏

我们正在开发一个大的.NET Windows Forms应用程序。 尽管我们正在处理表单,但我们正面临内存泄漏/使用问题。 场景如下: 我们的应用程序使用60 KB的内存,并在网格中显示记录列表。 当用户点击记录时,它会打开一个表单myform.showDialog ,显示详细信息。 内存从60 KB 跳到 105 MB 。 现在我们关闭表单myform以返回到网格,并处理该表单并将其设置为null 。 内存保持在105 MB 。 现在,如果我们再次执行第2步,它将从105 MB跳到150 MB ,依此类推。 当我们关闭myForm时,我们怎样才能释放内存? 我们已经尝试过GC.Collect()等,但没有任何结果。

如何在Windows窗体应用程序设置中记录窗口位置

这似乎是一个标准要求:下次用户启动应用程序时,以与以前相同的位置和状态打开窗口。 这是我的愿望清单: 窗口位置与原样相同 除非屏幕已resize并且旧位置现在已关闭屏幕。 分裂者应保持其立场 标签容器应保留其选择 一些下拉菜单应该保留他们的选择 窗口状态(最大化,最小化,正常)与其相同。 也许你永远不应该开始最小化,我还没有决定。 我将添加我当前的解决方案作为答案以及限制。

如何在窗体加载其控件(或更新它们)时在Windows窗体上显示“加载”叠加?

我正在寻找一种有效的方法来通知用户某个表单当前正在加载(或更新)它的UI,这将需要几秒钟。 这可能发生在初始加载或更新时。 由于它是非常密集和修改ui控件,这必须在ui线程上完成,因此阻止用户。 没有改变光标,我希望获得与ajax页面类似的效果,整个区域由半透明面板覆盖,中间有动画齿轮。 你有没有做过类似的事情? 或者你知道我应该咨询的有趣网站吗? 非常感谢

按Enter键移至下一个控件

我在WinForm上有几个TextBox。 当按下Enter键时,我希望焦点移动到下一个控件? 每当文本框获得控制权时,它也会选择文本,以便任何编辑都将替换当前文本。 做这个的最好方式是什么?

动画:C#表单上的滑动和淡入控件(winforms)

我正在尝试优雅地实现一种方法来动画(平移,淡化)控件(可能同时超过一个)。 例如,假设我左上角有一张图片,右下角有一个文本框,我希望能够让它们平滑地滑过窗口并切换位置。 我已经工作了一段时间,但没有提出任何能够顺利或轻松实现这一目标的事情。

C#winform检查控件是否在物理上可见

是否可以确定是否可以看到控件的至少一个像素(通过属性或可能使用事件通知)。 注意:即使其他窗口隐藏了控件,我也不会寻找可以返回true的Visible属性

Winforms用户控制自定义事件

有没有办法提供用户控件自定义事件,并在用户控件中的事件上调用事件。 (我不确定调用是否是正确的术语) public partial class Sample: UserControl { public Sample() { InitializeComponent(); } private void TextBox_Validated(object sender, EventArgs e) { // invoke UserControl event here } } 和MainForm: public partial class MainForm : Form { private Sample sampleUserControl = new Sample(); public MainForm() { this.InitializeComponent(); sampleUserControl.Click += new EventHandler(this.CustomEvent_Handler); } private void CustomEvent_Handler(object sender, EventArgs […]

如何自定义消息框

我正在做C#应用程序,我想改变消息框的样式。 有可能吗? 示例:更改按钮样式,前景色等。