0

我有一个作业,我需要使用 C# 创建一个 winforms 游戏。我有以下组件:

  • 具有自定义绘制事件的面板子类
  • 具有默认 Windows UI 元素的面板。

我希望他们这样安排:

在此处输入图像描述

因为我手动在中心面板上绘制,所以我想将其设置为Width, 并Height固定,因此Form包含它的子类将显示整个面板。

我尝试在面板子类中手动设置大小:

Width = someFixedWidth;
Height = someFixedHeight;

然后将其添加到包含Form

GamePanel panel = new GamePanel(...);
panel.Dock = DockStyle.Center;
this.AutoSize = true;
this.AutoSizeMode = AutoSizeMode.GrowAndShrink;
this.Controlls.Add(panel);

使用这个,我认为,表单将尊重面板的大小,但它只是将窗口缩小到如此之小,以至于什么都不可见,只有标题。

所以我的问题是,我如何能够手动设置 GamePanel 的大小,然后将其停靠在表单的中心,以便表单尊重我设置的大小,并且不会使其更小/更大?

4

2 回答 2

1

Dock 属性用于定义组件在调整容器大小时的行为 Container (Form) 你做屏幕的方式不是集中的,而是根据屏幕变化调整大小,理想的是使用一种方法来重新定位控件并设置其尺寸。看到这个:

SuspendLayout();

Width = someFixedWidth;
Height = someFixedHeight;

panel.Size = new Size(panelWidth, panelHeight);

panel.Location = new Point( ClientSize.Width / 2 - panelWidth / 2, ClientSize.Height / 2 - panelHeight / 2);
panel.Anchor = AnchorStyles.None;
panel.Dock = DockStyle.None;

ResumeLayout();
于 2012-09-20T13:48:29.303 回答
0

就我而言,我编辑了面板的最小高度/宽度并且它起作用了。

我尝试编辑与设计相关的代码,但不建议重写自动生成的代码。

谢谢你。

于 2017-10-24T00:01:16.507 回答