C# 动态添加的Splitter控件没用

skylight778 2011-06-02 11:47:47
......
DataGridView dgv = new DataGridView();
dgv.Dock = DockStyle.Top;
tp.Controls.Add(dgv);

Splitter spl = new Splitter();
spl.Name = "spl" + pn.ToString();
spl.BackColor = Color.ForestGreen;
spl.Dock = DockStyle.Top;
tp.Controls.Add(spl);

WebBrowser wb = new WebBrowser();
wb.Name = "wb" + pn.ToString();
wb.Dock = DockStyle.Fill;
tp.Controls.Add(wb);
....

用手动添加可以,用像上面动态添加却没效果出来,dgv spl wb 好像不在同一层一样,dgv spl会重叠锁定在上该,wb也一样重叠填充整个tp(TabPage).给他们全置顶(BringToFront)没用
...全文
177 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
skylight778 2011-06-03
  • 打赏
  • 举报
回复
1楼的方法是可行的,经过测试:顺序是
tp.Controls.Add(spl);
tp.Controls.Add(wb);
tp.Controls.Add(dgv);
如果是
tp.Controls.Add(spl);
tp.Controls.Add(dgv);
tp.Controls.Add(wb);
则dgv为停在顶部sql也可以起作用,但是wb不起作用会填充整个tabpage,接第一种顺序则可以. 设计视图是第一个添加dgv 并设为top 再添加spl设为top 最后添加wb设为fill.开始我是按这个顺序写的源码,在设计视图也不能按源码顺序来添加.

2楼的顺序其实和我贴出来的代码是一样的顺序.

3楼的不要怀疑,自己可以去试下.
spl.Name = "spl" + pn.ToString();
这是命名,在此段源码中还是用spl来操作的不是.在对象被实例化后,可以通过name关键字来调用spl每个 .那时确定是不能再用spl了
gxingmin 2011-06-02
  • 打赏
  • 举报
回复
DataGridView dgv = new DataGridView();
dgv.Dock = DockStyle.Top;

Splitter spl = new Splitter();
spl.Name = "spl" + pn.ToString();
spl.BackColor = Color.ForestGreen;
spl.Dock = DockStyle.Top;

WebBrowser wb = new WebBrowser();
wb.Name = "wb" + pn.ToString();
wb.Dock = DockStyle.Fill;

tp.Controls.Add(dgv);
tp.Controls.Add(spl);
tp.Controls.Add(wb);
lpingz 2011-06-02
  • 打赏
  • 举报
回复
应该先添加splitter ,然后给它的左右两个panel添加control吧。

没试过,可以试试!
xuexiaodong2009 2011-06-02
  • 打赏
  • 举报
回复
这样能像吗?怀疑
spl.Name = "spl" + pn.ToString();

spl.Dock = DockStyle.Top;

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