• 无法修改Form尺寸的解决方法


    最近在做一个小程序,需要创建一个很小的无边框窗口,窗口的高度大概是25个像素,于是新建一个普通Form,并如下编码:

    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;

    namespace ClickThroughTest
    {
        
    public partial class ClickThroughForm : Form
        {
            
    public ClickThroughForm()
            {
                InitializeComponent();

                
    this.FormBorderStyle = FormBorderStyle.FixedSingle;
                
    this.StartPosition = FormStartPosition.Manual;
                
    this.Text = String.Empty;
                
    this.ShowInTaskbar = false;
                
    this.ControlBox = false;
            }

            
    public void AdjustSize()
            {
                Size newSize 
    = new Size(8025);
                
    this.Size = newSize;
            }
        }
    }

    奇怪的事情发生了,窗口的大小比我指定的大了不少,用Spy4win看了看,好像是124*36,而不是我指定的80*25,如下图所示:

     

    抓耳挠腮许久,又反复检查代码,肯定自己没有在什么地方犯错误,由反复修改尺寸值测试,发现只要大小大于124*36就能正确设置Size,否则的话就无法正确显示。

    无奈之下只好google之,发现好像是winform的一个bug,寻找解决方案,无果。

    大概一个小时之后,正郁闷的时候,突然发现MaximunSize和MinimumSize两个属性,死马当做活马医,反复测试之后修改代码如下:

            public void AdjustSize()
            {
                Size newSize 
    = new Size(8025);
                
    this.MaximumSize = this.MinimumSize = newSize;
                
    this.Size = newSize;
            }

    很惊奇的发现居然好了,效果如下:

     

     注意:必须同时设置MaximumSize和MinimumSize才能解决这个问题,否则还是显示错误,MinimumSize可以随意设置,比如new Size(1, 1)。

    虽然是个小问题,不过有时候可能用得到,分享一下,呵呵 O(∩_∩)O~

     [Update] 终于实现快速工具栏了,记录一下,呵呵。红框中就是纠正尺寸大小问题的小工具栏。

     

  • 相关阅读:
    Sqlserver 批量数据更改
    mysql not in、left join、IS NULL、NOT EXISTS 效率问题记录
    SQLServer 与 MySQL
    MySQL 行号(类似SQLServer的row_number())
    c# 字符串排序 (面试题)
    c# 多线程里面创建byte数组发生内存溢出异常求解
    c# 遇到的问题,求解?
    solr-4.10.3.tgz.tgz下载
    VMware虚拟机克隆或复制linux后无法上网的解决方案
    通配符的匹配很全面, 但无法找到元素 'dubbo:application' 的声明。
  • 原文地址:https://www.cnblogs.com/leafyoung/p/1654773.html
Copyright © 2020-2023  润新知