之前用Qt和C++Builder的時候,裏面都有一個InputDialog輸入框。可是到C# winform裏面沒有這個。那麼要實現這個效果怎麼辦,固然也是比較容易的。佈局
先看下效果:ui
點擊顯示輸入框按鈕,彈出輸入框spa
在書入框內輸入132456,而後按下:肯定或者回車鍵,效果以下:.net
以上就是輸入框的整個效果。code
如今就上核心代碼。orm
一、首先添加新建項:C#窗體blog
二、添加控件,並修改佈局以下效果事件
修改TextBox控件name爲txtString,get
修改button1控件name爲btnOK,Text爲肯定,input
修改取消button2控件name爲btnCancel,Text爲取消。
而後在按下F7,在代FrmInputDialog類裏面添加代碼:
public delegate void TextEventHandler(string strText); public TextEventHandler TextHandler;
三、雙擊按鈕分別添加按鈕事件,代碼以下:
private void btnOk_Click(object sender, EventArgs e) { if (null != TextHandler) { TextHandler.Invoke(txtString.Text); DialogResult = DialogResult.OK; } } private void btnCancel_Click(object sender, EventArgs e) { DialogResult = DialogResult.Cancel; }
四、添加TextBox的Key_Press事件,代碼以下:
private void txtString_KeyPress(object sender, KeyPressEventArgs e) { if (Keys.Enter == (Keys)e.KeyChar) { if (null != TextHandler) { TextHandler.Invoke(txtString.Text); DialogResult = DialogResult.OK; } } }
五、而後在項目中添加新建項:C#類
命名爲:InputDialog
而後修改InputDialog.cs中代碼:
public static class InputDialog { public static DialogResult Show(out string strText) { string strTemp = string.Empty; FrmInputDialog inputDialog = new FrmInputDialog(); inputDialog.TextHandler = (str) => { strTemp = str; }; DialogResult result = inputDialog.ShowDialog(); strText = strTemp; return result; } }
以上就是自定義輸入框的核心代碼。
用法示例:
在按鈕事件下添加代碼:
string strText = string.Empty; InputDialog.Show(out strText);
strText就是從輸入框拿到的內容。就這麼簡單。