'Inaccessible due to its protection level'

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • DutchDeafBoy
  • Registratie: Augustus 2014
  • Laatst online: 11-09-2024
Ik ben bezig met een opdracht voor school waar onder meer klassen in gebruikt moeten worden. Ik heb nu een tweede WPF (settings) aangemaakt waarin instellingen kunnen worden aangepast van de 'hoofd' WPF (Form1).

Nu loop ik echter tegen een error aan: 'Form1.<object> is inaccessible due to its protection level'. Mijn code ziet er ongeveer zo uit (overbodige zaken even weggelaten):

Form1.cs
code:
1
2
3
4
5
6
7
8
{
    public partial class Form1 : Form
    {
        private void btnSettings_Click(object sender, EventArgs e)
        {
            settings stngsWindow = new settings(this);
            stngsWindow.Show();
        }


settings.cs
code:
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
{
    public partial class settings : Form
    {
        public void ckBxDM_CheckedChanged(object sender, EventArgs e)
        {
            // als optie Dark Mode is aangevinkt...
            if (ckBxDM.Checked)
            {
                // ...verander achtergrondkleur naar rgb-waarden 50,50,50 (donkergrijs)...
                BackColor = Color.FromArgb(50, 50, 50);

                // ...verander voorgrondkleur (tekst) naar wit...
                ForeColor = Color.FromArgb(255, 255, 255);

                // ...verander voorgrondkleur (tekst) button 'Zoeken' naar zwart...
                Form1.btnSearch.ForeColor = Color.FromArgb(0, 0, 0);

                // ...verander voorgrondkleur (tekst) button 'Herstel' naar zwart...
                Form1.btnReset.ForeColor = Color.FromArgb(0, 0, 0);

                // ...verander voorgrondkleur (tekst) button 'Over' naar zwart...
                Form1.btnAbout.ForeColor = Color.FromArgb(0, 0, 0);

                // ...verander voorgrondkleur (tekst) groupboxes naar wit
                Form1.groupBox1.ForeColor = Color.FromArgb(255, 255, 255);
                Form1.groupBox2.ForeColor = Color.FromArgb(255, 255, 255);
                Form1.groupBox3.ForeColor = Color.FromArgb(255, 255, 255);

            }

            // indien optie Dark Mode gedeselecteerd...
            else
            {
                // ...verander waarden weer terug naar oorspronkelijke staat
                this.BackColor = Color.FromArgb(255, 255, 255);
                this.ForeColor = default(Color);
                Form1.groupBox1.ForeColor = default(Color);
                Form1.groupBox2.ForeColor = default(Color);
                Form1.groupBox3.ForeColor = default(Color);
            }
        }
    }
}


Wat doe ik mis? Heb Google al afgezocht, maar niks lijkt erop te wijzen dat mijn code incorrect is. Wellicht zie ik iets over het hoofd ofzo? Graag wat hulp!

[ Voor 2% gewijzigd door DutchDeafBoy op 22-11-2017 09:49 . Reden: Uitleg over opdracht ]

LG OLED55C9PLA | iPhone 15 Pro Max | 11-inch iPad Pro (2024) | Apple Watch Series 10


Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
"{something} is inaccessible due to its protection level" komt in C# voor als je een non-public member (property, field, method e.d.) aanroept van een class buiten die class. Zie ook hier.

Ik weet niet over welke member het gaat, dus voor nu is het enige wat ik kan doen in het wilde weg schieten. Ik zou zeggen dat het waarschijnlijk de members van Form1 zijn, dat zijn de enige externe members die je aanroept in de code die je hebt gepost.

Acties:
  • +2 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:55
Waar krijg je die fout precies ?
Dit heeft te maken met het feit dat je een member van een class aanspreekt die niet public toegankelijk is. Die member zal een private of protected access modifier hebben.

Dit ligt het aan het feit dat je groupBox1, 2 & 3 aanspreekt vanuit de settings class, terwijl die groupboxen members zijn van de class Form1.

Je kan dit oplossen door de access modifier van die groupBox members te wijzigen, maar dat is eigenlijk geen goed idee, want daarmee breek je encapsulation, en dat wil je niet.

Zowiezo vind ik het geen goed idee om de kleuren van Form1 te wijzigen binnen je Settings form. Het zou beter zijn dat je die kleuren daarbuiten wijzgt: bv de kleuren wijzigen als je de settings geconfirmed hebt door het afsluiten van je settings form.
Een andere manier is om een delegate / event te definieren in je Settings form waar een Form1 instance kan op subscriben. Als je de instellingen op de Settings form wijzigt, kan je die delegate of event triggeren. De Form die daar op gesubscribed is, kan dan zelf de instellingen toepassen.

bv:

code:
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
public class SettingsEventArgs : EventArgs
{
      public Color  TheColor {get;private set;}
      
      public SettingsEventArgs( Color c ) { this.TheColor = c; }
}

public class SettingsForm : Form
{
     public event EventHandler<SettingsEventArgs> OnSettingsChanged;

     private void ckBxDM_CheckedChanged( .... )
     {        
             Color c;
    
             if(  ckBxDM.Checked )
             {
                    c = Color.FromRgb(...);
             }
             else
             {
                    c = Color.FromRgb(...);
             }

             if( OnSettingsChanged != null )
             {
                   OnSettingsChanged(this, new SettingsChangedEventArgs(c));
             }
     }

}


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Form1 : Form
{

         ...
         public void OnSettingsOpen()
         {
                var settings = new SettingsForm();
                settings.OnSettingsChanged +=  ModifySettings;
                settings.ShowDialog();
         }
  
         private void ModifySettings( object sender, SettingsEventArgs args )
         {
               groupBox1.ForeColor = args.Color;
         }
}


edit: Ik zie nu dat je eigenlijk met WPF bezig bent; bovenstaand codevoorbeeld gaat uit van een WinForms applicatie. Hoedanook, de achterliggende gedachte blijft

ps: let er ook op dat je consistente naamgeving toepast. Ik zie nu een class waarvan de classname met een hoofdletter begint, een andere begint met een kleine letter. Zoek eens de naming guidelines binnen .NET op en hou je daar aan.

[ Voor 49% gewijzigd door whoami op 22-11-2017 10:01 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 16:39
Volgens mij heb je iets te veel weggelaten. Je geeft de Form1 wel mee aan de settingspagina (this). Maar het is niet echt te zien wat je daar mee doet.

Acties:
  • 0 Henk 'm!

  • DutchDeafBoy
  • Registratie: Augustus 2014
  • Laatst online: 11-09-2024
Stoelpoot schreef op woensdag 22 november 2017 @ 09:53:
"{something} is inaccessible due to its protection level" komt in C# voor als je een non-public member (property, field, method e.d.) aanroept van een class buiten die class. Zie ook hier.

Ik weet niet over welke member het gaat, dus voor nu is het enige wat ik kan doen in het wilde weg schieten. Ik zou zeggen dat het waarschijnlijk de members van Form1 zijn, dat zijn de enige externe members die je aanroept in de code die je hebt gepost.
whoami schreef op woensdag 22 november 2017 @ 09:53:
Waar krijg je die fout precies ?
Dit heeft te maken met het feit dat je een member van een class aanspreekt die niet public toegankelijk is. Die member zal een private of protected access modifier hebben.

Dit ligt het aan het feit dat je groupBox1, 2 & 3 aanspreekt vanuit de settings class, terwijl die groupboxen members zijn van de class Form1.

Je kan dit oplossen door de access modifier van die groupBox members te wijzigen, maar dat is eigenlijk geen goed idee, want daarmee breek je encapsulation, en dat wil je niet.

Zowiezo vind ik het geen goed idee om de kleuren van Form1 te wijzigen binnen je Settings form. Het zou beter zijn dat je die kleuren daarbuiten wijzgt.

ps: let er ook op dat je consistente naamgeving toepast. Ik zie nu een class waarvan de classname met een hoofdletter begint, een andere begint met een kleine letter. Zoek eens de naming guidelines binnen .NET op en hou je daar aan.
Geloof me, die access modifiers is het eerste dat ik gecontroleerd had. ;) Ik heb gewoon netjes daar waar nodig alles public gemaakt.

LG OLED55C9PLA | iPhone 15 Pro Max | 11-inch iPad Pro (2024) | Apple Watch Series 10


Acties:
  • 0 Henk 'm!

  • DutchDeafBoy
  • Registratie: Augustus 2014
  • Laatst online: 11-09-2024
jip_86 schreef op woensdag 22 november 2017 @ 09:59:
Volgens mij heb je iets te veel weggelaten. Je geeft de Form1 wel mee aan de settingspagina (this). Maar het is niet echt te zien wat je daar mee doet.
Ik doe niet meer als 'instellingen' vanuit Settings koppelen aan Form1. Of wat bedoel je? :P

LG OLED55C9PLA | iPhone 15 Pro Max | 11-inch iPad Pro (2024) | Apple Watch Series 10


Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 16:39
DutchTech schreef op woensdag 22 november 2017 @ 10:07:
[...]

Ik doe niet meer als 'instellingen' vanuit Settings koppelen aan Form1. Of wat bedoel je? :P
Geef de constructor eens van je settings form?

Acties:
  • 0 Henk 'm!

  • DutchDeafBoy
  • Registratie: Augustus 2014
  • Laatst online: 11-09-2024
jip_86 schreef op woensdag 22 november 2017 @ 10:09:
[...]

Geef de constructor eens van je settings form?
Alstu. Niet echt anders als wat ik al gedeeld had. :P

code:
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CMDB
{
    public partial class settings : Form
    {
        public settings(Form1 form1)
        {

            InitializeComponent();

            // standaard achtergrondkleur: wit 
            this.BackColor = Color.FromArgb(255, 255, 255);

            // standaard resolutie van 880x410px
            this.Size = new System.Drawing.Size(200, 200);

            // dynamisch vergroten/verkleinen uitschakeld 
            this.FormBorderStyle = FormBorderStyle.FixedSingle;

            // maximaliseren uitgeschakeld
            this.MaximizeBox = false;
        }

        public void settings_Load(object sender, EventArgs e)
        {
        }

        public void btnConfirm_Click(object sender, EventArgs e)
        {
            Close();
        }

        public void ckBxDM_CheckedChanged(object sender, EventArgs e)
        {
            // als optie Dark Mode is aangevinkt...
            if (ckBxDM.Checked)
            {
                // ...verander achtergrondkleur naar rgb-waarden 50,50,50 (donkergrijs)...
                BackColor = Color.FromArgb(50, 50, 50);

                // ...verander voorgrondkleur (tekst) naar wit...
                ForeColor = Color.FromArgb(255, 255, 255);

                // ...verander voorgrondkleur (tekst) button 'Zoeken' naar zwart...
                Form1.btnSearch.ForeColor = Color.FromArgb(0, 0, 0);

                // ...verander voorgrondkleur (tekst) button 'Herstel' naar zwart...
                Form1.btnReset.ForeColor = Color.FromArgb(0, 0, 0);

                // ...verander voorgrondkleur (tekst) button 'Over' naar zwart...
                Form1.btnAbout.ForeColor = Color.FromArgb(0, 0, 0);

                // ...verander voorgrondkleur (tekst) groupboxes naar wit
                Form1.groupBox1.ForeColor = Color.FromArgb(255, 255, 255);
                Form1.groupBox2.ForeColor = Color.FromArgb(255, 255, 255);
                Form1.groupBox3.ForeColor = Color.FromArgb(255, 255, 255);

            }

            // indien optie Dark Mode gedeselecteerd...
            else
            {
                // ...verander waarden weer terug naar oorspronkelijke staat
                BackColor = Color.FromArgb(255, 255, 255);
                ForeColor = default(Color);
                Form1.groupBox1.ForeColor = default(Color);
                Form1.groupBox2.ForeColor = default(Color);
                Form1.groupBox3.ForeColor = default(Color);
            }
        }
    }
}

LG OLED55C9PLA | iPhone 15 Pro Max | 11-inch iPad Pro (2024) | Apple Watch Series 10


Acties:
  • 0 Henk 'm!

  • Cloud
  • Registratie: November 2001
  • Laatst online: 13-06 09:54

Cloud

FP ProMod

Ex-moderatie mobster

DutchTech schreef op woensdag 22 november 2017 @ 10:05:
[...]
Geloof me, die access modifiers is het eerste dat ik gecontroleerd had. ;) Ik heb gewoon netjes daar waar nodig alles public gemaakt.
Nou ja, de compiler error is nog steeds een foutieve access modifier. Dus de 'waar nodig' is nog niet helemaal voltooid ;)

