前提
入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。
本系列文章将讲解各种控件的开发及思路,欢迎各位批评指正。
此系列控件开发教程将全部在原生控件基础上进行重绘开发,目标的扁平化、漂亮、支持触屏。
如果有什么好的建议也可以评论留言来交流。
源码地址:
GitHub:https://github.com/kwwwvagaa/NetWinformControl
码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git
如果觉得写的还行,请点个 star 支持一下吧
欢迎前来交流探讨: 企鹅群568015492
目录
http://toutiao.com/item/6824291838963220999/
准备工作
这是一个提示消息的窗体,他继承自基类窗体FrmBase,如果你对FrmBase还不了解,请移步 (十六)C#WinFrom自定义控件系列-基类窗体查看
提示消息窗体支持有确定取消按钮及单取消按钮,更多操作按钮暂没有增加
开始
添加一个Form命名为FrmDialog ,继承FrmBase
私有的构造函数
1 private FrmDialog( 2 string strMessage, 3 string strTitle, 4 bool blnShowCancel = false, 5 bool blnShowClose = false, 6 bool blnisEnterClose = true) 7 { 8 InitializeComponent(); 9 if (!string.IsNullOrWhiteSpace(strTitle))10 lblTitle.Text = strTitle;11 lblMsg.Text = strMessage;12 if (blnShowCancel)13 {14 this.tableLayoutPanel1.ColumnStyles[1].Width = 1;15 this.tableLayoutPanel1.ColumnStyles[2].Width = 50;16 }17 else18 {19 this.tableLayoutPanel1.ColumnStyles[1].Width = 0;20 this.tableLayoutPanel1.ColumnStyles[2].Width = 0;21 }22 btnClose.Visible = blnShowClose;23 blnEnterClose = blnisEnterClose;24 }
搭配一个静态的公共函数
1 #region 显示一个模式信息框 2 /// 3 /// 功能描述:显示一个模式信息框 4 /// 作 者:HZH 5 /// 创建日期:2019-03-04 15:49:48 6 /// 任务编号:POS 7 /// 8 /// owner 9 /// strMessage10 /// strTitle11 /// blnShowCancel12 /// isShowMaskDialog13 /// blnShowClose14 /// isEnterClose15 /// 返回值16 public static DialogResult ShowDialog(17 IWin32Window owner,18 string strMessage,19 string strTitle = "提示",20 bool blnShowCancel = false,21 bool isShowMaskDialog = true,22 bool blnShowClose = false,23 bool blnIsEnterClose = true)24 {25 DialogResult result = DialogResult.Cancel;26 if (owner == null || (owner is Control && (owner as Control).IsDisposed))27 {28 result = new FrmDialog(strMessage, strTitle, blnShowCancel, blnShowClose, blnIsEnterClose)29 {30 StartPosition = FormStartPosition.CenterScreen,31 IsShowMaskDialog = isShowMaskDialog,32 TopMost = true33 }.ShowDialog();34 }35 else36 {37 if (owner is Control)38 {39 owner = (owner as Control).FindForm();40 }41 result = new FrmDialog(strMessage, strTitle, blnShowCancel, blnShowClose, blnIsEnterClose)42 {43 StartPosition = (owner != null) ? FormStartPosition.CenterParent : FormStartPosition.CenterScreen,44 IsShowMaskDialog = isShowMaskDialog,45 TopMost = true46 }.ShowDialog(owner);47 }48 return result;49 }50 #endregion
一些小事件
1 private void btnOK_BtnClick(object sender, EventArgs e) 2 { 3 this.DialogResult = System.Windows.Forms.DialogResult.OK; 4 } 5 6 private void btnCancel_BtnClick(object sender, EventArgs e) 7 { 8 this.DialogResult = System.Windows.Forms.DialogResult.Cancel; 9 }10 11 private void btnClose_MouseDown(object sender, MouseEventArgs e)12 {13 this.DialogResult = System.Windows.Forms.DialogResult.Cancel;14 }15 16 protected override void DoEnter()17 {18 if (blnEnterClose)19 this.DialogResult = System.Windows.Forms.DialogResult.OK;20 }
代码就这么多
用处及效果
用处:一般用在一个需要用户确定的提示上
效果:
调用示例
1 if (FrmDialog.ShowDialog(this, "是否再显示一个没有取消按钮的提示框?", "模式窗体测试", true) == System.Windows.Forms.DialogResult.OK)2 {3 FrmDialog.ShowDialog(this, "这是一个没有取消按钮的提示框", "模式窗体测试");4 }
最后的话
如果你喜欢的话,请到 码云或Github 点个星星吧