我正在使用Powershell和Windows Forms为我编写的一组脚本创建一个简单的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...
我非常确定这是一种更好,更有效的方法。有人能指出我正确的方向吗?
我希望所有按钮看起来都差不多。
提前致谢。
答案 0 :(得分:1)
您可以在创建完所有按钮后循环并设置其属性,例如TheMadTechnician建议...
但还有更好的方法。想想面向对象的编程。您有一个Button
类,并且您想要更改其默认属性。实际上,您希望按钮的所有具有这些新属性。所以,你真正想要的是一个自定义控件就像一个按钮,但略有不同。
嗯,你知道什么?有一种语言方式来表达:
public class MyBeautifulButton : System.Windows.Forms.Button
{
public MyBeautifulButton()
{
// Set default properties here...
}
}
您甚至可以选择一位鸽友并覆盖特定属性,设置相应的属性,以更改其默认值。
然后,您将在PowerShell代码中创建System.Windows.Forms.Button
个对象,而不是创建MyBeautifulButton
个对象。
虽然我必须说我不认为结果会非常漂亮。按钮的BackColor属性是我认为不应该提供的那些属性之一。按钮控件设计为使用系统主题绘制,系统主题为您指定颜色。它还允许用户根据需要自定义颜色。应用程序指定的颜色通常会导致视觉上的不和谐和丑陋的UI。不要让你的应用程序像拇指一样伸出来。按钮是实用程序控件。一致性是关键。请记住,GUI应用程序不是网页。
答案 1 :(得分:0)
为什么不在将它们添加到表单后将其应用于所有按钮?有点像:
$MyForm.Controls | Where{$_.GetType().Name -eq "Button"} | ForEach{$_.BackColor = '#CCCC99'}