Je hebt in je exception message voor ons de naam van je field/property waarom het gaat weggelaten:
'Form1.<object> is inaccessible due to its protection level'.
Welke is het en hoe is deze gedefinieerd? En op welke positie krijg je de exceptie, want dat staat er ook niet bij. Zonder deze informatie is het een beetje gokken voor ons.

[ Voor 9% gewijzigd door Cloud op 22-11-2017 10:13 ]

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


Acties:
  • 0 Henk 'm!

  • DutchDeafBoy
  • Registratie: Augustus 2014
  • Laatst online: 11-09-2024
Cloud schreef op woensdag 22 november 2017 @ 10:12:
[...]

Nou ja, de compiler error is nog steeds een foutieve access modifier. Dus de 'waar nodig' is nog niet helemaal voltooid ;)

Je hebt in je exception message voor ons de naam van je field/property waarom het gaat weggelaten:

[...]


Welke is het en hoe is deze gedefinieerd? En op welke positie krijg je de exceptie, want dat staat er ook niet bij. Zonder deze informatie is het een beetje gokken voor ons.
Dat is willekeurig, vandaar dat ik 't zo geschreven heb. Kan bijvoorbeeld zijn Form1.groupBox1 om maar wat te noemen.

LG OLED55C9PLA | iPhone 15 Pro Max | 11-inch iPad Pro (2024) | Apple Watch Series 10


