[ dava @ 02.08.2008. 11:21 ] @
Ovim kodom dinamicki kreiram kontrole:

Code:

        void CreateTxt(int MAX)
        {
            int i;
            TextBox[] t = new TextBox[MAX];
            int tTop;
            int tLeft;

            tTop = 50;
            tLeft = 50;

            for (i = 0; i < MAX; i++)
            {
                t[i] = new TextBox();
                
                t[i].Location = new Point(tLeft, tTop);
                
                t[i].TabIndex = i;
                t[i].Size = new Size(100, 20);

//                t[i].Validating += new CancelEventHandler(Form1_Validating);
                Controls.Add(t[i]);
                
                tTop = tTop + 30;
//              tLeft = tLeft;
            }

        }


Pokusavao sam i nisam uspio da napravim dogadjaj validating za ove kontrole. Treba mi da kad unosim vrijednosti i napustam textBox da mi se pozove metoda validateing.
[ Dejan Vesic @ 02.08.2008. 12:42 ] @
Prvo, pobrini se da procedura koja radi validaciju ISKLJUČIVO radi sa prosleđenim argumentima A NE sa globalnim imenima:

Code:

private void textBox1_Validating(object sender, CancelEventArgs e)
{
    if(sender is TextBox)
    {
        TextBox currControl = sender as TextBox;
        
        if(currControl.Text.Trim().ToLowerInvariant().StartsWith("a"))
        {
            // Ako tekst počinje sa "a", nema izlaska iz kontrole
            e.Cancel = true;
        }
    }
}


Sad, sve radi kao što je i očekivano:

Code:

void CreateTxt(int MAX)
{
  int i;
  TextBox[] t = new TextBox[MAX];
  int tTop;
  int tLeft;

  tTop = 50;
  tLeft = 50;

  for (i = 0; i < MAX; i++)
  {
      t[i] = new TextBox();
      t[i].Location = new Point(tLeft, tTop);
      t[i].TabIndex = i;
      t[i].Size = new Size(100, 20);

      t[i].Validating += textBox1_Validating;
      Controls.Add(t[i]);
      tTop = tTop + 30;
  }
}