c# znajdowanie indexow w dynamicznym textboxie

c# znajdowanie indexow w dynamicznym textboxie
CC
  • Rejestracja:prawie 7 lat
  • Ostatnio:prawie 6 lat
  • Postów:7
0

Witam,

Jestem dość tępy i nie potrafię szukać rozwiązań, utknąłem w pewnym miejscu przy robieniu gry Sudoku i nie wiem co robić dalej.

Kopiuj
        public TextBox[,] Tablica = new TextBox[9, 9];

        public void Start_Gra_Click(object sender, EventArgs e)
        {
            Tablica0 = Lvl();

            for (int X = 0; X < 9; X++)
            {
                for (int Y = 0; Y < 9; Y++)
                {
                        Tablica[X, Y] = new TextBox();
                        Tablica[X, Y].MaxLength = 1;
                        Tablica[X, Y].FontSize = 25;
                        Tablica[X, Y].HorizontalAlignment = Center;
                        if (Tablica0[X, Y] == 0) {}
                        else { Tablica[X,Y].Text = Tablica0[X, Y].ToString(); }

                        Tablica[X, Y].TextChanged += Tablica_TextChanged;
                        SudokuGrid.Children.Add(Tablica[X,Y]);
                        Grid.SetRow(Tablica[X, Y], X);
                        Grid.SetColumn(Tablica[X, Y], Y);
                }
            }
        }

^Tutaj wszystko akurat jest spoko, dynamicznie eventy są dodawane bla bla bla.

Kopiuj
        void Tablica_TextChanged(object sender, EventArgs e)
        {
            TextBox Tb = (TextBox)sender;
            if (Regex.IsMatch(((TextBox)sender).Text, "([^1-9])"))
            {
                ((TextBox)sender).Text = "";
            }
        }

^Tutaj mam już schodki, o ile mam już możliwość, aby w textboxie występowały tylko liczby od 1-9 oraz długości równej 1, a mianowicie jak zrobić, abym w momencie zmieniania wartości w którymś z textboxow (załóżmy o indexie [4,5]) kod będzie pobierał indexy tego texblocka w którym coś wpisaliśmy. nie mam bladego pojęcia jak zrobić coś takiego, a na inny pomysł nie mogę wpaść zbytnio

Gdyby ktoś mnie nie rozumiał, bo mnie nikt nie rozumie to co gadam (za głupi jestem) dołączę graficzną wersje tego, co chciałem powiedzieć
Obrazek (take note: na screenie widać textboxy i texblocki, obecnie są to same texblocki)
Czerwony kwadrat - przykładowy textbox, w którym wpisuję jakąś wartość
niebieskie linie to pętla która by przeczesywała Indexy tego Textboxa, w którym coś wpisaliśmy następująca [1-9, 5] a następnie [4, 1-9]. (przykładowy index: [4,5]) Jednak nie wiem jak zrobić, aby odgórnie wybrać indexy wybranego textboxa w którym coś wppisywaliśmy

adam.filipek
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:18
1

Nie jestem pewien, czy dobrze zrozumiałem o co pytasz -

odgórnie wybrać indexy wybranego textboxa w którym coś wppisywaliśmy

, ale może to ci coś pomoże.

W pętlach gdzie tworzysz textboxy nadawaj wartość właściwości Tag, np:

Kopiuj
            textBox.Tag = X * 10 + Y;

a potem w evencie:

Kopiuj
            int tag = Convert.ToInt32(((TextBox)sender).Tag);
            int X = tag / 10;
            int Y = tag % 10;

i masz dokładnie takie same X i Y jakie nadałeś im w pętlach.

edytowany 3x, ostatnio: adam.filipek
adam.filipek
Oczywiście zamiast "X*10+Y", możesz tam wrzucić, Structa z x, y, albo KeyValuePair albo i własną klasę.
CC
  • Rejestracja:prawie 7 lat
  • Ostatnio:prawie 6 lat
  • Postów:7
0

działa ładnie, dziękuję za pomoc.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.