C# MDI - 如何防止滚动条?

标签 c# winforms mdi

最好用图像显示,我可以将窗体拖离 MDI 父级的边缘,然后出现滚动条。

更确切地说,子表单被锁定到父表单的区域。

我已经完成了对解决方案的搜索,(其中很多都在 2 年多以前得到了回答,所以我希望它们已经过时了)并且只遇到过在 Move 事件中检查坐标的人......很好,但如果我有20 个表格……或 100 个表格。我无法对所有这些进行编码,这有点傻。当然,我可以在父窗体上设置某个属性。

MDI Scrollbar problem

最佳答案

你可以做这样的事情......

步骤!:您必须制作基本表单(如用户控件)

并将此代码放在该表单中

 namespace Controls
 {
  public partial class BaseForm : Form
  {
    public BaseForm()
    {
      InitializeComponent();
      StartPosition = FormStartPosition.WindowsDefaultLocation;
      MaximizeBox = false;
      Width = 806;
      //Width = 850;
      //Height = 760;
      Height = 730;
      //Width = 790;
      //Height = 617;
    }


    protected override void WndProc(ref Message m)
    {
      const int WM_SYSCOMMAND = 0x0112;
      const int SC_MOVE = 0xF010;
      //ShowScrollBar(this.Handle, (int)ScrollBarDirection.SB_BOTH, false);
      switch (m.Msg)
      {
        case WM_SYSCOMMAND:
          int command = m.WParam.ToInt32() & 0xfff0;
          if (command == SC_MOVE)
            return;
          break;
      }
      base.WndProc(ref m);
    }
  }
}

然后在每种形式中你都必须像这样指定......
public partial class childform : BaseForm
{
   .......
}

确保您的所有子表单大小都应该是基本表单中指定的大小
  • 最小大小为 0,0
  • max Sixze 也是 0,0
  • startposition - windowsdefaultlocation
  • windowstate - 正常

  • 我希望它会帮助你..

    关于C# MDI - 如何防止滚动条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7915164/

    相关文章:

    c# - 如何更改表单中存在的所有 TreeView

    c# - 获取 Windows 窗体的大小

    WPF MDI child

    electron - Electron是否具有类似于WinForm MDI的MDI

    C# 检查是否安装了 Java && version(int)

    c# - MonoGame SpriteFont 无法在 iOS 上运行

    mysql - VB.NET 和 MySql UPDATE 查询

    c# - 在表单加载时停止 MdiChild 表单在父容器内漫游

    c# - && .NET 中的操作

    c# - 在 Mac 上从命令行运行 ASP.NET 5 应用程序时是否使用 launchSettings.json?