小编Cag*_*man的帖子

使用TryParseExact进行FormatException

我想格式化一个特定标准的时间:

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)

c# format datetime

5
推荐指数
1
解决办法
275
查看次数

在splashscreen顶部的消息框

我有一个消息框,当用户无法加载时弹出(在这种情况下,因为他没有仓库)加载时有一个启动画面,显示正在加载数据.我尝试将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 那么还有另一种方法来设置消息框在顶部?

c#

4
推荐指数
1
解决办法
1342
查看次数

IBM Decimal到C#datetime

我有一个日期时间,来自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)

但我学会了不要做这种事情.那么有更好的方法吗?

c# datetime parsing

0
推荐指数
1
解决办法
101
查看次数

标签 统计

c# ×3

datetime ×2

format ×1

parsing ×1