Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mono can't save user settings

Tags:

c#

mono

settings

I have problems with saving user settings on Mono (Ubuntu). Here is code sample:

private void Form1_Load(object sender, EventArgs e)
{
    string savedText = Properties.Settings.Default.tbText.ToString();
    tbInput.Text = savedText;
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    string textToSave = tbInput.Text;
    Properties.Settings.Default.tbText = textToSave;
    Properties.Settings.Default.tbText = Properties.Settings.Default.tbText;
    Properties.Settings.Default.Save();
}

But i receive only empty config like

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <userSettings />
</configuration>

I've already tried something like

Properties.Settings.Default.tbText = Properties.Settings.Default.tbText;

from here. But still get same result. How can I use settings in Mono?

like image 932
Arrovil Avatar asked Oct 14 '25 07:10

Arrovil


1 Answers

  1. Remove line

    Properties.Settings.Default.tbText = Properties.Settings.Default.tbText;
    
  2. Check you application config file. Probably you have something like this:

    <configuration>
      <configSections>
        <sectionGroup name="userSettings" 
                      type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <section name="ExampleApp.Properties.Settings" 
                   type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
      </configSections>
      ...
      <appSettings>
        <add key="TestKey1" value="Test1" />
        <add key="TestKey2" value="Test2" />
      </appSettings>
      ...
      <userSettings>
        <ExampleApp.Properties.Settings>
          <setting name="textBox1" serializeAs="String">
            <value />
          </setting>
        </ExampleApp.Properties.Settings>
      </userSettings>
    </configuration>
    

    Remove sectionGroup for userSettings.

    <sectionGroup name="userSettings" 
                  type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <section name="ExampleApp.Properties.Settings" 
                 type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
    

    Remove also section userSettings.

    <userSettings>
      ...
    </userSettings>
    
  3. Delete your local user.config. After first run it will be recreated correctly.

    It should work

like image 87
PiKos Avatar answered Oct 18 '25 03:10

PiKos



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!