本文汇总了几个WinForm中常见的实用技巧,对于C#程序开发有着很好的参考借鉴价值。具体分析如下:
一、屏蔽窗体右上角关闭按钮
1.重写OnClosing
protected override void OnClosing(CancelEventArgs e) { if(this.Visible) { e.Cancel=true; // // WHATE TODO // } }
2.重写WndProc
protected override void WndProc(ref Message m) { const int WM_SYSCOMMAND = 0x0112; const int SC_CLOSE = 0xF060; if (m.Msg == WM_SYSCOMMAND && (int) m.WParam == SC_CLOSE) { // User clicked close button this.WindowState = FormWindowState.Minimized; return; } base.WndProc(ref m); }
更多方法可以参考:
http://topic.csdn.net/u/20091220/21/5228d0d6-26aa-48b8-81aa-293f7c7339f8.html?94449
http://topic.csdn.net/u/20090419/18/970d8ad9-ed9a-4bd9-a623-81d23106545b.html
二、屏蔽CTRL-V
在WinForm中的TextBox控件没有办法屏蔽CTRL-V的剪贴板粘贴动作,如果需要一个输入框,但是不希望用户粘贴剪贴板的内容,可以改用RichTextBox控件,并且在KeyDown中屏蔽掉CTRL-V键,例子:
private void richTextBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { if(e.Control && e.KeyCode==Keys.V) e.Handled = true; }
三、应用程序单例运行
#region 单实例运行 /// <summary> /// 单实例运行 /// </summary> /// <param name="frm">所要运行的主窗体</param> public static void SingleRun(Form frm) { System.Threading.Mutex mutex = new System.Threading.Mutex(false,"SINGLE_INSTANCE_MUTEX"); if (!mutex.WaitOne(0, false)) { mutex.Close(); mutex = null; } if (mutex != null) { Application.Run(frm); } else { MessageBox.Show("应用程序已启动","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information); } } #endregion
四、将控件转换成圆形
#region 将控件转换为圆形 [System.Runtime.InteropServices.DllImport("gdi32")] private static extern IntPtr BeginPath(IntPtr hdc); [System.Runtime.InteropServices.DllImport("gdi32")] private static extern int SetBkMode(IntPtr hdc,int nBkMode); const int TRANSPARENT=1; [System.Runtime.InteropServices.DllImport("gdi32")] private static extern IntPtr EndPath(IntPtr hdc); [System.Runtime.InteropServices.DllImport("gdi32")] private static extern IntPtr PathToRegion(IntPtr hdc); [System.Runtime.InteropServices.DllImport("gdi32")] private static extern int Ellipse(IntPtr hdc,int x1,int y1,int x2,int y2); [System.Runtime.InteropServices.DllImport("user32")] private static extern IntPtr SetWindowRgn(IntPtr hwnd,IntPtr hRgn,bool bRedraw); [System.Runtime.InteropServices.DllImport("user32")] private static extern IntPtr GetDC(IntPtr hwnd); /// <summary> /// 将控件转为圆形 /// </summary> /// <param name="control">控件名</param> public static void MakeControlToCircle(Control[] control) { IntPtr dc; IntPtr region; for(int i=0;i<control.Length;i++) { dc=GetDC(control[i].Handle); BeginPath(dc); SetBkMode(dc,TRANSPARENT); Ellipse(dc,0,0,control[i].Width-3,control[i].Height-2); EndPath(dc); region=PathToRegion(dc); SetWindowRgn(control[i].Handle,region,false); } } #endregion
五、在同一应用程序中同一窗体只打开一个
/// <summary> /// 在同一应用程序中同一窗体只打开一个 /// </summary> /// <param name="frmOpen">要打开的窗体实例</param> /// <returns></returns> public static void OpenSeamForm(Form frmOpen) { foreach (Form frm in Application.OpenForms) { if (frm.Text == frmOpen.Text) { frm.Visible = true; frm.WindowState = FormWindowState.Normal; frm.Activate(); return; } } frmOpen.Show(); }
相信本文所述实例对大家WinForm程序设计可以带来很大帮助。
本文向大家介绍C#之WinForm WebBrowser实用技巧汇总,包括了C#之WinForm WebBrowser实用技巧汇总的使用技巧和注意事项,需要的朋友参考一下 本文实例汇总了C#中WinForm WebBrowser常见的实用技巧,对于C#程序开发来说有不错的借鉴价值。分别叙述如下: 方法1:获取状态栏信息 方法2:页面跳转后改变地址栏地址 方法3:设置单选框 方法4:设置联动型下拉列
本文向大家介绍VC小技巧汇总之5则实用小技巧,包括了VC小技巧汇总之5则实用小技巧的使用技巧和注意事项,需要的朋友参考一下 本文搜集汇总VC的5则小技巧,非常实用,对于VC程序设计有很好的参考借鉴价值,详情如下: 1.如何获取程序所在的路径 也就是获取你这个程序本身所在的路径。 在应用程序类CxxApp的头文件中定义一个变量CString m_exePath;用来放置程序的路径名,在应用程序类Cx
本文向大家介绍vue.js项目中实用的小技巧汇总,包括了vue.js项目中实用的小技巧汇总的使用技巧和注意事项,需要的朋友参考一下 前言 Vue.js 是一套构建用户界面的 渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和 Vue 生态系统支持的
本文向大家介绍分享PyCharm的几个使用技巧,包括了分享PyCharm的几个使用技巧的使用技巧和注意事项,需要的朋友参考一下 PyCharm是个十分强大的Python编辑器,笔者在日常的工作中学到了很多该IDE的使用技巧,有的是从别人那里学到的,有的是自己学习的。笔者深感自己的开发能力不足,因此希望能够将这些使用技巧记录下来,同时也把这些使用技巧分享给读者,希望能对读者有所帮助。 以下将介绍几个
本文向大家介绍Laravel中9个不经常用的小技巧汇总,包括了Laravel中9个不经常用的小技巧汇总的使用技巧和注意事项,需要的朋友参考一下 前言 众所周知Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。下面这篇文章主要给大家总结了一些Laravel不经常用的小技巧,下面话不多说了,来一起看看详细的介绍吧 1. 更新父表的timestamps 如果你
本文向大家介绍VC小技巧汇总之窗口技巧,包括了VC小技巧汇总之窗口技巧的使用技巧和注意事项,需要的朋友参考一下 本文搜集汇总了VC小技巧的窗口技巧,对于VC程序开发的窗口设计而言有一定的借鉴价值,详情如下: 1.让窗口一启动就最大化 把应用程序类(CxxxApp)的 InitInstance() 函数中的 改为 则窗口一启动就最大化显示。 2.如何设置窗口的初始尺寸 在将应用程序类(CxxAPP)