根据其他控件动态调整DataGrid的大小

时间:2011-02-16 09:50:22

标签: c# winforms resize

我有2个控件:dataGridView和Label。我将一些文件加载​​到datagrid中,并在Label中显示文件的名称。现在我根据窗口大小动态更改Label的最大宽度,但如果我想使用最大高度,我该怎么办。我的意思是,无论如何,如果Label overfloating datagrid,我怎么能在Label下面调整datagrid(一些功能说这两个控件不能“过浮动” - 对不起,我不知道更好的英语单词)。 或者,有什么方法可以在标签末尾添加3个点,当我将鼠标放在标签上时,标签中的其他内容会显示出来吗? Image shows "overfloating" label above datagridview

谢谢

4 个答案:

答案 0 :(得分:2)

对于文本缩短,请使用:

Label myLabel = new Label();
myLabel.Location = new System.Drawing.Point(10, 10);
myLabel.Size = new System.Drawing.Size(100, 15);
myLabel.AutoEllipsis = true;
myLabel.Text = "Some Text That Will Be Ellipsed";

可以找到全文文章here

答案 1 :(得分:1)

使用TableLayoutPanel创建动态流动布局。您可以将标签“停靠”到布局的一个单元格,并在标签生长时自动增长。 DataGrid将自动调整大小并重新定位。

答案 2 :(得分:1)

除非您希望修改网格的大小以用于数据显示,否则流动的布局可能是最佳选择。

但是,您可以修改绑定代码,以便在标签文本长于某些确定数量的字符时,可以将全文存储在工具提示中,并对除此字符数之外的所有内容执行.Remove。可能还想在标签文本上附加省略号。类似的东西:

int maxLength = 1000; if(bindableText.Length> maxLength) { label.Tooltip = bindableText; label.Text = bindableText.Remove(maxLength)+“...”; }

答案 3 :(得分:0)

或者您可以测量标题的像素并动态修改它:

System.Drawing.Graphics myG = Graphics.FromImage(new Bitmap(1, 1));
int numberPixel = myG.MeasureString(myTitle, myFontTitle);

if (numberPixel > XXX)
{
   myTitle = myTitle.Substring(0,YYY) + "...";
}