以前用Qt和C++Builder的時候,裡面都有一個InputDialog輸入框。但是到C# winform裡面沒有這個。那麼要實現這個效果怎麼辦,當然也是比較容易的。 先看下效果: 點擊顯示輸入框按鈕,彈出輸入框 在書入框內輸入132456,然後按下:確定或者回車鍵,效果如下: 以上就是輸入框的整 ...
以前用Qt和C++Builder的時候,裡面都有一個InputDialog輸入框。但是到C# winform裡面沒有這個。那麼要實現這個效果怎麼辦,當然也是比較容易的。
先看下效果:
點擊顯示輸入框按鈕,彈出輸入框
在書入框內輸入132456,然後按下:確定或者回車鍵,效果如下:
以上就是輸入框的整個效果。
現在就上核心代碼。
1、首先添加新建項:C#窗體
2、添加控制項,並修改佈局如下效果
修改TextBox控制項name為txtString,
修改button1控制項name為btnOK,Text為確定,
修改取消button2控制項name為btnCancel,Text為取消。
然後在按下F7,在代FrmInputDialog類裡面添加代碼:
public delegate void TextEventHandler(string strText); public TextEventHandler TextHandler;
3、雙擊按鈕分別添加按鈕事件,代碼如下:
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; }
4、添加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; } } }
5、然後在項目中添加新建項: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就是從輸入框拿到的內容。就這麼簡單。