Ik heb een base-form gemaakt (BaseOkCancelButtonForm) die 2 buttons bevat: een Ok button, en een Cancel button.
Deze base form heeft ook een aantal properties, die er als volgt uit zien:
De buttons (btnOk & btnCancel) zijn beiden private op de form.
Als ik nu een form afleid van deze base-form, en ik zet de CancelButtonText property in de designer op een andere waarde, en ik rebuild het project, dan loopt alles zoals verwacht: de Text property van de Cancel Button blijft op de waarde staan die ik toegekend heb.
Doe ik echter hetzelfde met de CancelButtonVisible property, dan loopt het mis. Als ik deze property op false zet, dan zie ik in de designer wel dat die button invisible wordt (maw, ik zie hem niet meer).
Echter, als ik het project opnieuw build, dan is die property terug op true gezet.
Als ik echter de btnOk & btnCancel buttons protected maak ipv private, dan werkt die CancelButtonVisible property wel.
Echter, dit zou imho helemaal niet hoeven te gebeuren; ik zou die button niet protected moeten maken (en dat wil ik trouwens ook niet).
Dus, waarom werkt de Visible property niet zoals verwacht, terwijl andere properties dat wel doen
En nog beter: hoe kan ik het oplossen ?
Ik kan er natuurlijk wel rondwerken, door in de constructor van m'n sub-form die property te gaan zetten, en deze properties niet meer zichtbaar te maken in het property window (door de Browsable attribute op false te zetten), maar ik zou het toch liever op een andere manier oplossen.
Deze base form heeft ook een aantal properties, die er als volgt uit zien:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
| [Browsable (true)] [Category ("Design")] [DesignerSerializationVisibility (DesignerSerializationVisibility.Visible)] public string OkButtonText { get { return btnOk.Text; } set { btnOk.Text = value; } } [Browsable (true)] [Category ("Design")] [DefaultValue (true)] [DesignerSerializationVisibility (DesignerSerializationVisibility.Visible)] public bool OkButtonVisible { get { return btnOk.Visible; } set { btnOk.Visible = value; } } [Browsable (true)] [Category ("Design")] [DesignerSerializationVisibility (DesignerSerializationVisibility.Visible)] public string CancelButtonText { get { return btnCancel.Text; } set { btnCancel.Text = value; } } [Browsable (true)] [Category ("Design")] [DefaultValue (true)] [DesignerSerializationVisibility (DesignerSerializationVisibility.Visible)] public bool CancelButtonVisible { get { return btnCancel.Visible; } set { btnCancel.Visible = value; } } |
De buttons (btnOk & btnCancel) zijn beiden private op de form.
Als ik nu een form afleid van deze base-form, en ik zet de CancelButtonText property in de designer op een andere waarde, en ik rebuild het project, dan loopt alles zoals verwacht: de Text property van de Cancel Button blijft op de waarde staan die ik toegekend heb.
Doe ik echter hetzelfde met de CancelButtonVisible property, dan loopt het mis. Als ik deze property op false zet, dan zie ik in de designer wel dat die button invisible wordt (maw, ik zie hem niet meer).
Echter, als ik het project opnieuw build, dan is die property terug op true gezet.
Als ik echter de btnOk & btnCancel buttons protected maak ipv private, dan werkt die CancelButtonVisible property wel.
Echter, dit zou imho helemaal niet hoeven te gebeuren; ik zou die button niet protected moeten maken (en dat wil ik trouwens ook niet).
Dus, waarom werkt de Visible property niet zoals verwacht, terwijl andere properties dat wel doen
En nog beter: hoe kan ik het oplossen ?
Ik kan er natuurlijk wel rondwerken, door in de constructor van m'n sub-form die property te gaan zetten, en deze properties niet meer zichtbaar te maken in het property window (door de Browsable attribute op false te zetten), maar ik zou het toch liever op een andere manier oplossen.
https://fgheysels.github.io/