感慨一下,为公司内部做应用程序得把需求想在使用者前面,要不改程序改的你想死。如果没有git,我真的会死。
头痛的c#界面显示效果,结果记录一下。
1. 我想要的显示效果
原窗口显示
拉大窗口后,表格大小随窗体改变,两个按钮在窗体下方随动但大小不变
2.程序分两部分
(1)UserControl,其中有表格
(2) 窗体,有tabcontrol, tabcontrol中有两个panel,panel中放usercontrol
3.为了目标显示效果,设置的各组件参数(以下设置都能在属性窗口中设置)
(1)UserControl中DataGridView设置
- 让表格的所有列自动填满表格空间,设置表格的autoSizeColumnsMode
paramDgv.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
如果不设效果如下
- 让UserControl有滚动条。设置表格的anchor为top|left|right
paramDgv.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
这里这样设只是我尝试以后的结果,勉强实现了需求。具体为啥我也不清楚。我尝试过(失败的尝试),效果如下,表格数据多的时候并不会出现滚动条
dgv.anchor = left|right|top|Bottom
userControl.autoscroll = true
panel.autoscroll = true
(2) 主窗体中设置
- 为了让userConrol填充panel,设置usercontrol的dock属性
userControl.dock = DockStyle.Fill;
下图第一个userControl设置了dock,第二个没有设置,拉动窗口时显示对比效果如下
- 为了让panel随窗体大小变化而变化,panel设置anckor属性为top|bottom|left|right,
Panel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- 为了让tabcontrol随窗体大小变化而变化,设置anchor属性为top|bottom|left|right
tabcontrol.anchor = top|left|right|bottom
- 为了让两个按钮在窗体下方随动,但大小不变,设置按键anchor属性
//左下按键anchor设为left|bottom
surebtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
//右下按键anchor设为right|bottom
cancelBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));