C#usercontrol如何访问所有子控件
我在里面定义了一个带有表格布局面板的自定义面板。 但是,当我在winform上使用此控件时,我无法访问表格布局面板属性。 (我希望例如在单元格中添加列或停靠其他控件)。 我尝试将修饰符属性更改为public,但它仍然无效。 如何查看和更改面板布局属性,我该怎么办?
实际上,问题可能更通用:如何访问/修改/移动自定义用户控件中包含的控件?
谢谢
您需要在用户控件中公开要修改的属性。 例如,要从用户控件更改表布局控件的列计数属性,您必须公开ColumnCount属性:
public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } public int ColumnCount { get { return this.tableLayoutPanel1.ColumnCount; } set { this.tableLayoutPanel1.ColumnCount = value; } } }
然后,您还可以开始使用某些属性来控制用户控件在Visual Studio中的显示方式,例如,上面的内容可以像这样修改:
[DefaultProperty("ColumnCount")] public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } [Description("Gets or sets the column count of the table layout.")] [Category("TableLayout")] [DefaultValue(2)] public int ColumnCount { get { return this.tableLayoutPanel1.ColumnCount; } set { this.tableLayoutPanel1.ColumnCount = value; } } }
这会将整个用户控件的默认属性设置为“ColumnCount”,并为列计数属性提供描述,默认值为2,并设置应在设计器属性窗口中显示的类别。 用户控件可以提供更多设计时支持。
- 使用lock语句在C#中进行递归/嵌套锁定
- ASP.NET Core RC2和.NET 4.5.1应用程序之间的共享cookie身份validation
- 使用OllyDebug破解C#应用程序
- 异步unit testing中的Stubbing Task返回方法
- 在MVC3中使用ADO.NET MySQL提供程序(无法找到请求的.Net Framework数据提供程序。可能未安装。)
- 如何在硬盘上获取文件物理位置
- log4net在编译时未通过validation
- 使用对DataTable所做的更改来更新数据库…混淆
- 替换AppDomain.GetCurrentThreadId(); 使用ManagedThreadId