none
使用MessageBox.Show()方法后,如何解决CA1300警告? RRS feed

  • 问题

  • 使用MessageBox.Show()方法后,代码分析就有CA1300警告。如何解决?

    警告 6 CA1300 : Microsoft.Globalization : 更改 Form1.button2_Click(Object, EventArgs):Void 以调用指定 MessageBoxOptions 的 MessageBox.Show 重载;如果在父控件上将 RightToLeft 设置为 RightToLeft.Yes,则要确保设置 MessageBoxOptions.RightAlign 和 MessageBoxOptions.RtlReading;如果它设置为 RightToLeft.Inherit,则检查其父级,直至找到一个表示“是”或“否”的值。 E:\Web\TC\TC\TC\Form1.cs 15 TC

    http://msmvps.com/blogs/peterritchie/archive/2006/10/15/Code-Analysis_3A00_-How-to-Correctly-Resolve-CA1300-_2D00_-_2200_Specify-MessageBox-Options_2200_.aspx

    这是我在网上找到的。不过不知道它在说什么。




    不受2008的广告诱惑, 本人坚持使用VS 2005和SQL Server 2000.
    2009年1月30日 13:37

答案

  • 你照这个样子写试试:
     
            private void Button_Click(object sender, EventArgs e)
    {
    // Switch the commenting on the following 4 lines to test the form.
    // string text = "Text";
    // string caption = "Caption";
    string text = _Resources.GetString("messageBox.Text");
    string caption = _Resources.GetString("messageBox.Caption");
    RtlAwareMessageBox.Show((Control)sender, text, caption,
    MessageBoxButtons.OK, MessageBoxIcon.Information,
    MessageBoxDefaultButton.Button1, (MessageBoxOptions)0);
    }

    周雪峰
    • 已标记为答案 dvdvip 2009年1月31日 5:05
    2009年1月31日 3:12
    版主
  • 查找designer.cs,是不是设置了RightToLeft
    http://feiyun0112.cnblogs.com/
    • 已标记为答案 dvdvip 2009年1月31日 5:05
    2009年1月31日 3:38
    版主

全部回复

  • 你好!

       要为使用从右向左阅读顺序的区域性正确显示消息框,必须将 MessageBoxOptions 枚举的 RightAlignRtlReading 成员传递给 Show 方法。检查包含控件的 Control.RightToLeft 属性以确定是否使用从右向左的阅读顺序。


    周雪峰
    2009年1月30日 14:24
    版主
  • 那么具体如何设置MessageBox的RightToLeft?我还是不大清楚。是自己直接在MessageBox里面代码吗?还是在窗体的属性里设置?
    不受2008的广告诱惑, 本人坚持使用VS 2005和SQL Server 2000.
    2009年1月31日 2:59
  • 你照这个样子写试试:
     
            private void Button_Click(object sender, EventArgs e)
    {
    // Switch the commenting on the following 4 lines to test the form.
    // string text = "Text";
    // string caption = "Caption";
    string text = _Resources.GetString("messageBox.Text");
    string caption = _Resources.GetString("messageBox.Caption");
    RtlAwareMessageBox.Show((Control)sender, text, caption,
    MessageBoxButtons.OK, MessageBoxIcon.Information,
    MessageBoxDefaultButton.Button1, (MessageBoxOptions)0);
    }

    周雪峰
    • 已标记为答案 dvdvip 2009年1月31日 5:05
    2009年1月31日 3:12
    版主
  • 你照这个样子写试试:
     
            private void Button_Click(object sender, EventArgs e)
    {
    // Switch the commenting on the following 4 lines to test the form.
    // string text = "Text";
    // string caption = "Caption";
    string text = _Resources.GetString("messageBox.Text");
    string caption = _Resources.GetString("messageBox.Caption");
    RtlAwareMessageBox.Show((Control)sender, text, caption,
    MessageBoxButtons.OK, MessageBoxIcon.Information,
    MessageBoxDefaultButton.Button1, (MessageBoxOptions)0);
    }

    周雪峰
    2009年1月31日 3:14
    版主
  • 查找designer.cs,是不是设置了RightToLeft
    http://feiyun0112.cnblogs.com/
    • 已标记为答案 dvdvip 2009年1月31日 5:05
    2009年1月31日 3:38
    版主