Benutzer mit den meisten Antworten
Nach jeder Tastertureingabe überprüfen

Frage
-
Hallo liebe Programmierer,
ich sitz vor nem Problem und weiß grad nimmer weiter und zwar möchte, dass wenn man beispielsweise "Hallo" in ein DataGridView Feld einträgt soll das Programm nach jedem die eingabe überprüfen. Also nach der eingabe von dem "H" dann vom "a" usw.
MFG
Antworten
-
Hallo B.,
"zum Beispiel" so:
using System; using System.Data; using System.Windows.Forms; namespace WinDgvValidating { public partial class Form1 : Form { public Form1() { InitializeComponent(); } DataGridView dgv = new DataGridView(); DataTable dt = new DataTable(); private void Form1_Load(object sender, EventArgs e) { dgv.Dock = DockStyle.Fill; Controls.Add(dgv); dt.Columns.Add("Name"); dt.Rows.Add(Environment.UserName); dgv.DataSource = dt; dgv.EditingControlShowing += Dgv_EditingControlShowing; dgv.CellEndEdit += Dgv_CellEndEdit; } void Dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (tb == null) return; tb.TextChanged -= Tb_TextChanged; } DataGridViewTextBoxEditingControl tb; int spaltenIndex = 0; void Dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (dgv.CurrentCell.ColumnIndex != spaltenIndex) return; tb = e.Control as DataGridViewTextBoxEditingControl; if (tb == null) return; tb.TextChanged += Tb_TextChanged; } void Tb_TextChanged(object sender, EventArgs e) { if (sender is TextBox) ValidiereText((TextBox)sender); } private void ValidiereText(TextBox textBox) { if (textBox.Text.Length > Environment.UserName.Length) { dgv.CurrentCell.ErrorText = "Darf nicht länger als Benutzername sein!"; dgv.EndEdit(); } else { dgv.CurrentCell.ErrorText = ""; } } } }
ciao Frank- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 24. Mai 2011 13:11
Alle Antworten
-
Hi,
je nach genauer Anforderung wären die KeyDown, KeyPress und/oder KeyUp Ereignisse von dir zu behandeln.
http://msdn.microsoft.com/de-de/library/system.windows.forms.control.keypress.aspx
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo B.,
"zum Beispiel" so:
using System; using System.Data; using System.Windows.Forms; namespace WinDgvValidating { public partial class Form1 : Form { public Form1() { InitializeComponent(); } DataGridView dgv = new DataGridView(); DataTable dt = new DataTable(); private void Form1_Load(object sender, EventArgs e) { dgv.Dock = DockStyle.Fill; Controls.Add(dgv); dt.Columns.Add("Name"); dt.Rows.Add(Environment.UserName); dgv.DataSource = dt; dgv.EditingControlShowing += Dgv_EditingControlShowing; dgv.CellEndEdit += Dgv_CellEndEdit; } void Dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (tb == null) return; tb.TextChanged -= Tb_TextChanged; } DataGridViewTextBoxEditingControl tb; int spaltenIndex = 0; void Dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (dgv.CurrentCell.ColumnIndex != spaltenIndex) return; tb = e.Control as DataGridViewTextBoxEditingControl; if (tb == null) return; tb.TextChanged += Tb_TextChanged; } void Tb_TextChanged(object sender, EventArgs e) { if (sender is TextBox) ValidiereText((TextBox)sender); } private void ValidiereText(TextBox textBox) { if (textBox.Text.Length > Environment.UserName.Length) { dgv.CurrentCell.ErrorText = "Darf nicht länger als Benutzername sein!"; dgv.EndEdit(); } else { dgv.CurrentCell.ErrorText = ""; } } } }
ciao Frank- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 24. Mai 2011 13:11