最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】C#中使得控件随着WinForm窗体的大小改变而自动变化

C# crifan 28678浏览

【问题】

想要使得一个C#中的一个窗体中的控件,DataGridView,自动随着WinForm窗体变化而变化,即:

winform original size

中的显示数据的灰色部分,

另外还有上面那个“2.actions”,是个groupbox,也希望横向宽度随着窗体变化而变化。

目前是无法自动变化的:

drag to change to larger

 

【解决过程】

1.之前就知道,winform有些时间的,适合大小变化有关的,后来找到了:

sizechanged resizebegin resizeend

也是试了试一些代码,比如:

        private void frmfiverrcomscraper_resizeend(object sender, eventargs e)
        {
            grbsearchresult.width = grbsearchresult.width + this.size.width - oldsearchresultgroupboxsize.width;
        }

        private void frmfiverrcomscraper_resizebegin(object sender, eventargs e)
        {
            oldsearchresultgroupboxsize = grbsearchresult.size;
        }

        private void frmfiverrcomscraper_sizechanged(object sender, eventargs e)
        {

        }

但是结果都不理想。

比如,对于resizeend和resizebegin组合使用,只能捕获到,手动拖动窗体变化的事件,而对于点击最大化按钮 的情况,无法捕获到,搞得需要另外再去实现最大化按钮被按了后,各个控件的大小再去调整,很是麻烦。

2.后来参考:

C#里WinForm开发中如何实现控件随窗体大小的改变而自动适应其改变

得知了那个Anchor,然后去试了试:

原先是没有右边和下面的:

previous anchor no right and down

设置了后:

set the right and down

然后去运行,当窗体改变时,果然右边(和下面)都会自动缩放大小的:

right and down part can autosize

所以,再去设置其他的,对应的DatagridView和其父级的groubox,都设置为对应的部分的anchor值:

set the groupbox anchor right and down

当改变窗体大小后,也可以自动缩放了:

after set anchor all can autosize

 

【总结】

就是去设置窗体中的控件属性中的anchor,然后就可以达到所要的效果了:

当窗体大小改变时,自动缩放控件的大小,具体如何缩放,由你的anchor值决定。

转载请注明:在路上 » 【已解决】C#中使得控件随着WinForm窗体的大小改变而自动变化

81 queries in 0.161 seconds, using 19.23MB memory