如何创建少于2列/行的继承的TableLayoutPanel控件

时间:2019-07-03 15:21:46

标签: c# winforms tablelayoutpanel

我的目标是使用自定义的TableLayoutPanel控件为项目中的表单集合创建布局模板。我想创建一个继承TableLayoutPanel且仅仅一列的控件。

通过覆盖TableLayoutPanel的OnLayout事件,可以轻松地在2x2默认值之上添加其他行/列:

       public partial class MyFormOutline : TableLayoutPanel 
        {
             protected override void OnLayout(LayoutEventArgs e)
             {
                 this.DoubleBuffered = true;
                 this.RowCount = 3;
                 this.ColumnCount = 1; // Index out of range in designer
                 base.OnLayout(e);
             }
        }

但是,在尝试将自定义控件放在窗体上时,将ColumnCount设置为小于2的值会产生“索引超出范围”错误消​​息:

Index out of range

最初,我认为“索引超出范围”消息引用了ColumnStyles集合,因此我尝试删除了额外的列样式,但这没有效果:

      while (this.ColumnStyles.Count > 1)
          this.ColumnStyles.RemoveAt(this.ColumnStyles.Count - 1);

我怀疑TableLayoutPanel中还有其他内容,希望至少有两列/行。需要重写基本TableLayoutPanel中的其他事件/方法,以在继承的控件中减少列/行的数量吗?

顺便说一句:我意识到我可以删除设计器中不需要的列,这就是我目前正在“解决”问题的方式,但是我希望有一种代码解决方案可以消除这一额外步骤。

0 个答案:

没有答案