如何编辑窗体中按钮的属性,该按钮位于自定义用户控件上

本文关键字:按钮 自定义 控件 用户 属性 何编辑 编辑 窗体 | 更新日期: 2023-09-27 18:04:34

我有一个自定义用户控件,我在其上放置了一个按钮控件。我将按钮的访问修饰符设置为Public。当我将用户控件拖放到窗体上时,我看到了按钮,但无法在窗体设计器中选择它或编辑其属性。

最后,我想创建一个更复杂的自定义向导控件,带有内容面板、"后退"answers"下一步"按钮等。我已经成功地创建了一个内容面板,可以在设计时将控件放入主表单的内容面板中。

但是,我对不能在用户控件本身上编辑嵌套控件感到困惑。

当从用户控件或从表单继承时,通常可以编辑访问修饰符设置为"Protected"的控件的属性。

我需要做些什么才能从窗体的设计器访问自定义用户控件的控件?

如何编辑窗体中按钮的属性,该按钮位于自定义用户控件上

我认为你需要去用户控件设计器视图修改按钮的属性(而不是用户控件放置的表单),因为它嵌套在用户控件中。

您可以对表单上的用户控件的子控件进行基本更改,但仅限于您可以通过父用户控件设计器公开感兴趣的属性并在设计时支持属性更改。您可以通过编写自己的自定义设计器来制作更复杂的设计时行为,但这可能是一项非常困难的任务。

有一个很好的理由为什么它没有像你想象的那样工作,如果你仔细思考一会儿,你就会明白为什么。当你继承一个对象,是的,你可以改变属性等,但在这种情况下,你是创建一个新的类型,所以你可以修改,添加,重新定义属性。

但是,当您在窗体上删除用户控件时,您并没有创建新类型。您正在创建已经定义的用户控件类型的实例。在您可以修改属性的范围内,您是在修改必须为该实例保留的状态。状态不仅要持久,而且用户控制还经常涉及绘画等,因此状态更改也可能产生复杂的行为效果,这是一个潜在的复杂需求,不能完全普遍化。

所以有一些修改是根本不可能的,因为它们意味着修改类型,而你已经有了一个类型,你只是在创建一个实例。对于最终基于状态的可能修改范围的其余部分,平台只支持全部可能的状态管理中的一部分。