Acties:
  • 0 Henk 'm!

  • Cloud
  • Registratie: November 2001
  • Laatst online: 13-06 09:54

Cloud

FP ProMod

Ex-moderatie mobster

Je bedoelt dat je het op alle fields/properties/etc krijgt wat je aan probeert te roepen op Form1? :)

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


Acties:
  • 0 Henk 'm!

  • DutchDeafBoy
  • Registratie: Augustus 2014
  • Laatst online: 11-09-2024
Cloud schreef op woensdag 22 november 2017 @ 10:16:
Je bedoelt dat je het op alle fields/properties/etc krijgt wat je aan probeert te roepen op Form1? :)
Jup, dat dus. :)

LG OLED55C9PLA | iPhone 15 Pro Max | 11-inch iPad Pro (2024) | Apple Watch Series 10


Acties:
  • 0 Henk 'm!

  • Cloud
  • Registratie: November 2001
  • Laatst online: 13-06 09:54

Cloud

FP ProMod

Ex-moderatie mobster

@DutchTech
Ah, oké dat beperkt de scope nogal namelijk :)

Wat ik zie is het volgende:
Je roept eigenschappen aan van Form1, zoals:
code:
1
2
// ...verander voorgrondkleur (tekst) button 'Zoeken' naar zwart...
Form1.btnSearch.ForeColor = Color.FromArgb(0, 0, 0);

