如何更改基本形式的控件属性(FlatStyle)?

时间:2014-12-29 18:30:16

标签: c# inheritance

这可能是一个初学者的问题,但我搜索过,没有找到任何明确的答案!

主要问题是:如何从C#中没有该控件的基本表单继承控件的属性(特别是FlatStyle)?

详细信息:我Form1继承自baseFormbaseForm有一个Panel和一个Label控件,但没有Button。在Form1中,我添加了一个名为Button1的按钮。如何通过Button更改baseFrom的样式? 我不想使用矩形或类似的方式创建自定义控件或重新设计按钮,但只更改应用程序中所有按钮的属性。


更新:我希望所有按钮都受到影响,无论它们是否已存在或只是已添加。无论在哪个容器中它们都无关紧要。

2 个答案:

答案 0 :(得分:1)

baseForm中,您可以将ControlAdded事件挂钩到要添加Panel的{​​{1}},并通过代码适当地设置样式。这适用于从Button继承的每个表单。

例如(在baseForm

baseForm

刚做了一个非常快速的测试......它甚至可以在设计模式下工作:

Screenshot

作为替代方案,如果您要在应用程序的任何位置使用格式繁多的按钮,您可以考虑创建一个继承自public partial class BaseForm : Form { public BaseForm() { InitializeComponent(); // "myPanel" is the panel where the button will be added in inherited forms myPanel.ControlAdded += myPanel_ControlAdded; } private void myPanel_ControlAdded(object sender, ControlEventArgs e) { var button = e.Control as Button; if (button != null) { button.FlatStyle = FlatStyle.Flat; button.ForeColor = Color.Red; } } } 的自定义控件,并在其中指定属性,例如:

Button

构建完成后,您将在工具箱中找到它(在“[您的项目]组件”选项卡下),或者您可以将其填充到您自己的控件库(在不同的解决方案中)并将其永久添加到Visual Toolbox中工作室。

答案 1 :(得分:1)

您需要使用Reflection

您可以使用LINQ查询来执行此操作。这将查询表单Button

上的所有内容
var c = from controls in this.Controls.OfType<Button>()
              select controls;
foreach(var control in c)
    control.FlatStyle = FlatStyle.Flat;