动态改变GridView的宽度

本文介绍了如何在数据绑定到GridView后动态调整其宽度。通过计算各列中最大宽度的字符数,尤其是考虑到中文和英文字符宽度的区别,实现精确的宽度设置。函数会依据汉字数量转换成等效英文字符长度,并累加得到总宽度,最后乘以单个字符的屏幕显示宽度来确定GridView的实际像素宽度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我通常用GridView绑定datatable,由于需要动态绑定到不同的datatable所以需要动态调整GridView的宽度。所以写了这个函数实现该功能。GridView的宽度需要根据各个列中最大宽度来累加获得。在求各个列的最大字符宽度的时候需要对中文和英文加以区分,因为字符串“序号”和“id”的length属性都为2,但是显示的时候一个汉字占据的宽度却相当于2个英文字符。要想达到准确的显示效果,我对含有汉字的字符串根据汉字的数目确定该字符串等价英文字符的长度,例如字符串“序号id”的length属性为4,我自己通过函数获得的长度为6.确定了每列的最大字符数后,累加即可获得GridView的宽度字符,然后乘于一个字符在屏幕上的显示宽度oneLetterLength常量后就是GridView宽度。

public    void  SetGridViewWidth(GridView gridview1)
        
{
            
int rowcount = gridview1.Rows.Count;   //行数
            int colcount = gridview1.Columns.Count;  //列数
            int i=0,j=0;
            
int[] cellwidth = new int[colcount];   //数组用来存储各个列的最大字符数
            int gridviewwidth = 0;  //GridView宽度
            Unit width = 0;  
            
string temp = null;
            
int tempLength = 0;

            
for (i = 0; i < rowcount; i++)     //循环数据项,获得各个列的最大字符宽度
            {
                
for (j = 0; j < colcount; j++)
                
{
                    temp 
= gridview1.Rows[i].Cells[j].Text;
                    tempLength 
= LengthOfLetter(tem
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值