Jak zaznaczyć kontrolkę w kontrolce

0

Stworzyłem swoją kontrolkę UserControl1.
Do niej włożyłem inną kontrolkę.
Jak teraz włożę kontrolkę UserContol1 do Form1, to nie mogę zaznaczyć buttona, jak zrobić tak, abym mógł?

0

bo UserControl staje się zwykłą kontrolką i jak chcesz coś na niej zmienić to musisz to robić na niej a nie na form

0

Rozumiem, ale np. w TabControl są TabPages. Mimo, tego że dodaje tabcontrol, to jednak automatycznie się dodaje TabPages. Jak dodać kontrolkę z poziomu kodu c# do usercontrol1 aby móc zaznaczyć ją w designerze w form

0

juz ci piszę, musisz zrobic do tej wewnetrznej kontrolki/właściwości akcesor. Jeżeli nie wiesz co to takiego to podpowiem. Jeżeli mam jakaś klasę, a ona ma prywatne pole będące obiektem klasy Button, to żeby spoza klasy uzyskac do tego buttona dostep, tworzymy specyficzną metodę zwana właśnie akcesorem. Wygląda onammniej wiecej tak (na przykładzie buttona zawartego w klasie WiekszyButton ;] )

class WiekszyButton : System.Windows.Forms.Button
{
.
.
private Button wewnetrznyButton = new Button(); // to jest to prywatne pole
.
.
public Button WewnetrznyButton
{
get {return this.wewnetrznyButton;}
set {this.wewnetrznyButton = value;}
}
//to powyzej to wlasnie akcesor. Moze zawierac modylu get i set, albo ktorys znich z osobna (ackolwiek samotne uzycie set; jest bardzo rzadkie bo niespecjalnie przydatne). Teraz masz dostęp z zewnatrz do prywatnego pola klasy WiekszyButton.
}

jest to dosc zagmatwane, ale ogolnie schemat wyglada tak:

public <typ_prywatnego_pola><nazwa_akcesora>
{
get{return <pole_prywatne>;}
set{<pole_prywatne>=value;}
}

Warto zauwazyc, ze mozna tutaj dodawac dodatkowe warunki, na przykład:

.....
set 
{
if (value !=0) this.JakisInt = value;
else this.JakisInt=1;
}
.....

Takie cos moze byc przydatne, jezeli bardzo nie chcemy, zeby jakas liczba stala sie zerem, w ogole get i set moga byc bardzo rozbudowanymi funkcjami. Jak bedziesz mial jakies pytania to pm ;)

Z poziomu kodu akcesora uzywa sie tak, jakby byl nie fukncja, ale polem publicznym, czyli zgodnie z tym co pisalem wczesniej:

WiekszyButton a=new WiekszyButton();
a.WewnetrznyButton.Text = "haha zmienilem text prywatnego pola spoza klasy";

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