c# - 使两个窗体控件随窗口均匀调整大小

标签 c# winforms windows-forms-designer

我有一个在设计器中看起来像这样的表单,两个 GridView ,完全相同的属性。它工作了一点,但现在当我调整它的大小时,只有右边的 GridView 水平扩展,它们都垂直扩展。此外,锁定表单和控件并不能阻止我调整表单的大小,这将是最简单的解决方案。

什么会导致这种情况? GridView 上唯一相关的属性是每个 View 上的顶部、右侧、左侧、底部的 anchor 。请参阅底部的代码。

下面是一些截图:

这是设计器中的表单:

In Designger

这是我尝试调整它大小时的形式:

Form resized

如您所见,右半部分更宽,我也无法正常调整它的大小,因为我尝试对角线调整大小,它主要垂直增长,水平调整大小做同样的事情。我一直有调整大小的问题,但两个 gridviews 起初都是同样调整大小,我没有做任何改变,他们停止了。我在这里错过了什么吗?为什么锁定表单不能阻止它调整大小?我也锁定了所有控件。

以防万一,下面是设计器中 GridView 的代码,第一个是正确的:

    // clientHistoryTableDataGridView
    // 
    this.clientHistoryTableDataGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
    | System.Windows.Forms.AnchorStyles.Left) 
    | System.Windows.Forms.AnchorStyles.Right)));
    this.clientHistoryTableDataGridView.AutoGenerateColumns = false;
    this.clientHistoryTableDataGridView.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
    this.clientHistoryTableDataGridView.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
    this.clientHistoryTableDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
    this.clientHistoryTableDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
    this.dataGridViewTextBoxColumn4,
    this.dataGridViewTextBoxColumn5,
    this.dataGridViewTextBoxColumn6});
    this.clientHistoryTableDataGridView.DataSource = this.clientHistoryTableBindingSource;
    this.clientHistoryTableDataGridView.Location = new System.Drawing.Point(426, 52);
    this.clientHistoryTableDataGridView.Name = "clientHistoryTableDataGridView";
    this.clientHistoryTableDataGridView.RowHeadersVisible = false;
    this.clientHistoryTableDataGridView.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.True;
    this.clientHistoryTableDataGridView.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
    this.clientHistoryTableDataGridView.Size = new System.Drawing.Size(430, 360);
    this.clientHistoryTableDataGridView.TabIndex = 4;
    this.clientHistoryTableDataGridView.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.clientHistoryTableDataGridView_CellContentClick);

和左边:

    // clientTableDataGridView
    // 
    this.clientTableDataGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
    | System.Windows.Forms.AnchorStyles.Left) 
    | System.Windows.Forms.AnchorStyles.Right)));
    this.clientTableDataGridView.AutoGenerateColumns = false;
    this.clientTableDataGridView.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;
    this.clientTableDataGridView.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
    this.clientTableDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
    this.clientTableDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
    this.dataGridViewTextBoxColumn1,
    this.dataGridViewTextBoxColumn2,
    this.dataGridViewTextBoxColumn3});
    this.clientTableDataGridView.DataSource = this.clientTableBindingSource;
    this.clientTableDataGridView.Location = new System.Drawing.Point(1, 52);
    this.clientTableDataGridView.Name = "clientTableDataGridView";
    this.clientTableDataGridView.RowHeadersVisible = false;
    this.clientTableDataGridView.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.True;
    this.clientTableDataGridView.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
    this.clientTableDataGridView.Size = new System.Drawing.Size(428, 360);
    this.clientTableDataGridView.TabIndex = 3;
    this.clientTableDataGridView.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.clientTableDataGridView_CellContentClick);

编辑:

我通过同时使用这两个答案解决了调整大小问题。并且还禁用主窗体上的自动调整大小并将 borderstyle 设置为可调整大小。

最佳答案

可能的解决方案:

添加带有 anchor Left|Top|Right|BottomSplitContainer

SplitterDistance 设置为 SplitContainer 宽度的一半

将 clientTableDataGridView 放在左侧面板中并设置 Dock = Fill

将 clientHistoryTableDataGridView 放在右侧面板中并设置 Dock = Fill

关于c# - 使两个窗体控件随窗口均匀调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30662294/

相关文章:

c# - 仅适用于 ie8 的复选框样式表

c# - 自定义控件上的单击事件未触发(从包含表单分配的事件)

wpf - .NET 4.0 和 WindowsFormstHost 的窗口焦点问题

c# - 配置 DataGridView 的 'AutoGenerateColumns' 属性

c# - 如何创建一个可以在设计时订阅另一个 WinForm 控件的 C# 属性?

c# - 什么事情会触发 Visual Studio 重新生成 *.Designer.cs 文件?

c# - Excel 后台进程未关闭

c# - aspx 可重用组件

c# - 如何更改 Windows Phone 中 MenuFlyout 的外观?

c# - 当 DropdownStyle 为 DropDownList 时,如何更改 ComboBox 的背景颜色?