2016-06-22 11 views
0

я уже ключ называется «Alert_Sound_File» в моем App.Config который выглядит следующим образом:Сохранение SoundFile от кнопки к App.Config

<setting name="Alert_Sound_File" serializeAs="String"> 
<value /> 
</setting> 

Это то, что моя кнопка выглядит следующим образом:

public OpenFileDialog dialog1 = new OpenFileDialog(); 
private void browseSoundToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     DialogResult result = dialog1.ShowDialog(); 
     dialog1.Title = "Browse to find sound file to play first sound"; 
     dialog1.InitialDirectory = @"c:\"; 
     dialog1.Filter = "Wav Files (*.wav)|*.wav"; 
     dialog1.FilterIndex = 2; 
     dialog1.RestoreDirectory = true; 

     Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
     AppSettingsSection app = config.AppSettings; 
     app.Settings["Alert_Sound_File"].Value = dialog1.FileName; 
     config.Save(ConfigurationSaveMode.Modified); 
    } 

текущая ошибка я получаю:

«ссылка на объект не указывает на экземпляр объекта.»

Но dialog1.FileName установлено в кнопку, как я получаю возвращаемое значение null?

Я даже попытался это, чтобы проверить & это не спасает в мой App.Config:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
AppSettingsSection app = config.AppSettings; 
app.Settings.Add("y", "this is Y"); 
config.Save(ConfigurationSaveMode.Modified); 

UPDATE: Я добавил

<appSettings> 
<add key="Alert_Sound_File" value="" /> 
<add key="Error_Sound_File" value="" /> 

К моему App.Config файл и введите это в моей кнопке:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
     AppSettingsSection app = config.AppSettings; 
     if (result == DialogResult.OK) 
     { 
      app.Settings["Alert_Sound_File"].Value = dialog1.FileName; 
      config.Save(ConfigurationSaveMode.Modified); 
     } 

В результате я больше не получаю объектную ошибку объекта, но звуковой файл не добавляется в файл App.Config. Но у меня нет никаких ошибок!

+0

вы получаете исключение при попытке получить значение «dialog1.FileName»? – lem2802

+0

yes @ lem2802 не уверен, почему, поскольку он появляется сразу после того, как пользователь выбирает файл? – Havoux

ответ

0

пожалуйста, попробуйте, что для того, чтобы быть уверенным, что вы выбрали файл перед:

if (result == DialogResult.OK) { 
    app.Settings["Alert_Sound_File"].Value = dialog1.FileName; 
    config.Save(ConfigurationSaveMode.Modified); 
} 
+0

По-прежнему получаю ту же ошибку – Havoux

0

Изменить файл app.config в:

<configuration> 
    <appSettings> 
     <add key="Alert_Sound_File" value="" /> 
    </appSettings> 
</configuration> 

И вам нужно проверить результат как диалоговое wrotes на предыдущем посту, потому что если пользовательское поле отмены щелчка стирается (возможно, это действительно необходимо?).

Для сохранения вам необходимо позвонить сохранить метод после того, как измененное значение настройки:

config.Save(ConfigurationSaveMode.Modified); 
+0

Я прекратил получать ошибку для Null, но не сохраняет в App.Config - я действительно не знаю, что случилось – Havoux

+0

@ Havoux update answer – progpow

+0

thats уже в моем вопросе – Havoux