我有一个应用程序,其中有一个“首选项”表单,以允许用户选择他们的首选项。该表单有一些单选按钮,允许用户选择他们的偏好。在另一种形式上,我有一些代码会根据选中的按钮做出不同的反应。
代码/首选项界面如下:
private void DateStamp()
{
if (UserPreferences.Instance.ddmmyyyy.Checked)
{
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 (UserPreferences.Instance.mmddyyyy.Checked)
{
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 (UserPreferences.Instance.yyyyddmm.Checked)
{
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 (UserPreferences.Instance.yyyymmdd.Checked)
{
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;
}
单选按钮后面没有代码。修饰符是公开的。
不过,我遇到的问题是,当我尝试添加“日期戳”时,出现 System.NullReferenceException {"Object reference not set to an instance of an object."} 错误“if (UserPreferences.Instance.ddmmyyyy .检查)”。我不确定现在该做什么。
那么当用户去添加一个日期戳时应该发生什么,它应该检查单选按钮的选中状态并添加与选中的单选按钮对应的日期戳。
在此先感谢您的帮助。
- -编辑 - -
在“首选项”表单上,“保存”按钮后面的代码如下:
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();
}
和主窗体字符串:
public partial class Basic_Word_Processor : Form
{
public string keyboardFormat;
public string dataFormat;
和 MainForm “ShowDialog” 代码:
private void preferencesToolStripMenuItem_Click(object sender, EventArgs e)
{
UserPreferences pref = new UserPreferences();
pref.ShowDialog();
dataFormat = pref.DataFormat;
keyboardFormat = pref.KeyboardFormat;
}
问题是它不保存按钮的“已检查”状态。一旦 Dialog 关闭,它就会返回到之前的状态。