我在c#中的属性下创建了两个设置文件。基本上我必须根据一组特定的条件来应用设置
例如,设置文件是" myset1"和" myset2"
这两个设置都具有相似的结构
myset1
price = 100
qty = 100
myset2
price = 150
qty = 20
在我的应用程序中,如果变量的值为" appColor"是"蓝"如果变量" appColor"必须使用myset1。是"红色"必须使用myset2。
在我的代码中
productPrice.Text = //based on the "appColor" selection value from myset1 or myset2 has to be displayed.
我试过这个但没有工作
Settings setSelector = new Settings();
if(appColor == "blue")
{
setSelector = myset1.Default;
}
else(appColor == "red")
{
setSelector = myset2.Default;
}
我收到的错误是"无法转换源类型" myset1"设置"
编辑:我的目标是productPrice.Text = setSelector.Price;即使更改设置也保持不变,因此我不必在此更改代码,只需更改设置即可。基本上完整的表单将根据所选的设置进行填充。
任何帮助将不胜感激
答案 0 :(得分:0)
稍微玩了一下并特别引用了这个MSDN article关于添加备用设置集的最后一节。
添加一组额外的设置
从“项目”菜单中,选择“添加新项”。将打开“添加新项”对话框。
在“添加新项”对话框中,选择“设置文件”。
在“名称”框中,为设置文件指定名称,例如SpecialSettings.settings,然后单击“添加”将文件添加到您的 溶液
在解决方案资源管理器中,将新设置文件拖到“属性”文件夹中。这允许您的新设置可用 代码
- 醇>
像在任何其他设置文件中一样添加和使用此文件中的设置。您可以通过以下方式访问这组设置 Properties.SpecialSettings对象。
然后我意识到每个设置文件都是它自己独立的类,因此你必须回到一个公共类。通过这样做,你将失去你的个人属性,并必须将它投射到适当的类。然后我查看了这个SO question搜索动态投射。根据JaredPar的回答,似乎最简单的方法是使用dynamic
关键字,并在运行时计算类类型。
即
班级声明:
dynamic setSelector;
在表单加载期间初始化它:
private void Form1_Load(object sender, EventArgs e)
{
if(appColor == "blue")
{
setSelector = Properties.myset1.Default;
}
else if(appColor == "red")
{
setSelector = Properties.myset2.Default;
}
textBox1.Text = setSelector.qty.ToString();
}
答案 1 :(得分:0)
我试过下面的代码。它运作正常。
我有两个文本框,我根据颜色设置Price和Qty。
Object obj = new Object();
if(appColor == "blue")
{
obj = (System.Configuration.SettingsPropertyCollection)Properties.Settings.Default.Properties;
}
else(appColor == "red")
{
obj = (System.Configuration.SettingsPropertyCollection)Properties.Settings1.Default.Properties;
}
foreach (System.Configuration.SettingsProperty p in Properties.Settings.Default.Properties)
{
if (p.Name=="Qty")
textBox1.Text = p.DefaultValue.ToString();
else if (p.Name=="Price")
textBox2.Text = p.DefaultValue.ToString();
}

我希望这会有所帮助:)