none
Nach jeder Tastertureingabe überprüfen RRS feed

  • 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

    Montag, 2. Mai 2011 13:22

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
    Montag, 2. Mai 2011 14:55

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
    Montag, 2. Mai 2011 14:47
    Moderator
  • 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
    Montag, 2. Mai 2011 14:55