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

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

C# crifan 27880浏览 0评论

【问题】

想要使得一个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窗体的大小改变而自动变化

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (2)

  1. 哇,帮我解决了一个问题,十分感谢 :mrgreen:
    biggie7年前 (2018-03-12)回复
  2. 版主,可不可以问问你图里面的C# 程序是搜索类的吗?能不能分享一下源程序呢?谢谢!!
    JUJU8年前 (2016-08-15)回复
85 queries in 0.370 seconds, using 22.14MB memory