[英]Dynamic resizing of DataGrid according to other control
我有2个控件:dataGridView和Label。 我将一些文件加载到datagrid中,并在Label中显示文件名。 现在,我正在根据窗口大小动态更改Label的最大宽度,但是如果我想使用最大高度,该怎么办。 我的意思是,无论如何,如果Label浮动datagrid,我该如何在Label下调整datagrid的大小(某些功能说这两个控件不能“浮动”-很抱歉,我对此不知道更好的英语单词)。 还是有一种方法,当我将鼠标悬停在标签末尾时,如何在标签末尾添加3个点,并显示标签中的其余内容?
谢谢
对于文本缩短,请使用:
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";
完整的文章可以在这里找到。
使用TableLayoutPanel创建动态的流动布局。 您可以将标签“停靠”到布局的一个单元格,并在标签增长时使其自动增长。 DataGrid将自动调整大小并重新定位。
除非您为数据显示目的而固定网格的大小,否则可能要采用顺畅的布局。
但是,您可以修改绑定代码,以便如果标签文本的长度超过某些确定的字符数,则可以将全文存储在工具提示中,并对所有超出该字符数的内容进行删除。 可能还要在标签文本上加上省略号。 就像是:
int maxLength = 1000; 如果(bindableText.Length> maxLength){label.Tooltip = bindableText; label.Text = bindableText.Remove(maxLength)+“ ...”; }
或者,您可以测量标题的像素并对其进行动态修改:
System.Drawing.Graphics myG = Graphics.FromImage(new Bitmap(1, 1));
int numberPixel = myG.MeasureString(myTitle, myFontTitle);
if (numberPixel > XXX)
{
myTitle = myTitle.Substring(0,YYY) + "...";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.