winform-SunnyUI控件解决大小位置变化

这篇具有很好参考价值的文章主要介绍了winform-SunnyUI控件解决大小位置变化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近在做.net的项目,而个人对于.net仅限于能写点代码,样式相关的内容是一概不同,不得已最近边学边干,期间碰到了多种多样的问题故此对这些内容进行整理。

问题种类

使用SunnyUI解决控件DPI问题(分辨率问题)

项目在做技术选型的时候没有考虑好会有分辨率的问题导致直接选用了winform,之前一直做B/S开发,现在到C/S开发这点没有考虑好,首先这里避坑的话可以用WPF这个框架,它这个会自适应分辨率的问题,好了现在说一下解决的方案。

1.添加配置文件app.manifest

winform-SunnyUI控件解决大小位置变化

2.将配置文件中dpiAware打开

winform-SunnyUI控件解决大小位置变化

3.添加uiStyleManager1控件并将控件中DPIScale设置为true

winform-SunnyUI控件解决大小位置变化

4.效果图

winform-SunnyUI控件解决大小位置变化

使用FlowLayOutPanel解决控件边距问题

1.问题样式

可以看到这里切换了语言后新增这个按钮将旁边的按钮遮盖了。
winform-SunnyUI控件解决大小位置变化

2.使用FlowLayOutPanel搭配控件自带的Margin属性

首先窗体添加FlowLayOutPanel控件
winform-SunnyUI控件解决大小位置变化
添加控件后将我们需要进行设置固定边距的控件放入,然后设置按钮控件的Margin属性
winform-SunnyUI控件解决大小位置变化

3.效果图

winform-SunnyUI控件解决大小位置变化

使用SunnyUIUIButton控件以及UISymbolButton自适应大小

1.UIButton控件AutoSize属性设置后不触发问题

因为项目中需要切换语言,就导致切换语言后文本长度发生变化,对应的控件也要自动去匹配文本长度,但是UIButton在属性界面设置了以后程序运行期间并没有生效,所以这里排查是因为UIButton的AutoSize属性默认是false,需要在程序运行的时候修改为true,也就是在窗体加载事件中,或者窗体构造函数中将UIButton的AutoSize设置为true。
UIButton的AutoSize属性初始化配置。
winform-SunnyUI控件解决大小位置变化

2.解决UISymbolButton控件没有AutoSize属性,并且设置后无效问题

UISymbolButton的AutoSize可以看到它是直接给设定了只能为false,也就是说就算调用set给AutoSize属性赋值也是false。
winform-SunnyUI控件解决大小位置变化
解决方式就是检测UISymbolButton控件的TextChanged事件,当控件的文本发生变化时会触发这个事件,那么就可以在这个事件中控件的大小进行修改,以符合文本长度。

· 添加事件

winform-SunnyUI控件解决大小位置变化

· 自定义刷新控件大小
        /// <summary>
        /// 刷新控件大小,在文本内容发生变化时
        /// </summary>
        /// <param name="button"></param>
        private void AdjustButtonSize(UISymbolButton button)
        {
            // 使用 MeasureString 方法计算文本的大小
            using (var g = button.CreateGraphics())
            {
                var textSize = g.MeasureString(button.Text, button.Font);

                // 中文 调整按钮的大小
                button.Width = (int)textSize.Width + 60; // 可根据需要添加一些额外的空白区域
                button.Height = (int)textSize.Height + 14;
                //英文
                button.Width = (int)textSize.Width + 60; // 可根据需要添加一些额外的空白区域
                button.Height = (int)textSize.Height + 14;
            }
        }
· 在TextChanged中调用该方法
        private void btnAdd_TextChanged(object sender, EventArgs e)
        {
            AdjustButtonSize((sender as UISymbolButton));
        }

总结

winform中Margin属性

使用Margin属性可以在控件之间或控件与容器之间创建空白区域,以实现更灵活的布局。通过调整Margin属性的值,可以控制控件的间距和外观,从而满足特定的界面需求。

  • Margin属性是一个Padding结构类型,用于指定控件的上、下、左、右四个方向的间距。
  • Padding结构有四个属性:Top、Bottom、Left、Right,分别表示上、下、左、右方向的间距。

winform中MeasureString方法

MeasureString方法是Graphics类中的一个方法,用于测量给定字符串在指定字体和大小下的宽度和高度。该方法返回一个SizeF对象,其中包含测量结果的宽度和高度。

public SizeF MeasureString(string text, Font font);

参数说明:文章来源地址https://www.toymoban.com/news/detail-484202.html

  • text:要测量的字符串。
  • font:要应用于字符串的字体。
    UISymbolButton自适应大小的问题就是通过这个方法解决的。

