我想格式化一个特定标准的时间:
private String CheckTime(String value)
{
String[] formats = { "HH mm", "HHmm", "HH:mm", "H mm", "Hmm", "H:mm", "H" };
DateTime expexteddate;
if (DateTime.TryParseExact(value, formats, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out expexteddate))
return expexteddate.ToString("HH:mm");
else
throw new Exception(String.Format("Not valid time inserted, enter time like: {0}HHmm", Environment.NewLine));
}
Run Code Online (Sandbox Code Playgroud)
当用户键入它时:"09 00","0900","09:00","9 00","9:00"
但是当用户输入它时: "900"或者"9" 系统无法格式化,为什么?它们是我所采用的默认格式.
string str = CheckTime("09:00"); // works
str = CheckTime("900"); // FormatException at TryParseExact
Run Code Online (Sandbox Code Playgroud) 我有一个消息框,当用户无法加载时弹出(在这种情况下,因为他没有仓库)加载时有一个启动画面,显示正在加载数据.我尝试将TopMost设置为true,但是因为spalshscreen不是父级所以它不起作用,所以我尝试将TopLevel设置为true但它没有做到这一点.
所以我试过:
MessageBox.Show(Splashscreen.LoadingScreen.ActiveForm, e.Message, "No warehouses", MessageBoxButtons.OK, MessageBoxIcon.Error);
Run Code Online (Sandbox Code Playgroud)
但这是交叉线程所以我得到一个:InvalidOperationException 那么还有另一种方法来设置消息框在顶部?
我有一个日期时间,来自DB2数据库,现在我正在尝试将其转换为C#datetime.
Datetime.ParseExact(requestedate.ToString(), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
它工作得很完美,直到用户没有正确填写表单并且数据库中的请求数为"0".我可以这样做:
Datetime paresedRequestedate;
Try
{
paresedRequestedate = Datetime.ParseExact(requestedate.ToString(), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
}
catch(exception)
{
paresedRequestedate = default(DateTime);
}
Run Code Online (Sandbox Code Playgroud)
但我学会了不要做这种事情.那么有更好的方法吗?