我有两组单选按钮(2组4个按钮),我想保存已检查状态,并在程序/主表单加载后立即加载已检查状态。主窗体上的单选按钮 NOT 。
如何使用Properties.Settings?
执行此操作“偏好”表格中的代码如下:
public string DataFormat, KeyboardFormat;
public void UpdateUserChoice(string date, string keyboard)
{
if (date == ddmmyyyy.Text)
ddmmyyyy.Checked = true;
else if (date == mmddyyyy.Text)
mmddyyyy.Checked = true;
else if (date == yyyyddmm.Text)
yyyyddmm.Checked = true;
else if (date == yyyymmdd.Text)
yyyymmdd.Checked = true;
//----------------------------------------------------------
if (keyboard == qwerty.Text)
qwerty.Checked = true;
else if (keyboard == qwertz.Text)
qwertz.Checked = true;
else if (keyboard == azerty.Text)
azerty.Checked = true;
else if (keyboard == dvorak.Text)
dvorak.Checked = true;
}
private void button1_Click(object sender, EventArgs e)
{
if (ddmmyyyy.Checked)
DataFormat = ddmmyyyy.Text;
else if (mmddyyyy.Checked)
DataFormat = mmddyyyy.Text;
else if (yyyyddmm.Checked)
DataFormat = yyyyddmm.Text;
else if (yyyymmdd.Checked)
DataFormat = yyyymmdd.Text;
//--------------------------------------------------
if (qwerty.Checked)
KeyboardFormat = qwerty.Text;
else if (qwertz.Checked)
KeyboardFormat = qwertz.Text;
else if (azerty.Checked)
KeyboardFormat = azerty.Text;
else if (dvorak.Checked)
KeyboardFormat = dvorak.Text;
this.Close();
}
MainForm上的代码是:
private void DateStamp()
{
if (dateFormat.ToUpper() == "DD/MM/YYYY")
{
int CaretPosition = richTextBoxPrintCtrl1.SelectionStart;
string TextBefore = richTextBoxPrintCtrl1.Text.Substring(0, CaretPosition);
string textAfter = richTextBoxPrintCtrl1.Text.Substring(CaretPosition);
string currentDate = DateTime.Now.ToString("dd-MM-yyyy");
richTextBoxPrintCtrl1.SelectedText = currentDate;
}
else if (dateFormat.ToUpper() == "MM/DD/YYYY")
{
int CaretPosition = richTextBoxPrintCtrl1.SelectionStart;
string TextBefore = richTextBoxPrintCtrl1.Text.Substring(0, CaretPosition);
string textAfter = richTextBoxPrintCtrl1.Text.Substring(CaretPosition);
string currentDate = DateTime.Now.ToString("MM-dd-yyyy");
richTextBoxPrintCtrl1.SelectedText = currentDate;
}
else if (dateFormat.ToUpper() == "YYYY/DD/MM")
{
int CaretPosition = richTextBoxPrintCtrl1.SelectionStart;
string TextBefore = richTextBoxPrintCtrl1.Text.Substring(0, CaretPosition);
string textAfter = richTextBoxPrintCtrl1.Text.Substring(CaretPosition);
string currentDate = DateTime.Now.ToString("yyyy-dd-MM");
richTextBoxPrintCtrl1.SelectedText = currentDate;
}
else if (dateFormat.ToUpper() == "YYYY/MM/DD")
{
int CaretPosition = richTextBoxPrintCtrl1.SelectionStart;
string TextBefore = richTextBoxPrintCtrl1.Text.Substring(0, CaretPosition);
string textAfter = richTextBoxPrintCtrl1.Text.Substring(CaretPosition);
string currentDate = DateTime.Now.ToString("yyyy-MM-dd");
richTextBoxPrintCtrl1.SelectedText = currentDate;
private void preferencesToolStripMenuItem_Click(object sender, EventArgs e)
{
UserPreferences pref = new UserPreferences();
pref.UpdateUserChoice(dateFormat, keyboardFormat);
pref.ShowDialog();
dateFormat = pref.DataFormat;
keyboardFormat = pref.KeyboardFormat;
}
private void virtualKeyboardToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (keyboardFormat.ToUpper() == "QWERTY")
{
Virtual_Keyboard vKeyboard = new Virtual_Keyboard();
vKeyboard.Show();
}
else if (keyboardFormat.ToUpper() == "QWERTZ")
{
QWERTZ qwertz = new QWERTZ();
qwertz.Show();
}
else if (keyboardFormat.ToUpper() == "AZERTY")
{
AZERTY azerty = new AZERTY();
azerty.Show();
}
else if (keyboardFormat.ToUpper() == "DVORAK")
{
DVORAK dvorak = new DVORAK();
dvorak.Show();
}
}
我想保存单选按钮的已检查状态(如附图所示),这样当用户重新打开程序时,这些“设置”也会被加载。我怎么做到这一点?如果可能的话,使用Properties.Settings。
我创建了两个“设置”。 DatePreference和KeyboardPreference。我不知道它们应该是什么类型。如果有人可以指导我,我真的很感激。我是编程新手,谢谢你的帮助。
RadioButtons名为:
DDMMYYYY MMDDYYYY yyyyddmm YYYYMMDD
QWERTY QWERTZ AZERTY Dvorak的
感谢您的帮助。
- 编辑 -
我忘了提到这是一个WinForms应用程序。
答案 0 :(得分:1)
日期示例(您可以对键盘执行相同操作):
也许你可以创建一个这样的枚举:
public enum DatePreference { dd_mm_yyyy, mm_dd_yyyy, yyyy_dd_mm, yyyy_mm_dd };
在设置DatePreference
中设置为整数
对于偏好表单代码:
UpdateUserChoice:
if (Properties.Settings.Default.DatePreference == (int)DatePreference.dd_mm_yyyy)
ddmmyyyy.Checked = true;
button1_Click:
if (ddmmyyyy.Checked)
{
DataFormat = ddmmyyyy.Text;
Properties.Settings.Default.DatePreference = (int)DatePreference.dd_mm_yyyy;
}
请考虑使用Properties.Settings.Default.Save();
保存更改!
对于主要表单代码:
if (Properties.Settings.Default.DatePreference == (int)DatePreference.dd_mm_yyyy)
{
int CaretPosition = richTextBoxPrintCtrl1.SelectionStart;
string TextBefore = richTextBoxPrintCtrl1.Text.Substring(0, CaretPosition);
string textAfter = richTextBoxPrintCtrl1.Text.Substring(CaretPosition);
string currentDate = DateTime.Now.ToString("dd-MM-yyyy");
richTextBoxPrintCtrl1.SelectedText = currentDate;
}
[...]
答案 1 :(得分:1)
我会在枚举中表示值。
public enum AvailableKeyboardLayouts
{
DVORAK = 0,
QWERTY = 1,
QWERTZ = 2
}
使用Settings文件可以将类型保存为string或int。使用Enum.Parse转换对象
从“设置”文件中保存和加载非常简单:
我的设置文件是Settings.settings
Settings.Default.KeyboardPreference = AvailableKeyboardLayouts.DVORAK;
Settings.Default.Save();
答案 2 :(得分:0)
如何使用Resources.resx文件(取决于项目) 您还可以使用xml文件来保存值。如果您有许多设置,那么您可以使用数据表(例如命名为“设置”),将其放在数据集中并使用SaveToXml和LoadFromXml以获得更快的结果。