winform中FlowLayOutPanel控件

  • FlowLayoutPanel控件是一个面板容器,它按照水平或垂直方向流动排列其子控件。
  • FlowLayoutPanel控件适用于动态调整大小和位置的控件集合,可以根据容器的大小自动重新布局子控件。
  • FlowLayoutPanel控件提供了一种自动流动布局的方式,使子控件可以根据空间的可用性自动调整位置。
  • 子控件可以按照添加的顺序依次排列,或者可以根据特定的布局样式进行排序。
  • FlowLayoutPanel控件提供了一些属性和方法,用于控制子控件的间距、对齐方式、换行行为等。
  • 通过设置FlowLayoutPanel控件的Dock属性或将其放置在其他容器控件中,可以实现更复杂的布局。
    它解决了上面控件布局问题,也就是控件发生大小变化后与之相邻的控件边距不会发生变化,这样项目的样式整体看着就协调了。
    还要一个与FlowLayOutPanel控件功能类似的控件是TableLayoutPanel控件,它是一个表格布局容器。

到了这里,关于winform-SunnyUI控件解决大小位置变化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MFC 更改控件的大小和位置

    获取当前主窗体的位置rect 获取某一个控件当前的位置 修改位置 移动位置

    2024年02月09日
    浏览(33)
  • QT学习笔记:调整控件大小和位置

    前面的文章,我讲了怎么用layout去布局。但布局做完后,发现界面有点怪。比如,最低下的“清除”按钮这么大,“消息体”这个label没有位于中间等。下面,我就来讲下怎么把界面继续优化。 1、调整“清除”按钮大小和位置 (1)在“sizePolicy”中,选择Fixed。 (2)把左边

    2024年02月12日
    浏览(56)
  • Flutter 实现按位置大小比例布局的控件

    做视频监控项目时需要需要展示多分屏,比如2x2、3x3、414等等,如果每一种分屏都单独实现会很麻烦,而且不能支持用户定制。最好的方式还是实现一个通用的分屏容器,而且采样比例计算位置大小,可以适配任意尺寸。 最直观的实现方式是获取控件宽高然后按比例计算,但

    2024年02月13日
    浏览(40)
  • 使用双缓冲技术解决winform窗体控件卡顿(dataGridView加载数据缓慢)

    在做C/S项目中,做好的窗体出现了页面加载控件缓慢,放大、缩小窗体之后,窗体加载卡顿,以及数据渲染缓慢。 百度介绍:我们看电视时,看到的屏幕称为OSD层,也就是说,只有在OSD层上显示图像我们才能看到。现在,我需要创建一个虚拟的、看不见但是可以在上面画图(

    2024年02月02日
    浏览(42)
  • 界面控件DevExpress WinForms全新的UI模板,解决各种业务线需求!

    去年秋天DevExpress官方发布了一个新的 WinForms UI模板预览版(第一个EAP只提供给DevExpress宇宙版激活的用户) ,这些精炼的、随时可用的“模板”旨在启动表单设计/开发过程。有了这个模板,用户可以创建/交付现成的UI解决方案,并及时解决各种业务线(LOB)需求(并且在使用

    2024年02月11日
    浏览(48)
  • 解决QT中UI控件布局更改后运行结果没有发生变化的问题

    在学习QT中,遇到了一个问题,那就是当我UI中更改了控件布局后,运行的结果却并没有发生改变,于是我上网查找了一些资料,大多略显麻烦。 效果如下:这是UI控件更改布局后  这是运行后结果 显然,UI文件中并没有更新。 我的解决方案是: 1.首先在项目文件中找到UI文件

    2024年02月11日
    浏览(82)
  • (完美解决)matplotlib图例(legend)如何自由设置其位置、大小以及样式。

    前言 我们知道,这一条代码会帮我们显示图例,而且通常,其会放置在图片中一个不错的位置。但是如果我们的数据,占满了整个图像,此时,其放的位置就会出问题了。 那么我们该如何自由设置图例位置呢? 位置:loc 这个参数内置了一些位置,如果这些位置恰好有你想要

    2023年04月09日
    浏览(49)
  • 【入门级图文教程】在Visual Studio中创建自定义Winform控件库并在其他解决方案中引用

    目录 本教程使用到的相关软件或产品: 教程正文:         创建用户控件库:         添加自定义控件项:         在其他解决方案中引用: Windows 10 专业版        10.0.19044 Microsoft Visual Studio Community 2022 (64 位)  版本17.3.2 「.NET 桌面开发」工作负荷(在开始菜单

    2024年02月10日
    浏览(48)
  • Android布局字体大小不根据用户设置字体大小变化而变化

    先获取用户设置字体配置 fontSize 正常是1 大的是1.2 小的是 0.9 不一定就是这个值 差不多就是这样的 然后设置字体大小,如果像设置16sp 即可

    2024年01月25日
    浏览(47)
  • QT实现窗口大小随分辨率变化而变化

    先上三张效果图,分别是原窗口、等比放大窗口和等比缩小窗口。 实现原理,就是借用QGraphicsView的缩放功能来实现的,并且做好QGraphicsView的防锯齿设置,就能完美的适应各种不同分辨率的显示器上了。 分辨率转换原理,如果窗口需要放在大分辨率的显示器上,需要将原窗口

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包