Echter lijkt, gezien de constructor van settings Form1 een type te zijn en niet een variabele:
code:
1
2
3
4
public settings(Form1 form1)
{

}

Dat kan dus niet werken tenzij btnSearch en alle eigenschappen van de Form1 class static gemarkeerd zijn. Ik mis hier eigenlijk een field '_form' die je in je constructor zet op de inkomende waarde van form1. Je moet altijd bij jezelf te rade gaan als je in je constructor (of elke methode eigenlijk) een waarde binnenkrijgt maar er vervolgens helemaal niets mee doet :)

Verder, Form1 lijkt dus een type te zijn, maar je leidt af van Form. Welke van de twee is nu correct of heb je nóg een class gemaakt die je hier niet toont?

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


Acties:
  • 0 Henk 'm!

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 17:31
DutchTech schreef op woensdag 22 november 2017 @ 10:12:
[...]


Alstu. Niet echt anders als wat ik al gedeeld had. :P
Zeker wel, je doet namelijk niets met de Form1 variable die je aan de constructor meegeeft. Deze zal je in een attribuut moeten opslaan, deze kun je dan gebruiken om de publieke properties te benaderen. Nu benader je de properties op Form1 alsof ze static zijn.

Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 16:39
Voeg die twee dikgedrukte regels nu eens toe ;)
Wat je dus deed was op het type Form1 dingen in te stellen en niet de instantie. Je was op de goede weg door die instantie wel mee te geven in de constructor, maar je deed er niets mee :)
namespace CMDB
{
public partial class settings : Form
{
public Form Form1 { get; set; }
public settings(Form1 form1)
{

InitializeComponent();
this.Form1 = form1;
// standaard achtergrondkleur: wit
this.BackColor = Color.FromArgb(255, 255, 255);

// standaard resolutie van 880x410px
this.Size = new System.Drawing.Size(200, 200);

// dynamisch vergroten/verkleinen uitschakeld
this.FormBorderStyle = FormBorderStyle.FixedSingle;

// maximaliseren uitgeschakeld
this.MaximizeBox = false;
}
}

Acties:
  • 0 Henk 'm!

