时间:2021-05-20
本文汇总了几个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 buttonthis.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键,例子:
三、应用程序单例运行
#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程序设计可以带来很大帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
ios14怎么样?好用吗?有必要升级吗?下面小编带来iPhone升级iOS14后的四个实用技巧,希望对大家有所帮助。iPhone升级iOS14后的四个实用技巧:
本文向大家分享23种JavaScript提高执行效率的小技巧、最佳实践等非常实用的内容。当然JavaScript的实用技巧不止这些,还有很多即好玩又能提高程序运
微信漂流瓶捞瓶子技巧,微信漂流瓶捞瓶子技巧有哪些呢?有时候自己还没开始捞几个,就没机会了。微信漂流瓶怎么能多捞呢,想知道微信漂流瓶实用技巧,微信漂流瓶捞瓶子
本文实例讲述了Python中bisect的用法,是一个比较常见的实用技巧。分享给大家供大家参考。具体分析如下:一般来说,Python中的bisect用于操作排序
新手怎么经营淘宝网店?很多新手卖家在开店的时候没有想太多,开店之后不知道怎么经营。今天开淘小编就给大家分享一些对于新手比较实用的小技巧。新手经营淘宝网店实用技巧