表格的宽度不能小于140像素。为什么?

时间:2013-08-28 21:24:50

标签: c# winforms width

我在Visual Studio 2012中创建了默认的Windows窗体应用程序项目。当我运行程序时,看到窗体的宽度不能小于140像素。为什么?以及如何克服这种奇怪的限制?

4 个答案:

答案 0 :(得分:7)

我一直在寻找解决方案,而且MinimumSize(0,0)没有任何效果。想通了,将MinimumSize设置为(1,1)实际上解决了问题,在显示我的表单后,它的大小正确小于140px。

应该触发弹出对话框的( ListView )_ csvLv上的列点击事件:

        var topAnchor = _csvLv.PointToScreen(new Point(
            _csvLv
                .Columns
                .OfType<ColumnHeader>()
                .Where(c => c.DisplayIndex < e.Column)
                .Sum(c => c.Width),
            0));

        Left = topAnchor.X;
        Top = topAnchor.Y;

        MinimumSize = new Size(1,1);
        ClientSize = new Size(_csvLv.Columns[e.Column].Width, 100);

        ShowDialog();

答案 1 :(得分:2)

用户将无法在该顶部使用窗口的最小化,最大化和关闭按钮。我不相信你可以用Sizable FormBorderStyle改变那种行为。这是一个可用性的东西。

如果删除边框,例如将其设置为None,则可以通过以下方式将其设置为您想要的编程方式:

form.Width = [...];

您可以使用边框类型调整其他表单的大小:None,FixedToolWindow和SizableToolWindow。 ToolWindows也不会让你低于一定数量,但是None会让你做任何超过2px的事情。你可以将它设置为低于该值的某个值,而不会出现异常,但它不会做任何事情。

答案 2 :(得分:2)

试试这个。 自动调整否 AutosizeMode growOnly FormBorderStyle SizableToolWindow&lt; ==这个人做到了 我仍然可以移动窗体并调整它(宽度)减去tan 112

答案 3 :(得分:1)

我从不使用formborders ..我总是喜欢使用FormBorderstyle.None

要调整大小,您必须添加一些代码。

放一个pictureBox,在其中添加一个手柄img并将其放在角落里。

public Form1()
    {
        InitializeComponent();
        pictureBox1.MouseDown += new MouseEventHandler(Form1_MouseDown);
        pictureBox1.MouseMove += new MouseEventHandler(Form1_MouseMove);
        pictureBox1.MouseUp += new MouseEventHandler(Form1_MouseUp);
    }

    void Form1_MouseUp(object sender, MouseEventArgs e)
    {
        isHolding = false;
    }

    void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        if (isHolding)
        {
            int diffX = this.Width - pictureBox1.Left;
            int diffY = this.Height - pictureBox1.Top;
            pictureBox1.Left += e.X - curX;
            pictureBox1.Top += e.Y - curY;
            this.Width = pictureBox1.Left + diffX;
            this.Height = pictureBox1.Top + diffY;                
        }
    }

    void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        isHolding = true;
        curX = e.X;
        curY = e.Y;
    }

    int curX = 0, curY = 0;
    bool isHolding = false;