回答
您是否試過SupressKeyPress?
if (e.KeyCode < Keys.D1 || e.KeyCode > Keys.D6 || e.Shift || e.Alt)
{
e.SuppressKeyPress = true;
}
if (e.KeyCode == Keys.Back)
{
e.SuppressKeyPress = false;
}
第二屆如果讓你可以,如果你想改變你寫什麼,按空格鍵。
加限制:到,並使用此:
private void txtField_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
e.Handled = true;
if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
e.Handled = true;
}
如果妳使用WPF,創建你自己TextBox
。如果u需要處理Numpads太然後將它們添加到切換....
public class CustomTextBox : TextBox
{
public CustomTextBox()
{
KeyDown += OnKeyDown;
}
private void OnKeyDown(object sender, KeyEventArgs keyEventArgs)
{
switch (keyEventArgs.Key)
{
case Key.D0:
case Key.D1:
case Key.D2:
case Key.D3:
case Key.D4:
case Key.D5:
case Key.D6:
keyEventArgs.Handled = false;
break;
default:
keyEventArgs.Handled = true;
break;
}
}
}
以下的正則表達式應該工作
Regex rgx = new Regex(@"^[1-6]+$");
rgx.IsMatch("1a23"); //Returns False
rgx.IsMatch("1234"); //Returns True;
你應該能夠與ASP.Net驗證使用和WinForms
https://msdn.microsoft.com/en-us/library/3y21t6y4(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/az24scfc%28v=vs.110%29.aspx
請記住,我建議在提交值後進行驗證,這可能不是您想要的。對我而言,這個問題在這裏不明確。假設你使用的是ASP.Net,並且你想要限制輸入值,那麼關鍵新聞事件解決方案之前的答案應該可以工作,但他們至少需要部分回傳。如果您希望在沒有回帖的情況下進行處理,則需要客戶端腳本。
這是如何做到這一點客戶端的例子:
Restricting input to textbox: allowing only numbers and decimal point
由於示例爲任何號碼,你必須把它限制在數字1 - 6
這裏你有一個簡單的WebForm C#,後面的代碼會提交,它將驗證0-6之間的數字的正則表達式。
HTML
<div class="jumbotron">
<h1>ASP.NET</h1>
<p class="lead">
<asp:TextBox runat="server" ID="tbForValidation"></asp:TextBox>
<asp:Button runat="server" ID="btnSubmit" Text="Validate" OnClick="btnSubmit_Click" />
</p>
</div>
後面的代碼:
protected void btnSubmit_Click(object sender, EventArgs e)
{
Regex regularExpression = new Regex(@"^[0-6]$");
if (regularExpression.IsMatch(tbForValidation.Text))
{
//Is matching 0-6
}
else
{
//Is not matching 0-6
}
}
我也建議你發送請求到服務器之前在客戶端上運行的正則表達式驗證。這不會創建任何不必要的服務器的文本框驗證簡單的請求。
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="Invalid number" ValidationExpression="^[0-6]$" ControlToValidate="tbForValidation"></asp:RegularExpressionValidator>
你可以把這個在KeyPress
事件的文本框,
private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
{
switch (e.KeyChar)
{
//allowed keys 1-6 + backspace and delete + arrowkeys
case (char)Keys.Back:
case (char)Keys.Delete:
case (char)Keys.D0:
case (char)Keys.D1:
case (char)Keys.D2:
case (char)Keys.D3:
case (char)Keys.D4:
case (char)Keys.D5:
case (char)Keys.D6:
case (char)Keys.Left:
case (char)Keys.Up:
case (char)Keys.Down:
case (char)Keys.Right:
break;
default:
e.Handled = true;
break;
}
}
如果按下的鍵是(數字鍵盤)1-6,退格鍵,刪除或arrowkeys允許他們。 如果它是一個不同的鑰匙不要放置它,並說它的處理。我在一個快速項目上測試了這個代碼,它允許我使用數字鍵盤1-6不知道其他數字。如果其他人不工作,只需按照允許的方式添加它們,並且方向鍵未經過測試,但只需左右移動即可。
我會做這樣的事情
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.D1 || e.KeyCode == Keys.D2 || e.KeyCode == Keys.D3 || e.KeyCode == Keys.D4 || e.KeyCode == Keys.D5 || e.KeyCode == Keys.D6)
{
e.Handled = true;
}
}
也許你可以允許使用的控制按鈕以及例如退格
試試這個:
private void textBox1_TextChanged(object sender, EventArgs e)
{
int tester = 0;
try
{
if (textBox1.Text != null)
{
tester = Convert.ToInt32(textBox1.Text);
if (tester >= 30)
{
textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1);
textBox1.Select(textBox1.Text.Length, 0);
}
}
}
catch (Exception)
{
if (textBox1.Text != null)
{
try
{
if (textBox1.Text != null)
{
textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1);
textBox1.Select(textBox1.Text.Length, 0);
}
}
catch (Exception)
{
textBox1.Text = null;
}
}
}
}
使用正則表達式@ 「^ [1-6] $」,以驗證這種類型的輸入文本中。
這會限制你1 - 6. 我不知道你想如何使用它。因此,我只是給你提供限制的代碼。 這是非常古老的,更像平民。
首先,我做了一個表格:
然後我下面的代碼添加到按鈕:
int testValue;
// only numbers will drop into this block
if(int.TryParse(textBox1.Text, out testValue)){
// hard coded test for your desired values
if(testValue == 1 || testValue == 2 || testValue == 3 || testValue == 4 || testValue == 5 || testValue == 6){
// this is here just to give us proof of the return
textBox1.Text = "Yep, 1 - 6";
}
else{
// you can throw an exception here, popup a message, or populate as I did here.
// this is here just to give us proof of the return
textBox1.Text = "Nope, not 1 - 6";
}
}
// you can throw an exception here, popup a message, or populate as I did here.
else{
textBox1.Text = "Not a number";
}
如果輸入任何非數字的文本框顯示「沒有一個數」。
1 - 6會顯示「是,1 - 6」。
任何數字<或> 1-6將閱讀「不是,1 - 6」。
祝你好運!
- 1. 文本框掩碼只允許數字
- 2. 只允許在文本框C#數字
- 3. 輸入文本框字段只允許字符不允許數字,但允許空間?
- 4. 只允許文本框中的整數
- 5. 文本框只允許使用字母
- 6. 只允許範圍內的數字輸入到文本框
- 7. 文本框只允許浮點數
- 8. AngularJS問題只允許將數字輸入到文本框中
- 9. 只允許數字和ctrl + a,ctrl + v,ctrl + c到文本框
- 10. 格式c#文本框只允許數字字符
- 11. 允許只有字母數字在文本框使用jQuery
- 12. 只允許GWT中的文本框中的數字?
- 13. 如何只允許angularjs中的文本框中的數字?
- 14. 只允許整數和值應介於1和100之間
- 15. 只允許文本框中的數字值
- 16. 只允許文本框中的數字值?
- 17. 如何只允許文本框中的十進制數字
- 18. 如何限制輸入文本框允許只有0和1
- 19. c#正則表達式只允許1和n之間的數字
- 20. 只允許在文本框中輸入數字
- 21. 只允許在WPF文本框中輸入數字
- 22. 如何只允許數字和點在文本框vb.net
- 23. 文本框只允許數字和逗號
- 24. 只允許數字/年之間的圓括號
- 25. 正確的文本框,只允許數字和小數在視覺基本
- 26. 只允許使用AngularJs的文本框中的字符
- 27. 僅允許使用JavaScript的文本框值從1到11
- 28. 如何只允許日文字符在文本框中
- 29. 只允許數字字符
- 30. 只允許文本框中的特定字符
wpf或winforms,或...? – thumbmunkeys 2015-03-30 18:22:34
你應該更具體。你使用什麼框架(asp.net,winforms,wpf)? – Michael 2015-03-30 18:22:49
@T-Rex我可以誠實地推薦的最好的事情是,你先嚐試一下自己的事情,然後告訴我們你做了什麼以及你在哪裏遇到問題..這並不難,但你也不應該只是坐下來等待有人給你/提供你一個解決方案 – MethodMan 2015-03-30 19:01:16