| 

.NET C# Java Javascript Exception

2
Ich habe ein Benutzersteuerelement auf Basis der Textbox. Diese soll Datenbindung haben und Dezimalzahlen aufnehmen können.

Die hinzugefügte AutoWrite-Methode bringt Fehler, wenn ich in der Textbox den Dezimalpunkt eintrage.

Daher suche ich eine Möglichkeit, in der eine Windows-Forms Anwendung erkennen kann, wenn sich der Wert geändert hat bevor er geschrieben wird und ich eine Schaltfläche dann aktivieren kann um den Wert zu schreiben. Der TextChanged ist da ja nicht der richtige, oder?
News:
16.03.2011
MyKey0815 1,6k 2 9
Um welche UI Technologie geht es? WindowsForm oder WPF oder ASP.net ?
Jorgen Schumann 16.03.2011
Sorry - hab´s hinzugefügt - Ist eine WindowsForms-Applikation
MyKey0815 16.03.2011
@edit: Tags hinzugefügt
KHoffmann 16.03.2011
2 Antworten
4
Dann ist KeyPress das was Du suchst:

Beispiel von dotnet-snippets:
//---------------------------------------------------------------------
/// <summary>
/// Erlaubt nur numerische Eingaben (HEX inklusive),
/// das Minuszeichen, den Dezimalpunkt und Bearbeitungszeichen
/// (Backspace)
/// </summary>
/// <param name="e"></param>
protected override void OnKeyPress(KeyPressEventArgs e)
{
base.OnKeyPress(e);

NumberFormatInfo numberFormatInfo =
CultureInfo.CurrentCulture.NumberFormat;
string decimalSeperator = numberFormatInfo.NumberDecimalSeparator;
string groupSeperator = numberFormatInfo.NumberGroupSeparator;
string negativeSign = numberFormatInfo.NegativeSign;

string keyInput = e.KeyChar.ToString();

if (char.IsDigit(e.KeyChar))
{
// OK
}
else if ((keyInput.Equals(decimalSeperator)) ||
(keyInput.Equals(groupSeperator)) ||
(keyInput.Equals(negativeSign)))
{
// OK
}
else if (e.KeyChar == '\b')
{
// OK
}
else if (this.AllowSpace && e.KeyChar == ' ')
{
// OK
}
else
{
// ungültige Eingabe:
e.Handled = true;
}
}
16.03.2011
Jorgen Schumann 1,6k 2 9
danke für das Codebeispiel.

Das heißt aber nicht, dass dann der Wert schon von der BindingSource erfasst wurde bzw. bemerkt wird. Erst wenn ich aus dem Textfeld wechsel bekommt das die BindingSource mit, weil es dann den Wert schreiben soll/will
MyKey0815 16.03.2011
0
wie wärs denn damit:
Parse:
Tritt ein, wenn der Wert eines datengebundenen Steuerelements geändert wird

Hier noch das Codebeispiel:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler TextBox1.DataBindings("Text").Parse, AddressOf MySub
End Sub

Sub MySub(ByVal sender As Object, ByVal e As System.Windows.Forms.ConvertEventArgs)
'Was auch immer'
End Sub

Und hier noch der Link zur MSDN
Und noch ein Link zur MSDN
16.03.2011
DerPunk 1,2k 1 7
DerPunk 1,2k 1 7

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH