2012-10-21 13 views
5

में वर्णमाला अक्षरों और विशेष वर्णों को अक्षम करना दृश्यमान मूलभूत और मैं वर्णमाला और विशेष वर्णों को अक्षम करने के तरीके पर अनिश्चित हूं।विजुअल बेसिक .NET

मैं केवल उपयोगकर्ता को इनपुट नंबरों में सक्षम होना चाहता हूं।

इम इस कोड का उपयोग कर im पता है कि यह करने के लिए एक आसान तरीका है और सभी मदद

सराहना की मैं संदेश बॉक्स जब मैं इनपुट वर्णमाला अक्षर और जब मैं इनपुट नंबर प्राप्त करें। जब मैं इनपुट नंबर करता हूं तो मैं संदेश बॉक्स नहीं प्राप्त करना चाहता हूं।

Private Sub txtCustom_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtCustom.KeyDown 

    If (e.KeyCode = Keys.Enter) Then 

     e.SuppressKeyPress = True 

     If (e.KeyCode = Keys.A Or Keys.B Or Keys.C Or Keys.D Or Keys.E Or Keys.F Or Keys.G Or Keys.H Or Keys.I Or Keys.J Or Keys.K Or Keys.L Or Keys.M Or Keys.N Or Keys.O Or Keys.P Or Keys.Q Or Keys.R Or Keys.S Or Keys.T Or Keys.U Or Keys.V Or Keys.W Or Keys.X Or Keys.Y Or Keys.Z) Then 

      Beep() 
      MsgBox("Please Input A Numerical Value") 
      txtCustom.Text = "" 

     Else 

      RandNumAllow = txtCustom.Text 

     End If 

    End If 

End Sub 
+1

इस कोड को अनुमति देना चाहते हैं के साथ charractersAllowed का मूल्य जगह ले सकता है केवल काम करने के लिए जब आप लिखते हैं कुंजी दर्ज करें और उस मामले में चार एक पत्र नहीं किया जा सका है। क्या आप सही कोड पोस्ट करना चाहते हैं? – Steve

+1

ऐसे प्रोग्राम की तुलना में और अधिक परेशान नहीं है जो उपयोगकर्ता को दंडित करता है। यह एक छोटे से बिजली के झटके लगाने की तरह है, आपका उपयोगकर्ता जल्दी से तंग आ जाएगा। इसके बजाय, इनपुट जांचने के लिए मान्यकरण ईवेंट का उपयोग करें और कहें, decimal.TryParse()। और त्रुटि सूक्ष्म त्रुटि संकेत प्रदान करने के लिए त्रुटि प्रदाता। –

उत्तर

7

बजाय कुंजी दबाने घटना उपयोग करके देखें:

Private Sub TextBox1_KeyPress(sender As Object, _ 
           e As KeyPressEventArgs) Handles TextBox1.KeyPress 
    e.Handled = Not Char.IsNumber(e.KeyChar) 
End Sub 

लेकिन इस क्लिपबोर्ड का उपयोग करने से कोई रोक नहीं होगा। इसके बजाय मास्कड टेक्स्टबॉक्स नियंत्रण का उपयोग करना शायद बेहतर है।

+0

मैंने मदद के लिए धन्यवाद, एक मुखौटा पाठ बॉक्स का उपयोग करने का फैसला किया, यह पूरी तरह से मैं इसे कैसे चाहता था लेकिन धन्यवाद यह बहुत तेज़ –

+0

यह ब्लॉक (शर्ट + संख्या) विशेष वर्णों को अवरुद्ध नहीं करता है। – jcaruso

+0

यह डिलीट और बैक स्पेस को अक्षम भी करेगा, उन्हें कैसे सक्षम किया जा सकता है? –

1

देर से प्रतिक्रिया के लिए खेद है कि यह कोड क्लिपबोर्ड से प्रतिलिपि बनाने और विशेष वर्णों के लिए शिफ्ट + संख्या के रूप में सभी मुद्दों को हल करेगा, क्योंकि यह TextChanged ईवेंट का उपयोग करता है।

Dim charactersAllowed As String = "1234567890" 
     Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged 
    Dim theText As String = TextBox1.Text 
    Dim Letter As String 
    Dim SelectionIndex As Integer = TextBox1.SelectionStart 
    Dim Change As Integer 
    For x As Integer = 0 To TextBox1.Text.Length - 1 
     Letter = TextBox1.Text.Substring(x, 1) 
     If charactersAllowed.Contains(Letter) = False Then 
      SystemSounds.Beep.Play() 
      theText = theText.Replace(Letter, String.Empty) 
      Change = 1 
     End If 
    Next 
    TextBox1.Text = theText 
    TextBox1.Select(SelectionIndex - Change, 0) 
End Sub 

आप जो कुछ भी वे वर्ण जो आप

संबंधित मुद्दे