  • DutchDeafBoy
  • Registratie: Augustus 2014
  • Laatst online: 11-09-2024
jip_86 schreef op woensdag 22 november 2017 @ 10:24:
Voeg die twee dikgedrukte regels nu eens toe ;)
Wat je dus deed was op het type Form1 dingen in te stellen en niet de instantie. Je was op de goede weg door die instantie wel mee te geven in de constructor, maar je deed er niets mee :)

[...]
Werkt niet :$ :$

[ Voor 46% gewijzigd door DutchDeafBoy op 22-11-2017 10:29 ]

LG OLED55C9PLA | iPhone 15 Pro Max | 11-inch iPad Pro (2024) | Apple Watch Series 10


Acties:
  • +1 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 16:39
DutchTech schreef op woensdag 22 november 2017 @ 10:27:
[...]

Werkt niet :$ :$

Krijg nu telkens dit:

'Form' does not contain a definition for 'btnSearch' and no extension method 'btnSearch' accepting a first argument of type 'Form' could be found (are you missing a using directive or an assembly reference?)
Sorry, type van de property is ook Form1 en niet Form :$
Geeft meteen al aan dat het niet zo'n goede naam is voor een property :+

Acties:
  • 0 Henk 'm!

  • DutchDeafBoy
  • Registratie: Augustus 2014
  • Laatst online: 11-09-2024
jip_86 schreef op woensdag 22 november 2017 @ 10:29:
[...]

Sorry, type van de property is ook Form1 en niet Form :$
Geeft meteen al aan dat het niet zo'n goede naam is voor een property :+
Was ik inderdaad achtergekomen. Gelijk ff gefixt, maar nu blijf ik dezelfde exception krijgen als hiervoor. :P

LG OLED55C9PLA | iPhone 15 Pro Max | 11-inch iPad Pro (2024) | Apple Watch Series 10


Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 16:39
DutchTech schreef op woensdag 22 november 2017 @ 10:30:
[...]

Was ik inderdaad achtergekomen. Gelijk ff gefixt, maar nu blijf ik dezelfde exception krijgen als hiervoor. :P
btnSearch hernoemd/nog niet public gemaakt?
Evt in commentaar zetten of die bij het volgende control ook die fout geeft.

