我有一个带有两个标签的tabControl。当我点击tab2时,我需要更改窗口大小,通过第二个选项卡中的dataGrid的宽度。我有以下代码:
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if (tabControl1.SelectedTab == tabControl1.TabPages["tabPage2"])
{
//FormValue.form2.Width = magical_function_return_dataGridwidth();
txtNumber.Select();
}
else
{
FormValue.form2.Width = 580;
}
}
还是有更优雅的方式。我正在玩dataGrid的属性...自动调整窗口大小,但我什么都没找到......
在dataGrid中我使用AutoSizeColumnMode:AllCells,因为我希望通过文本字符串长度调整单元格大小,我希望为窗口实现相同的行为。
谢谢。
答案 0 :(得分:1)
我实现了magical_function_return_dataGridwidth
功能。
您要查找的宽度来自RowHeadersWidth
,DataGridViewColumn
个对象,滚动条(如果可见)和常规填充/边框等。
我使用了一个50像素的令人讨厌的常数来处理我无法解决的所有比特,但对我来说它能正常工作并处理垂直滚动条的存在。
它无论如何都不是理想的解决方案,但希望它会对你有帮助。
private int magical_function_return_dataGridwidth(DataGridView dgv)
{
int totalWidth = dgv.RowHeadersWidth + 50;
foreach (var scroll in dgv.Controls.OfType<VScrollBar>())
{
if(!scroll.Visible)
totalWidth -= System.Windows.Forms.SystemInformation.VerticalScrollBarWidth;
}
foreach (DataGridViewColumn col in dgv.Columns)
totalWidth += col.Width;
return totalWidth;
}