2013-07-09 6 views
8

Ich verwende Microsoft Visual C# 2010 Express. Wenn ich den Wert von numericUpDown mithilfe von Pfeilen ändere, wird meine Schaltfläche aktiviert. Aber ich möchte auch meine Schaltfläche aktivieren, wenn ich den Wert von numericUpDown ändern, indem Sie den Text direkt ändern.TextChanged Ereignis von NumericUpDown

Ich verwende den folgenden Code ein:

private void numericUpDown1_ValueChanged(object sender, EventArgs e) 
{ 
    button1.Enabled = true; 
} 
+0

Und was ist das Problem? – Abbas

+1

Versuchen Sie, den Cursor des numerischenUpDown-Steuerelements zu fokussieren, nachdem Sie die Nummer –

+0

geändert haben, oder drücken Sie die Eingabetaste. Sie können das Ereignis keypress auch einfach abonnieren, aber denken Sie daran, dass der Text noch nicht validiert ist. Wenn Sie den Wert dann aufrufen, erhalten Sie den alten Wert. Wenn Sie jedoch den Wert numericUpdown innerhalb des Ereignisses button.Click aufrufen, wird er bereits geändert. – Martheen

Antwort

16

Sie müssen möglicherweise TextChanged Ereignis verwenden, anstatt ValueChanged zu verwenden. Das Ereignis Wert geändert muss nach dem Ändern des Werts gedrückt werden, damit ValueChanged ausgelöst wird.

Was MSDN sagt über NumericUpDown.ValueChanged Ereignis

Für das Valuechanged Ereignis auftritt, kann die Value-Eigenschaft in Code geändert werden, indem die nach oben oder unten Taste klicken, oder durch den Benutzer einen neuen Wert eingeben das wird von der Steuerung gelesen. Der neue Wert wird gelesen, wenn der Benutzer die EINGABETASTE drückt oder sich von der Steuerung entfernt. Wenn der Benutzer einen neuen Wert eingibt und dann auf die Schaltfläche Nach oben oder Nach unten klickt, wird das ValueChanged-Ereignis zweimal auftreten, MSDN.

Bindung TextChanged Ereignis.

private void TestForm_Load(object sender, EventArgs e) 
{ 
    numericUpDown1.TextChanged += new EventHandler(numericUpDown1_TextChanged); 
} 

Erklärung Textchanged-Ereignis.

void numericUpDown1_TextChanged(object sender, EventArgs e) 
{ 
    button1.Enabled = true; 
} 
+0

Ist es möglich, dass, wenn ich den Wert ändert, die Schaltfläche aktiviert wird, ohne die Eingabe zu drücken ?? – Lany

+0

Haben Sie das TextChanged-Ereignis versucht? – Adil

+0

Ja, ich habe das versucht ... hier nicht anwendbar. aber ja, es kann durch Drücken der Eingabetaste erfolgen. btw thankz :) – Lany