【问题标题】:Setting default color in Windows Forms在 Windows 窗体中设置默认颜色
【发布时间】:2014-10-06 00:35:24
【问题描述】:

我正在使用 Powershell 和 Windows 窗体为我编写的一组脚本创建一个简单的 GUI。

我在 GUI 中生成了一堆按钮,目前正在为我的按钮添加样式。

$Button1 = New-Object System.Windows.Forms.Button 

是否可以将以下行设置为所有按钮的全局/默认设置?

$Button1.Cursor = [System.Windows.Forms.Cursors]::Hand
$Button1.BackColor = '#CCCC99'
$Button1.Font = New-Object System.Drawing.Font("Verdana",10,[System.Drawing.FontStyle]::Bold)

给你一个想法,我现在正在做的是为每个按钮添加文本块。

$Button1.BackColor = '#CCCC99'
$Button2.BackColor = '#CCCC99'
$Button3.BackColor = '#CCCC99'
etc...

我很确定有更好、更有效的方法来做到这一点。谁能指出我正确的方向?

我希望所有按钮看起来都差不多。

提前致谢。

【问题讨论】:

    标签: windows forms powershell button


    【解决方案1】:

    您可以在所有按钮被创建后循环访问它们并设置它们的属性,就像 TheMadTechnician 建议的那样……

    但是有更好的方法。想想面向对象的编程。您有一个Button 类,并且想要更改其默认属性。实际上,您希望所有按钮都具有这些新属性。所以说真的,你想要的是一个自定义控件,类似于一个按钮,但略有不同。

    嗯,你知道什么?有一种语言表达方式:

    public class MyBeautifulButton : System.Windows.Forms.Button
    {
        public MyBeautifulButton()
        {
            // Set default properties here...
        }
    }
    

    您甚至可以更高级地覆盖特定属性,设置适当的属性,以更改它们的默认值。

    然后,您将创建 MyBeautifulButton 对象,而不是在 PowerShell 代码中创建 System.Windows.Forms.Button 对象。

    虽然我必须说我不认为结果会非常漂亮。按钮的 BackColor 属性是我认为不应该提供的属性之一。按钮控件被设计为使用系统主题来绘制,它为您指定颜色。它还允许用户根据需要自定义颜色。应用程序指定的颜色通常会导致视觉上的不和谐和彻头彻尾的丑陋 UI。不要让您的应用程序像拇指疼痛一样突出。按钮是实用程序控件。一致性是关键。请记住,GUI 应用程序不是网页。

    【讨论】:

    • 这比我的解决方案好得多。我不知道该怎么做,谢谢 Cody Gray,这被塞进了我的 sn-ps 文件夹中,这样我将来可以编写更好的脚本。像这样的好答案提醒我还有很多东西需要学习。
    • 你应该展示如何在 PowerShell 而不是 C# 中做到这一点
    • 我不确定您是否可以在 PowerShell 中创建自定义类。我曾经做过的唯一方法是用 .NET 语言编写类,编译它们,然后在 PowerShell 中使用 Add-Type 来访问它们。公平地说,我不是 PowerShell 的大用户。也许这是惯性,但我仍然发现批处理脚本效率更高。如果我需要做一些复杂的事情,我会写一个 C# 应用程序或一个 C++ 应用程序。我有点掩饰了这个问题的 PowerShell 方面。如果你真的不能在脚本语言中创建派生类,那也许这毕竟不是一个好的解决方案。
    • 非常感谢科迪。你是对的 - 我正在 Powershell 中寻找这个确切的功能。我从另一个线程中读到,这可以使用“添加类型”来完成,现在正在研究它。谢谢!
    【解决方案2】:

    为什么不将它们添加到表单后将其应用于所有按钮?大致如下:

    $MyForm.Controls | Where{$_.GetType().Name -eq "Button"} | ForEach{$_.BackColor = '#CCCC99'}
    

    【讨论】:

    • 谢谢老兄。我发现“Add-Type”是完成此任务的最简洁的方法,但在学习期间我暂时使用了这种方法。干杯!
    猜你喜欢
    • 2021-03-27
    • 2017-03-24
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2016-01-16
    相关资源
    最近更新 更多