2009-06-06 68 views
1

我可能不是第一個面對這個問題的人,但我無法在任何地方找到正確答案。爲什麼ConnectionString設置的範圍總是被強制爲「Application」?

我有一個使用強類型DataSet的Windows窗體應用程序。設計人員使用應用程序設置中定義的連接字符串。問題是這個設置被定義爲應用程序範圍(因此是隻讀的),我需要能夠在運行時更改它。在設置設計器中,如果設置的類型是「連接字符串」,則無法將範圍更改爲「用戶」。生成的數據集不提供允許在運行時選擇連接字符串的構造函數,它始終使用設置中的那個。

你知道MS爲什麼引入這個限制嗎?你有任何解決方法?

我目前正在使用一個很醜的解決方法:將設置的類型更改爲「String」,並將範圍更改爲「User」。這樣,我可以在運行時更改它,並且工作正常。麻煩的是,當我需要修改設計器中的數據集時,必須將其更改回「ConnectionString」,否則設計器無法工作。

在此先感謝您的建議!

回答

4

可以在運行時更改ApplicationScope設置的值。雖然產生的強類型屬性爲只讀,你可以使用:

Properties.Settings.Default["App1"] = "bbb"; 

之後,Properties.Settings.Default.App1將顯示爲「BBB」;

這應該可以讓設計時間單獨設置。

對於ApplicationScope設置,您不能使用Settings.Default.Save(),但這是故意的。普通用戶沒有權限在程序的子文件夾中寫入 文件

+0

感謝您的回答。這是一個很好的解決方案,但Properties.Settings.Default.Save()不保存這個設置......我想我可以在別處手動保存它,並且當我的應用程序啓動時總是覆蓋它。 – 2009-06-06 14:14:23

相關問題