Seryjna zmiana tych samych parametrów różnych elementów

0

Cześć wszystkim.

Czy istnieje możliwość jednoczesnej zmiany tego samego parametru (np visible typu Boolean) dla wielu różnych elementów na parametr przeciwny lub zadany/wskazany? Jeśli tak to co na to zezwala?

Mam np taką listę elementów:

BTN_GVtabela_1_2_1_posiadane_zasoby_grunty_DodajNowaPozycje.Visible = false;
            BTN_GVtabela_1_2_1_posiadane_zasoby_grunty_AnulujDodawanieNowaPozycje.Visible = true;
            Lbl_GVtabela_1_2_1_posiadane_zasoby_grunty_NowaPozycjaGrunty.Visible = true;
            TB_GVtabela_1_2_1_posiadane_zasoby_grunty_NowaPozycjaGrunty.Visible = true;
            Lbl_GVtabela_1_2_1_posiadane_zasoby_grunty_NowaPozycjaPowierzchniaWHa.Visible = true;
            TB_GVtabela_1_2_1_posiadane_zasoby_grunty_NowaPozycjaPowierzchniaWHa.Visible = true;
            Lbl_GVtabela_1_2_1_posiadane_zasoby_grunty_NowaPozycjaPosiadanieZalezne.Visible = true;
            ChB_GVtabela_1_2_1_posiadane_zasoby_grunty_NowaPozycjaPosiadanieZalezne.Visible = true;
            Btn_GVtabela_1_2_1_posiadane_zasoby_grunty.Visible = true;

...i czy można zrobić by parametr wszystkich przyjął wartości przeciwne do posiadanych lub taki jaki zostanie wskazany?

2

Stwórz tablicę tych kontrolek raz w konstruktorze. Lecisz po tej tablice w pętli tb[i].Visible = ! tb[i].Visible;
Zamiast tablicy możesz użyć refleksji.

0
_13th_Dragon napisał(a):

Stwórz tablicę tych kontrolek raz w konstruktorze. Lecisz po tej tablice w pętli tb[i].Visible = ! tb[i].Visible;
Zamiast tablicy możesz użyć refleksji.

Widzę, że podany przykład zmienia wartość visible na przeciwną.

tb[i].Visible = ! tb[i].Visible;

...a co jeśli chciałbym zmienić na konkretną np by wszystkie bez względu na posiadaną przybrały wartość "false"?

6
Neosphoros napisał(a):

Widzę, że podany przykład zmienia wartość visible na przeciwną.

tb[i].Visible = ! tb[i].Visible;

...a co jeśli chciałbym zmienić na konkretną np by wszystkie bez względu na posiadaną przybrały wartość "false"?

Wtedy Google: kurs c# podstawy

1

@Neosphoros:

...a co jeśli chciałbym zmienić na konkretną np by wszystkie bez względu na posiadaną przybrały wartość "false"?

tb[i].Visible = false;
0

Możesz np użyć metody

UstawWartosc(bool wsk)
{
for (int i=0; i<tb.Length; i++)
tb[i].Visible = wsk;
}

0
1a2b3c4d5e napisał(a):

@Neosphoros:

...a co jeśli chciałbym zmienić na konkretną np by wszystkie bez względu na posiadaną przybrały wartość "false"?

tb[i].Visible = false;

Ok. Zmiana wydaje się łatwa, ale jak (czy w ogóle można?) budować (przechowywać w niej) tablicę wskazując jednocześnie w niej wartość właściwości obiektu (np bool, true lub false)? Czy budując tablicę można wskazać w niej wartość parametrów czy może jednak nie i trzeba to zadeklarować po za granicami tablicy?

1

@Neosphoros:

Chciałbyś mieć tablice zawierającą to jedno property powiązaną z obiektem?

czyli np. tablica [true, true, false]

która wie że pierwsze true jest związane z jakąś tam kontrolką?

Nie. Musiałbyś to opakować w jakiś inny obiekt - zrobić klasę zawierającą wartość i powiązanie, lub po prostu mieć zamiast samych wartości danego property, to całe obiekty.

O ile widzę jakąś tam potencjał do optymalizacji w tym, to na razie raczej utrudniłbyś sobie życie

Miej po prostu tablicę/listę kontrolek i tyle.

0
1a2b3c4d5e napisał(a):

@Neosphoros:

Chciałbyś mieć tablice zawierającą to jedno property powiązaną z obiektem?

czyli np. tablica [true, true, false]

która wie że pierwsze true jest związane z jakąś tam kontrolką?

Nie. Musiałbyś to opakować w jakiś inny obiekt - zrobić klasę zawierającą wartość i powiązanie, lub po prostu mieć zamiast samych wartości danego property, to całe obiekty.

O ile widzę jakąś tam potencjał do optymalizacji w tym, to na razie raczej utrudniłbyś sobie życie

Miej po prostu tablicę/listę kontrolek i tyle.

Więc chyba nazywam to w zły sposób bo taka funkcjonalność o jakiej myślę wydawać by się mogło powinna być podstawową do masowej edycji parametrów wielu elementów bez potrzeby wielokrotnego wypisywania cały czas szeregu ich nazw. Spróbuję przedstawić mój punkt widzenia za pomocą pseudo-kodu (nie patrz na rodzaj nawiasów bo te na pewno będą niewłaściwe):

Deklaruje listę elementów z jednoczesną deklaracja parametrów/własności tych elementów:

lista/tablica elementów (nazwa_listy)
{
textbox1.visible = true;
label1.visible = false;
button1.visible = true;
}

Wywołanie listy, czyli jednoczesne przypisanie elementom listy - własności wynikającej z ich deklaracji w liście:

lista_elementów();

Wywołanie listy z taką samą zmiana własności, czyli jednoczesne przypisaniem wszystkim elementom listy własności visible = false:

lista_elementów[i].visible = false;

Wywołanie listy z zmiana własności visible elementów na przeciwną (czyli to co miało true, zmieni się na false, a to co false - na true):

lista_elementów[i].visible != lista_elementów[i].visible;

Jeśli mimo wszystko nie można wykonać tego w ten konkretny sposób, to czy jest inna podobna ewentualność?

3

Jest możliwe, rozwiązanie dostałeś dwa dni temu, a że nie znasz podstaw to nie rozumiesz jak to zrobić.
Więc powtórzę po raz kolejny: kurs c# podstawy

Control[] list=new Control[] { textbox1,label1,button1 };

foreach(Control cnt in list) cnt.Visible=true;
foreach(Control cnt in list) cnt.Visible=false;
foreach(Control cnt in list) cnt.Visible=!cnt.Visible;

Nie powtarzaj losu @eninede, przeczytaj jakieś podstawy aby rozumiałeś nakierowania.

1

@Neosphoros:

Funkcjonalność zmiany wszystkich elementów tablicy można napisać w formie proceduralnej, obiektowej a także programowania funckyjnego. Możliwości jest w odpór ...
Ale to trzeba elementarz języka poznać.

Środowiska GUI w 2/3 mają tablicę wszystkich dzieci rodzica za darmo. Mozę sie nazywać Controls(), GetControls() czy jeszcze inaczej.
Ale nie mam zamiaru pogłębiać wiedzy nt muzealnego środowiska, którego nigdy nie użyję.

Twój brat bliźniak @eninede (ale to nie ty, coooo???) by wkleił przypadkowo wylosowany kod z SO i pokazał swoje wyższość nad złym forum.

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