【问题标题】:change ForeColor of Form更改表格的前景色
【发布时间】:2010-01-25 09:29:53
【问题描述】:

如何更改表单的 ForColor,将 ForeColor 设置为 RED 但表单仍以白色文本显示。我该如何改变这个。
我指的是标题栏文本颜色

【问题讨论】:

  • ForeColor - 此属性用于更改子控件中文本的颜色,如标签、文本等。

标签: c# winforms visual-studio-2005 c#-2.0


【解决方案1】:

标题栏是表单的“非客户”区域。窗体的非客户区由 Windows API 管理,而不是由 .NET 管理。不能通过在表单上设置任何属性来更改它。要更改标题栏文本的颜色,您需要进行自定义绘画。在 Google 上搜索以下术语:非客户区绘画 winforms。您需要直接调用 Win32 API 才能使其工作。你可以从这里得到一些想法:http://geekswithblogs.net/kobush/articles/CustomBorderForms.aspxhttp://customerborderform.codeplex.com/wikipage?title=Painting%20NonClient%20Area&referringTitle=Home

在过去(即没有 .NET 的时候)更容易做到,因为我们直接使用 Win32 API。我这样做了,为了好玩。而且,我从那以后了解到这些东西对于学习是可以的; IMO 我强烈建议您不要通过将其放入“真实”应用程序中来“滥用”它。 Windows 具有特定的外观和感觉,并且该外观和感觉应该在用户的控制之下,而不是开发人员的控制之下。

【讨论】:

    【解决方案2】:

    我不确定您要做什么。 ForeColor 更改窗体上子控件的颜色。 这是 ForeColor 和在 windows 窗体上书写的示例。 请注意,通过 Graphics 对象直接在 Form 上书写时不使用 Form ForeColor 属性... 在表单上放置一个按钮并将代码放入其事件处理程序中......

    private void button1_Click(object sender, EventArgs e)
        {
            this.ForeColor = System.Drawing.Color.Red;
            using (Graphics g = this.CreateGraphics())
            {
                Brush b = new SolidBrush(System.Drawing.Color.Blue);
                g.DrawString("SAMPLE TEXT", SystemFonts.CaptionFont, b, new PointF(50, 50));
                b.Dispose();
            }
        }
    

    【讨论】:

    • 感谢 Oldbrazil 的回复。您说的是对的,但是我该如何更改表单的标题文本,即;表单顶部的“Form1”。我需要更改此颜色。我该怎么做?
    • 嗯,改变标题区的外观似乎不是那么简单,它通常由系统处理(认为用户可以为他们的窗口定义一个主题......)看看这里,我想这就是你要找的:codeproject.com/KB/dialog/CustomizeTitleBar.aspx
    【解决方案3】:

    您好,如果您想更改表单控件的文本,您必须在所有子控件、标签、复选框、文本框等上单独设置 ForeColor 属性。表单前景色只会影响表单前景色更改后创建的控件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-14
      • 2013-08-30
      • 1970-01-01
      • 2012-12-11
      • 2013-08-20
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      相关资源
      最近更新 更多