Wyszukanie obiektu stworzonego przez kod

0

Witam,

Jak wyszukać w kodzie obiekt(TextBox'a), który został wcześniej wygenerowany przez inną klasę?

Kod tworzący textBox'a w pętli for:

TextBoxCreate[i] = new TextBox();
                        TextBoxCreate[i].Text = "0";
                        TextBoxCreate[i].HorizontalAlignment = HorizontalAlignment.Left;
                        TextBoxCreate[i].VerticalAlignment = VerticalAlignment.Top;
                        TextBoxCreate[i].Margin = new Thickness(76, PosFirstTextBox, 0, 0);
                        TextBoxCreate[i].Name = ListOfTextBox[i] + "_TextBoxCountTowar";
                        MainWin.GridTowar.Children.Add(TextBoxCreate[i]);

oraz pętla wyszukująca i sprawdzająca textbox'a:

for(int i=0;i<ListTextBoxDesign.Count; i++) //For, który sprawdza czy nie pozostał żaden TextBox pusty
            {
                var  FindObject = MainWin.FindName(ListTextBoxDesign[i]) as TextBox;
                MessageBox.Show(FindObject.Name);
                if (FindObject.Text == "" || FindObject.Text == " ")
                {
                    MessageBox.Show("Któreś z pól pozostało puste.", "Błąd!");
                    return;
                }
            }

Pętla ostatnia bez problemu wyszukuje i sprawdza obiekty napisane w xamlu przed działaniem programu, ale gdy dochodzi do obiektu stworzonego przez pierwszą pętle wywala exception object null.

Jakiś pomysł ? Z góry dzięki :)
Pozdrawiam

1

To proste, nie znajduje ci textboxa o takiej nazwie. Zobacz jaką nazwę przypisujesz a jaką szukasz.
Btw, to Findname jest takie sobie, bo pozwala ci wyszukać tylko jeden obiekt i tylko po nazwie. A jakbyś np chcial znaleźć wszystkie textboxy których szerokość jest większa od 50 to robisz tak:

var textboxes = GridTowar.Children.OfType<TextBox>().Where(o => o.Width > 50).ToList();
0
kzkzg napisał(a):

To proste, nie znajduje ci textboxa o takiej nazwie. Zobacz jaką nazwę przypisujesz a jaką szukasz.

Taką samą szukam jaką nazywam. Nawet messageboxa odpalam przed i po zeby spr.

 var FindObject = MainWin.GridTowar.Children.OfType<TextBox>().ToList();

            for (int i=0;i<ListTextBoxDesign.Count; i++) //For, który sprawdza czy nie pozostał żaden TextBox pusty
            {
                if (FindObject[i].Text == "" || FindObject[i].Text == " ")
                {
                    MessageBox.Show("Któreś z pól pozostało puste.", "Błąd!");
                    return;
                }
            }

Twoja metodą zadziałała. Dzięki za pomoc !
Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1