Как сделать так, чтобы данные сетки не сталкивались с кнопкой при изменении размера формы? - PullRequest
0 голосов
/ 27 августа 2018

У меня есть форма в WinForms, которая выглядит как this

Я хочу, чтобы пользователь мог изменить размер формы.Кнопки останутся одинакового размера, и при этом он будет расти.

Прямо сейчас, сетки данных сталкиваются с кнопками, и это выглядит довольно уродливо .Я хочу, чтобы просмотры сетки данных росли, но не сталкивались с кнопками.

Я пробовал много разных комбинаций кода, и он не работает так, как мне хотелось.Я хочу, чтобы кнопки находились между представлениями данных.

Дизайнер:

 // 
        // dataGridView1
        // 
        this.dataGridView1.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.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
        this.dataGridView1.Location = new System.Drawing.Point(13, 60);
        this.dataGridView1.Name = "dataGridView1";
        this.dataGridView1.RowTemplate.Height = 24;
        this.dataGridView1.Size = new System.Drawing.Size(291, 326);
        this.dataGridView1.TabIndex = 0;
        // 
        // dataGridView2
        // 
        this.dataGridView2.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.dataGridView2.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
        this.dataGridView2.Location = new System.Drawing.Point(566, 60);
        this.dataGridView2.Name = "dataGridView2";
        this.dataGridView2.RowTemplate.Height = 24;
        this.dataGridView2.Size = new System.Drawing.Size(284, 326);
        this.dataGridView2.TabIndex = 1;
        // 
        // button1
        // 
        this.button1.Anchor = System.Windows.Forms.AnchorStyles.None;
        this.button1.Location = new System.Drawing.Point(375, 93);
        this.button1.Name = "button1";
        this.button1.Size = new System.Drawing.Size(121, 83);
        this.button1.TabIndex = 2;
        this.button1.Text = "button1";
        this.button1.UseVisualStyleBackColor = true;
        // 
        // button2
        // 
        this.button2.Anchor = System.Windows.Forms.AnchorStyles.None;
        this.button2.Location = new System.Drawing.Point(375, 187);
        this.button2.Name = "button2";
        this.button2.Size = new System.Drawing.Size(121, 83);
        this.button2.TabIndex = 3;
        this.button2.Text = "button2";
        this.button2.UseVisualStyleBackColor = true;
        // 
        // button3
        // 
        this.button3.Anchor = System.Windows.Forms.AnchorStyles.None;
        this.button3.Location = new System.Drawing.Point(375, 281);
        this.button3.Name = "button3";
        this.button3.Size = new System.Drawing.Size(121, 83);
        this.button3.TabIndex = 4;
        this.button3.Text = "button3";
        this.button3.UseVisualStyleBackColor = true;
        // 
        // Form1
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(862, 398);
        this.Controls.Add(this.button3);
        this.Controls.Add(this.button2);
        this.Controls.Add(this.button1);
        this.Controls.Add(this.dataGridView2);
        this.Controls.Add(this.dataGridView1);
        this.Name = "Form1";
        this.Text = "Form1";
        ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
        ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit();
        this.ResumeLayout(false);

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Используйте свойство привязки для вашего Datagridview и кнопок.

0 голосов
/ 27 августа 2018

Попробуйте TableLayoutPanel.Вы можете определить 3 столбца, первый для 50%, второй для ширины кнопок (или для AutoSize, сначала установите абсолютное или процентное значение, затем разместите кнопки. Один из них вернется назади измените на autosize, иначе столбец уменьшится до нуля, если в столбце ничего нет), а третий - до 50%.Тогда вам понадобится как минимум 3 строки, по 1 строке на кнопку.

Поместите свой первый DataGridView в ячейку 0,0 (столбец 0, ряд 0) и установите для RowSpan значение 3. Поместите свой второй DataGridView в ячейку 2., 0 (столбец 2, строка 0) и, опять же, установите RowSpan на 3. Затем в средний столбец (столбец 1) поместите 3 кнопки, по одной в каждом ряду.Вы можете удалить привязку в этой точке, чтобы кнопки плавали в середине столбца.Установите для ваших видов сетки данных DockStyle.Fill, и у вас не должно возникнуть проблем с DataGridRow, перекрывающим кнопки.

Вот несколько снимков экрана.

Column Settings

Row Settings

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...