C#,tabControl,每个选项卡的不同 window 大小
C#, tabControl, different window size of each tab
我有一个带有两个选项卡的 tabControl。单击 tab2 时,我需要根据第二个选项卡中 dataGrid 的宽度更改 window 大小。我有以下代码:
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 的属性...自动调整大小 windows,但我什么也没发现...
在 dataGrid 中,我使用 AutoSizeColumnMode: AllCells,因为我想根据其中的文本字符串长度调整单元格大小,并且我想为 window.
实现相同的行为
谢谢。
我尝试实现了您的 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;
}
我有一个带有两个选项卡的 tabControl。单击 tab2 时,我需要根据第二个选项卡中 dataGrid 的宽度更改 window 大小。我有以下代码:
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 的属性...自动调整大小 windows,但我什么也没发现...
在 dataGrid 中,我使用 AutoSizeColumnMode: AllCells,因为我想根据其中的文本字符串长度调整单元格大小,并且我想为 window.
实现相同的行为谢谢。
我尝试实现了您的 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;
}