窗体Load事件中使用 textBox1.Focus(); 方式设置焦点始终不生效,查看该方法返回值也是false,查询微软文档,发现如下注解,改为textBox1.Select();后顺利解决 原文链接 Control.Focus 方法 (System.Windows.Forms) | Microsoft Docs
窗体Load事件中使用 textBox1.Focus(); 方式设置焦点始终不生效,查看该方法返回值也是false,查询微软文档,发现如下注解,改为textBox1.Select();后顺利解决 原文链接 Control.Focus 方法 (System.Windows.Forms) | Microsoft Docs
namespace WindowsForm { /// <summary> /// WMsg参数常量值 /// </summary> public class WMsg { //创建一个窗口 const int WM_CREATE = 0x01; //当一个窗口被破坏时发送 const int WM_DESTROY = 0x02; //移动一个窗口 const int WM_MOVE = 0x03; //改变一个窗口的大小 const int WM_SIZE = 0x05; //一个窗口被激…
修改工作项目一个基类中动态计算右侧按钮位置的方法,发现计算正确,派生类的显示无论是设计界面还是运行时界面,右侧按钮的显示位置却一直不对,最后发现是该按钮的[Anchor]属性被设置成[Top, Right],导致应该显示的位置和实际显示位置相差了基类和派生类的Width差值[如基类width=700,派生类width=500,按钮会在应显示位置左移200的位置处显示,反之则右移]. 结论:使用了[Anchor]属性就不要再去手动计算;使用了手动计算就不要设置[Anchor]属性.
C# 单例模式基类如何初始化子类 这篇文章中涉及到了线程操作,实际使用时发现如果方法Internal_Start()中睡眠时间较长(例如10秒),操作时在10秒内先调用stop再调用start方法时,希望停止的线程无法停止. 研究了后发现是因为使用的状态位是全局变量,再次调用start时,上一次的stop调用被改为false的状态位还未生效又被改回true,导致调用stop时应停止的线程无法终止同时又启动了一个新线程. 我的解决方法是增加两个全局变量,一个int值记录当前是第几次启动线程(从0开始计数,-1表示线程…
项目需要,有很多操作需要在线程中执行,而且启动线程的结构完全相同,因此想到用父子类并重写基类方法的方式实现,于是啪啪啪就写了写完随便新建一个空窗体测试下,才发现这种写法完全不行,单例在父类中初始化的是父类自己,无论用哪个子类调用,永远执行不到子类重写的方法. 首先想到的是将return _instance == null ? _instance = new ThreadHelper() : _instance;代码中的new ThreadHelper()改为虚方法,在子类中重写,一测试发现这个是静态属性中内容,方法…
项目中有OCR识别数据功能,用的OpenCV3.4的库,实际使用中发现类库有内存泄漏问题,先想的方案是加载OpenCV类库的dll使用动态加载方式定时卸载重新加载,实际测试发现无效,后来用的方案是使用exe调用OpenCV库,使用进程间通讯传值给主程序,定时重启exe程序解决的.本文主要记录动态加载/卸载类库的内容. 1.在需要调用项目中新建类库并继承自,在类中使用反射机制加载被调用方 using System; using System.Collections.Generic; using System.Linq…