共计 3 篇文章

WinForm 在线程中启动新的窗口

由于工程需要在线程当中加载一个新的WinForm窗口,但是直接在线程中加载会立即闪退,我认为是线程执行完成之后自动销毁了new的窗口。 new Thread(()=>{new Form2().Show();}).Start(); 之后谷歌了一番,有人提到使用异步委托在线程中来加载新的窗口: new Thread(()=>{BeginInvoke(new MethodInvoker(()=> { new Form2().Show(); }));}).Start(); 使用如上方法能够正常运行。 ...

实现毛玻璃效果

经过测试只能在Windows7 下正常使用,在Win8或者Xp下面无法正常显示毛玻璃效果。 首先你要先创建一个结构体如下: [StructLayout(LayoutKind.Sequential)] public struct MARGINS { public MARGINS(Thickness t) { Left = (int)t.Left; Right = (int)t.Right; Top = (int)t.Top; ...

WinForm 图标复用,减少exe文件体积

经常我们使用C#开发windows窗体程序的时候,会使用到图标,但经常会碰到这样一个问题。 如果我们在项目属性中设定了一个50kb的ico图标,但是我们为了每个窗体的美观都需要在每个窗体又要使用相同的图标文件,这样的话,如果我们有3个窗体,就需要3个图标150KB,加上项目图标就是200KB,如果你有很多窗口的话,那么就会更加蛋疼。 解决办法就是在每个窗体的ico图标我们直接使用项目的那个50kb的图标就行了,避免重复添加。 只需要在每个窗口的laod事件里面手动加载图标即可。 private void Form1_Load(object sender, EventArgs e) { // 加载图标 this.Icon ...