Acties:
  • 0 Henk 'm!

  • DutchDeafBoy
  • Registratie: Augustus 2014
  • Laatst online: 11-09-2024
Oke, ik ben er dus achter waarom het niet werkte. Ik weet niet hóe het komt, maar ik weet wel dat ik het zo heb opgelost: schijnbaar moest ik via de Property Manager nog de modifier op Public zetten. Wel heel vreemd, zou normaal toch niet zo moeten zijn?

Ik voel me nu eigenlijk wel heel erg stom in ieder geval. :')

Het werkt nu in ieder geval. Thanks heren voor de snelle reacties! Waardeer het zeer. _/-\o_

LG OLED55C9PLA | iPhone 15 Pro Max | 11-inch iPad Pro (2024) | Apple Watch Series 10


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:55
DutchTech schreef op woensdag 22 november 2017 @ 10:05:
[...]


[...]


Geloof me, die access modifiers is het eerste dat ik gecontroleerd had. ;) Ik heb gewoon netjes daar waar nodig alles public gemaakt.
Dat is eigenlijk helemaal niet netjes.
Nu zorg je ervoor dat je settings form weet heeft van hoe je Form1 er uit ziet, en dat wil je niet. Je hebt nu nl. gezorgd voor tight coupling tussen de settings form en je Form1. De settings form hoeft eigenlijk niets af te weten van Form1,

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • DutchDeafBoy
  • Registratie: Augustus 2014
  • Laatst online: 11-09-2024
whoami schreef op woensdag 22 november 2017 @ 11:26:
[...]

Dat is eigenlijk helemaal niet netjes.
Nu zorg je ervoor dat je settings form weet heeft van hoe je Form1 er uit ziet, en dat wil je niet. Je hebt nu nl. gezorgd voor tight coupling tussen de settings form en je Form1. De settings form hoeft eigenlijk niets af te weten van Form1,
Hoe kan ik het dan zo krijgen dat dat niet gebeurt? Domme vraag misschien, maar over datgene is niets behandeld bij de lessen, en ik weet niet zo goed hoe ik ernaar moet zoeken zegmaar. :P

LG OLED55C9PLA | iPhone 15 Pro Max | 11-inch iPad Pro (2024) | Apple Watch Series 10


Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 16:39
DutchTech schreef op woensdag 22 november 2017 @ 11:53:
[...]

Hoe kan ik het dan zo krijgen dat dat niet gebeurt? Domme vraag misschien, maar over datgene is niets behandeld bij de lessen, en ik weet niet zo goed hoe ik ernaar moet zoeken zegmaar. :P
Je gaf het zelf al een beetje aan. Door klassen te gebruiken. Je kan een settings klasse maken waarin je properties hebt als tekstkleur en achtergrondkleur. Die geef je mee aan je settingspagina, en lees je weer uit na de stngsWindow.Show(); Daarna moet je die settings nog weer toepassen in je hoofdscherm uiteraard ;)

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:55
Zie mijn eerdere post.

Een eenvoudigere manier is ook om de instellingen pas te wijzigen eens je de gekozen opties geconfirmerd hebt door het sluiten van jouw (dialog) Settings Form:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void ShowSettingsForm()
{
     var dlg = new SettingsForm();
     if( dlg.ShowDialog() == true )
     {
           // SelectedSettings is een property die je definieert op jouw Settings-Form
           // en die een instance teruggeeft van een custom class (Settings bv) die 
           // de door de gebruiker gekozen instellingen bevat.
           this.ApplySettings(dlg.SelectedSettings);
     }
}

private void ApplySettings( Settings s )
{
     this.groupBox1.ForegroundColor = s.ForeGroundColor;
     this.groupBox1.BackgroundColor = s.BackGroundColor;
     this.label1.Font = s.Font;
}

[ Voor 94% gewijzigd door whoami op 23-11-2017 09:47 ]

https://fgheysels.github.io/

Pagina: 1