将富文本框(时间跨度)的内容转换为双精度或浮动



我是新来的,我希望我来对地方了。 谁能帮我? 我的程序中有 3 个 richTextBox 第一个是(日期时间格式(:日期开始 2sd 是(日期时间格式(:日期结束 第三个是(时间跨度格式(:剩余天数(从 richTextBox1(到下一个日期(richTextBox2(。 我想要的是,如果 richTextBox3 <= 0 显示警告消息。 但是我不知道如何将项目转换为双倍。 提前谢谢。

我的代码 :

// Reading Text File 1.
TextReader dateOfStart = new StreamReader (TextFilePath);
richTextBox1.Text = dateOfStart.ReadToEnd();
dateOfStart.Close();
// Reading Text File 2.
TextReader dateOfEnd = new StreamReader (TextFilePath);
richTextBox2.Text = dateOfEnd.ReadToEnd();
dateOfEnd.Close();
// Convert to DateTime 1
DateTime dateStarting = DateTime.Parse(dateOfStart);
// Convert to DateTime 2
DateTime dateEnding = DateTime.Parse(dateOfEnd);
// Calc
TimeSpan remainningDays = dateEnding - dateStarting;
// if richTextBox3 <= Zero, launch Warninng.
If (remainningDays <= 0)
{
MessageBox.Show (Warnning !!!!!);
}    

您可以做一些事情来实现这一目标。

首先,不需要直接使用StreamReader对象,可以使用静态File.ReadAllText()方法将文件的内容读入字符串变量中。这将打开文件,读取文本,返回文本,然后为您关闭文件。

richTextBox1.Text = File.ReadAllText(startDateFilePath);
richTextBox2.Text = File.ReadAllText(endDateFilePath);

接下来,在设置DateTime变量时,您希望向其传递字符串值,而不是StreamReader对象。由于我们已经将字符串存储在RichTextBox对象中,因此我们可以使用这些对象:

// Note that `Parse` will throw an exception if the text is not a valid date
// Use `TryParse` instead if this is a possibility, 
//     or use a `try/catch` block and catch the FormatException
DateTime dateStarting = DateTime.Parse(richTextBox1.Text);
DateTime dateEnding = DateTime.Parse(richTextBox2.Text);

然后,当您执行减法时,您可以访问TimeSpanTotalDays属性以获取表示的天数,并将richTextBox3.Text设置为该值:

double remainingDays = (dateEnding - dateStarting).TotalDays;
richTextBox3.Text = remainingDays.ToString();
if (remainingDays <= 0)
{
MessageBox.Show("Warning !!!!!");
}
double myDoubleValue = Double.Parse(richTextBox3.Text);

格式不正确的数据将导致此方法引发异常。由于您正在尝试解析直接用户输入,因此应将其包装在 try-catch 块中。或者,如果您担心性能,可以使用TryParse.TryParse方法不会引发异常。

最新更新