C# jak sprawdzić aktywny GroupBox?

0

Witam ponownie :-D

Mam kilkanaście GroupBoxów a w nich różne komponenty. Mam pytanie jak sprawdzić w zdarzeniu tych komponentów, które są w jakim GroupBoxie?
czyli jak kliknę na RadioButtom w GroupBoxie np. o TabIndexie 5 to jak znaleźć najpierw do którego GroupBoxa należy RadioButtom a następnie odczytać Tabindex z jego GroupBoxa?

0

nie bardzo rozumiem czemu chcesz to robic w taki sposob, napisz lepiej co chcesz osiagnac.

void clickHandler(object sender, EventArgs e)
{
//obsluge bledow i wszelkich udziwnien (typu rozbudowana hierarchia kontrolek) musisz sobie dorobic
var control = sender as Control;
var groupBox = control.Parent;
var tabIdx = groupBox.TabIndex;
}
0

oki. Już mowie co chce osiągnąć :-D

Przykładowo mam tablice Byte[] wartość - powiedzmy 50 elementową.
Teraz na formie mam 5 groupboxow i w każdym z nich po 10 Radiobuttonow.

napisałem jedną obsługę zdarzenia dla radiobuttonow. procedura ta sprawdza Tabindex radiobuttona, który wywołał procedurę, wszystko działa dobrze w obrębie jednego groupboxa, ale w drugim groupboksie mam takie same Tabindexy, aby rozróżnić te Tabindexy muszę sprawdzić TabIndex groupboxa i sobie przykładowo obliczyć pozycje tablicy Byte[] Wartosc.

Myslalem tez o parametrze Tag, ale nie wiem jak to obsluzyc :-( Gdybym wiedział jak to bym umiescil tam wlasnie integer z wartoscią przesuniecia tablicy :-)

0

jakis szatanski projekt widze, 50 radio buttonow na jednej formie? ;)
co do Tag to mozesz tak:

control.Tag = 1;
int tagValue = (int)control.Tag;
0

cos mi nie za bardzo działa, kompiluje się ale wywala błąd :-( "Określone rzutowanie jest nieprawidłowe."

private void SD_Freq(object sender, EventArgs e)
        {
            RadioButton RB = (RadioButton)sender;
        
            int NrKan = (int)RB.Tag; //ta linia wywala błąd :-( 
        }
0

pewnie w Tag nie masz inta... uzywasz debuggera? jesli nie to najwyzszy czas zaczac :)

0

właśnie .... w tag wpisuje sobie "1" i inne wartości" ale w Form1.Designer.cs widzę ze wszystkie tagi są w "1" (cudzysłowach)
Mam to zmieniać ręcznie w pliku Form1.Designer.cs (jest tego z 1000 szt) masakra , czy można gdzie we właściwościach ustalić czym ma być TAG ?

0

kto ci takie pieklo zgotowal? czemu recznie, nie znasz funkcji 'znajdz i zamien'?
nie da sie tego zrobic z poziomu designera, to co stamtad idzie do Tag jest stringiem.
zrob tak:

control.Tag = "1";
int tagValue = Convert.ToInt32(control.Tag);
0

Właśnie zauważyłem ze te Tagi to stringi .... wiec sobie właśnie przekonwertowałem na integer :D

Wielkie dzięki .... w końcu napisałem jedną procedurę zamiast 312 :) Procedury te ustalają częstotliwość dźwięku (czyli 8 oktaw * 13 nut w oktawie (jedna to wartość 0) * 24 kanały = 2496 różnych ciągów bajtów do wysłania na SerialPort.

0

Strasznie wiesza :-(

0

w końcu napisałem jedną procedurę zamiast 312 :) Procedury te ustalają częstotliwość dźwięku (czyli 8 oktaw * 13 nut w oktawie (jedna to wartość 0) * 24 kanały = 2496 różnych ciągów bajtów do wysłania na SerialPort.

Nie wiem jak ta twoja forma wygląda, ale nie myślałeś o napisaniu jednej kontrolki o wyglądzie klawiatury fortepianu, i wykrywać w którym miejscu (który klawisz) kliknięto?

0

aby zagrać na 8 oktawach zabraknie klawiszy w klawiaturze ( klawiatura umożliwia odgrywanie jedynie 2 oktaw) raczej myślę o MIDI :D ) ale to kwestia przyszłościowa. Program , który obecnie pisze, ma za zadanie testować mój układ generujący dźwięki .

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