随笔分类 - 【WinForm开发】
摘要:在文本框中输入一个数字,点击开始累加按钮,程序计算从1开始累计到该数字的结果。因为该累加过程比较耗时,如果直接在UI线程中进行,那么当前窗口将出现假死。为了有更好的用户体验,程序启动一个新的线程来单独执行该计算,然后每隔200毫秒读取一次累加结果,并把结果显示到文本框下方的label控件中。同时,程
阅读全文
摘要:一、配置文件概述: 应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的。它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序。配置文件的根节点是configuration。我们经常访问的是appSettings,它是由.Net预定义的配置节。我们经常使
阅读全文
摘要:Application.Exit();//好像只在主线程可以起作用,而且当有线程,或是阻塞方法的情况下,很容易失灵 this.Close();//只是关闭当前窗体。 Application.ExitThread();//退出当前线程上的消息循环,并关闭该线程上的所有窗口。 也会失灵 Environm
阅读全文
摘要:访问 Windows 窗体控件本质上不是线程安全的。如果有两个或多个线程操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态。还可能出现其他与线程相关的 bug,包括争用情况和死锁。确保以线程安全方式访问控件非常重要。解决办法1、把CheckForIllegalCrossThreadCalls...
阅读全文
摘要:总结以下三种方法,实现c#每隔一段时间执行代码:方法一:调用线程执行方法,在方法中实现死循环,每个循环Sleep设定时间;方法二:使用System.Timers.Timer类;方法三:使用System.Threading.Timer,值得注意的是一定要声明成全局变量以保持对Timer的引用,否则会被...
阅读全文
摘要:我们都知道,MessageBox弹出的窗口是模式窗口,模式窗口会自动阻塞父线程的。所以如果有以下代码:MessageBox.Show("内容',"标题"); 则只有关闭了MessageBox的窗口后才会运行下面的代码。而在某些场合下,我们又需要在一定时间内如果在用户还没有关闭窗口时能自动关闭掉窗口而...
阅读全文
摘要:代码主要分为两部分,首先调用系统API注册剪切板相关的事件,然后监控用户的按键操作。完整代码如下: class ClipBoard { [DllImport("user32.dll", SetLastError = true)] private static...
阅读全文
摘要:1. 首先将窗口属性KeyPreview设为true,如果属性对话框中找不到,就直接在代码里添加;2. 添加KeyPress / KeyDown事件:1、KeyPress 和KeyDown 、KeyPress之间的区别 1)KeyPress主要用来捕获数字(注意:包括Shift+数字的符号)、字母...
阅读全文
摘要:【1】重用项目窗体解决方案: 1. 把FmMain.cs 和 FmMain.Designer.cs 和 FmMain .resx 三个文件复制到程序目录下; 2. 在vs里面添加现有项, 选择FmMain.cs, 不用选择其它文件, 完成操作后重新打开窗口。 【2】无法读写注册表解决方案 程序读写注
阅读全文
摘要:常用属性和方法 Navigate(string urlString):浏览urlString表示的网址 Navigate(System.Uri url):浏览url表示的网址 Navigate(string urlString, string targetFrameName, byte[] post
阅读全文