checkbox z innej klasy

0

Na głównej formie mam chekbox'a i chciałbym z innej klasy stworzonej jako odrębny plik zarządzać checked wspomianego checkbox'a. Tj. ustawiać True, False.

0

Przekaż tego Checkboxa przez konstruktor klasy. Taki Checkbox to obiekt typu referencyjnego więc zostanie skopiowana tylko referencja do niego, która będzie wskazywała na właściwy obiekt w pamięci. Będziesz mógł nim zarządzać z innej klasy.

0

Dziękuję za odpowiedź, lecz muszę zarazem powiedzieć, że na chwilę obecną, gdzie jestem na etapie nauki C# to co piszesz jest dla mnie trudne. Czy mógłbym poprosić o jakiś przykład?

0

Nie wiem czy w coś zrozumiesz z tego, bo brakuje Ci naprawdę podstaw jeżeli nie zrozumiałeś tego co napisałem. Ale ok:

Klasa, która przejmuje kontrolkę do zarządzania: (Zakładając, że klasa jest np. backendem do okna.)

    public partial class NewWindow : Window {
		private CheckBox _passedCheckBox;
	
		// Domyślny konstruktor można wywalić jeżeli nie potrzebujesz go do niczego.
        public NewWindow() {
            InitializeComponent();
        }
	
		public NewWindow(CheckBox passedCheckBox){
			InitializeComponent();
			this._passedCheckBox = passedCheckBox;
		}
    }

Zaś żeby przekazać kontrolkę robisz po prostu:

var window = new NewWindow(this.CheckBoxToPass);
0

No i dziękuję bardzo. Wszystko ok. Rozumiem, że jak pokombinuje, to również jest do zrobienia przy pomocy klasy, która nie jest backendem do okna?

0

Dokładnie tak

0

Przekazywanie kontrolek bezpośrednio jest przykładem kodu spaghetti, który szybko zacznie boleć. Jakakolwiek zmiana kontrolki będzie wymagała niepotrzebnej zmiany klas zależnych.
Już lepiej zrobić w formatce z okienkiem właściwość, która opakuje tego checkboxa, dzięki czemu np. zmiana checkboxa na coś innego, albo dodanie kolejnych elementów, którymi będziesz chciał sterować z drugiej formatki, nie będzie wymagała zmiany konstruktora.
Chociaż to też nie jest idealne rozwiązanie, ale na razie powinno wystarczyć.

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