【问题标题】:Custom format for entire application整个应用程序的自定义格式
【发布时间】:2015-02-13 18:55:47
【问题描述】:

如何为整个应用程序设置/强制执行通用格式?

对于像dateTimePicker 这样的网格和控件只是在开发时不用担心它?

我尝试在我自己的控件包装器中设置,但每次运行设计器时,此值都会被覆盖。怕是想换的时候到处换啊!这太可怕了;)

另一个想法是将其设置在.cs文件中

SetInitValues( customformat = Format+From_Config_file_or_settings;) 

或者什么..?

但在这种情况下,我必须在每个表单上添加此方法。

还有其他更好的方法吗?

编辑:根据我创建的以下答案:

            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            public static void Main()
            {
                ...    
                SetCustomFormatting();
                ...
            }
            private static void SetCustomFormatting()
            {
                // Application.CurrentCulture.DateTimeFormat is ReadOnly.
                System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("pl-PL");
                System.Globalization.DateTimeFormatInfo dateTimeInfo = new System.Globalization.DateTimeFormatInfo();

               // without this all strings like month names are not translated!
               dateTimeInfo = (System.Globalization.DateTimeFormatInfo)Application.CurrentCulture.DateTimeFormat.Clone();

                dateTimeInfo.DateSeparator = ".";
                dateTimeInfo.LongDatePattern = "dddd, dd MMMM yyyy";
                dateTimeInfo.ShortDatePattern = "yy.MM.dd";
                dateTimeInfo.LongTimePattern = "hh:mm:ss tt";
                dateTimeInfo.ShortTimePattern = "hh:mm tt";
                dateTimeInfo.FullDateTimePattern = "yyyy.MM.dd HH:mm:ss";

                cultureInfo.DateTimeFormat = dateTimeInfo;
                Application.CurrentCulture = cultureInfo;
                Thread.CurrentThread.CurrentCulture = cultureInfo;
                Thread.CurrentThread.CurrentUICulture = cultureInfo;
                CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
                CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;
            }
        }

这是一个好方法吗?

非常感谢您的建议。

【问题讨论】:

    标签: c# winforms datetimepicker custom-formatting


    【解决方案1】:

    您可以使用 Culture 属性设置格式和其他相关设置,因此您不必手动调整所有内容。

    这是一个开始看:https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.defaultthreadcurrentculture%28v=vs.110%29.aspx

    【讨论】:

    • 这真是个好提示!我设法通过设置cultureInfo 来做到这一点,但不幸的是Application.CurrentCulture.DateTimeFormat 是ReadOnly 所以我创建了一个新实例。它可以工作,但我已经在应用程序中看到了错误(未翻译月份名称),我担心它会导致更多问题(有没有办法通过不创建 CultureInfo 的新实例来更改 DateTImeFormat?)。我面临的第二个问题是网格列。在我自己设置自定义格式之前,我的日期列仍然显示日期和时间。
    • 我添加了 dateTimeInfo = (System.Globalization.DateTimeFormatInfo)Application.CurrentCulture.DateTimeFormat.Clone();解决我的翻译问题。谢谢!
    猜你喜欢
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2017-08-03
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多