我已将一些数据绑定到WinForm中的DataGrid。无论我在更改列的大小(例如AutoSizeMode
和DataGridViewAutoSizeColumnMode
)方面做了什么,我都无法让我的DataGrid填充我的WinForm,当我调整WinForm的大小时,Datagrid的大小是修复并没有使用WinForm调整大小。要么我得到一个滚动条,如果dataGrid比表格大,或者我在最后一列之后留下了一个巨大的空间。
我得到的结果如下图所示。任何人都可以帮助使datagrid适合表单,并使用表单调整大小?谢谢。
这不是我的DataGrid,只是来自互联网的图片,但它与我的结果相同。
这是代码
PS:我还没有找到100%的解决方案,但是一个解决方法,问题是DataGrid源是一个DataTable,它有一个DataTableStyle,并且一个人以某种方式调整所有列的大小(仍然无法弄清楚)因为我的解决方法是我在菜单中添加了一个Auto Align按钮,它通过计算DataGridView宽度来重置列宽,并且只是根据DataTable中的列数来调整它,然后调整每个{{ 1}}在DataTablestyle和voilà答案 0 :(得分:1)
DataGridView上有一个名为AutoSizeColumnMode的属性,如果你想达到预期的效果,请确保将其设置为Fill(参见下面的图片)。并且还要注意,您需要将AutoSizeMode设置为至少填充一列。
修改强>
好的,我会为你做一个例子。让我们假设你有一个名为Form1的空表单的WinForm应用程序。只需将下面的代码粘贴到您的表单中,然后告诉我它是否可以正常工作:
DataGridView dataGridView1;
public Form1()
{
InitializeComponent();
dataGridView1 = new System.Windows.Forms.DataGridView();
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridView1.Dock = DockStyle.Fill;
// we will create two columns that will resize based on content within cells
for (var i = 0; i < 2; i++)
{
var column = new DataGridViewTextBoxColumn()
{
HeaderText = $"Column{i} - AllCells",
AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
};
dataGridView1.Columns.Add(column);
}
// And one column that fill fill the rest of the grid
var fillColumn = new DataGridViewTextBoxColumn()
{
HeaderText = "FillColumn",
AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
};
dataGridView1.Columns.Add(fillColumn);
// so we've got grid with 3 columns let's fill some random data
dataGridView1.Rows.Add("test", "test", "test test test");
dataGridView1.Rows.Add("test", "test", "test test test");
dataGridView1.Rows.Add("test", "test", "test test test");
dataGridView1.Rows.Add("test", "test", "test test test");
Controls.Add(dataGridView1);
}
答案 1 :(得分:1)
Anchor 属性可以完成这项工作。只需选择所有方向(上,下,左,右)。您可以由设计人员或以编程方式完成。
<div class="gallery-wrap">
<div class="img-big-wrap">
<a id="mainimagelink" href="#">
<img id="bigImage" class="img-big-wrap" src="http://via.placeholder.com/300.png" alt="">
</a>
</div>
<div id="myImgDiv" class="img-small-wrap">
<div class="item-gallery"> <img src="https://getuikit.com/v2/docs/images/placeholder_200x100.svg" data-link="1"> </div>
<div class="item-gallery"> <img src="https://cdn.dribbble.com/users/312581/screenshots/1676038/female-placeholder_1x.png" data-link="2"> </div>
<div class="item-gallery"> <img src="https://d30y9cdsu7xlg0.cloudfront.net/png/1134418-200.png" data-link="3"> </div>
<div class="item-gallery"> <img src="https://source.sierrawireless.com/~/media/developer%20zone/icons/sw_dz_icons_placeholder.ashx?h=240&la=en&w=240" data-link="4"> </div>
</div>
答案 2 :(得分:1)
如果您希望dataGridView填充表单,
然后在DataGridView中有一个名为property
的{{1}}。将此属性设置为填充
并且dataGridView将完全填充表单,即使在调整大小时,它也会对调整大小做出响应。 如果您想填写表单,这将适用于您。
但是如果表单中有其他组件,则必须使用Dock
属性。由于dataGridView将使用Form重新调整大小,而不会完全填充表单。