【问题标题】:system.drawing referencesystem.drawing 参考
【发布时间】:2023-03-20 07:36:01
【问题描述】:

我正在尝试像这样设置文本框的背景颜色:

txtCompanyName.BackColor = Drawing.Color.WhiteSmoke;

它不喜欢它,因为它要我在前面添加 System,例如:

txtCompanyName.BackColor = System.Drawing.Color.WhiteSmoke;

现在可以了,但让我很恼火的是我必须输入 System.我使用 System; 在我的代码顶部引用 System;不应该这样做,所以我不必在绘图前输入 System,不知道为什么我仍然必须输入 System,有人知道吗?

【问题讨论】:

标签: c# .net


【解决方案1】:

在 C# 中,您不能通过部分命名空间来指定类型名称。在 C# 中,名称必须是

  • 包含整个命名空间或命名空间别名的完全限定名称
  • 仅类型名称

Drawing.Color.WhiteSmokeDrawing 部分是非完全限定的命名空间,因此作为类型名称是非法的。您需要添加前缀System 或添加using System.Drawing 并将类型名称更改为Color.WhiteSmoke

或者,您可以为名为 DrawingSystem.Drawing 命名空间创建一个别名。

using Drawing = System.Drawing;

在 C# 中使用别名作为类型名称的开头是合法的。

【讨论】:

    【解决方案2】:

    容易修复:

    using Drawing = System.Drawing;
    
    ...
    
    txtCompanyName.BackColor = Drawing.Color.WhiteSmoke;
    

    【讨论】:

      【解决方案3】:

      using 语句正在导入指定命名空间中的类型;这不包括子命名空间。

      如果你真的想要,你可以使用以下行:

      using Drawing = System.Drawing;
      

      这将允许您将 System.Drawing 命名空间称为“绘图”。不过,这可能不是最好的解决方案。真的你应该使用:

      using System.Drawing;
      

      然后你的行变成:

      txtCompanyName.BackColor = Color.WhiteSmoke;
      

      如果您需要在 System.Drawing.Color 和其他颜色类(如 Microsoft.Xna.Framework.Color)之间消除歧义,您可以使用如下行:

      using XNAColor = Microsoft.Xna.Framework.Color;
      using WinColor = System.Drawing.Color;
      

      那么你的行是:

      txtCompanyName.BackColor = WinColor.WhiteSmoke;
      

      【讨论】:

        【解决方案4】:

        您正在使用系统,但您没有使用 System.Drawing。将using System.Drawing; 添加到其余的 using 语句中。

        【讨论】:

        • 这不是问题所在。在 C# 中,您不能使用以部分命名空间开头的名称。
        猜你喜欢
        • 2014-02-16
        • 1970-01-01
        • 2012-12-15
        • 2012-02-14
        • 2010-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多