⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 从datagrid的标题居中说起_mysky.htm

📁 自己总结的一些VB资料
💻 HTM
📖 第 1 页 / 共 2 页
字号:
  <TR>
    <TD class=modtl width=7>&nbsp;</TD>
    <TD class=modtc noWrap>
      <DIV class=modhead><SPAN class=modtit>查看文章</SPAN></DIV></TD>
    <TD class=modtc noWrap align=right></TD>
    <TD class=modtr width=7>&nbsp;</TD></TR></TBODY></TABLE>
<DIV class=modbox id=m_blog>
<DIV class=tit>从Datagrid的标题居中说起</DIV>
<DIV class=date>2007-09-03 10:37</DIV>
<TABLE style="TABLE-LAYOUT: fixed">
  <TBODY>
  <TR>
    <TD>
      <DIV class=cnt id=blog_text>
      <P>Henry手记—从Datagrid的标题居中说起</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      韩睿&nbsp;&nbsp; ( 02/20/2003)</P>
      <P></P>
      <P>编程的乐趣是什么?相信各人都有自己的见解。Henry最大的快乐是享受创造的喜悦,而且这种喜悦都是建立在可以看得到的实践上的。今天这篇小文源头很简单,是我中午在CSDN论坛上看到一个网友发的帖子,当时也回了帖,但话语不详,更重要的是下午稍稍一试,得到了两种实现的方法,不亦乐乎,尽管事务缠身,也赶紧记下。</P>
      <P>命题:如果在.NET中使Datagrid的标题文字居中。</P>
      <P>分析一:</P>
      <P>这个命题似乎不难,主要是Datagrid作者没有提供CaptionAlign这样的属性给大家,所以……</P>
      <P>那么怎么解决它呢?我想到最直接的方法,就是给标题文字前面加上适当的空格数,使标题文字推到中间去。好,说做就做。</P>
      <P>(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      要知道在当前环境下,Datagrid标题栏一个英文字符占据了多大的宽度;<BR>(2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      Datagrid的宽度/字符宽度=标题栏所能容纳的字符数<BR>(3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      给已有标题的文本前面添加n个空格,n=(标题栏所能容纳的字符数-已有标题的字符数)/2</P>
      <P>代码如下所示:</P>
      <P>Private Sub Form1_Load(ByVal sender As Object, ByVal e As 
      System.EventArgs) Handles MyBase.Load</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim perWidth As 
      Integer ‘一个英文字符占据的宽度<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      Dim count As 
      Integer ‘标题栏所能容纳的字符数<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      Dim len As 
      Integer‘已有标题的字符数<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim i 
      As Integer</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; With 
      Graphics.FromHwnd(DataGrid1.Handle).MeasureString(Text:="ABCDEFGHIJKLMNOPQRSTUVWXYZ", 
      Font:=DataGrid1.Font)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      perWidth = CInt(.Width / 
      26.0!)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End 
      With<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count = 
      DataGrid1.Width / 
      perWidth<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; len = 
      System.Text.Encoding.Default.GetByteCount(DataGrid1.CaptionText)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      For i = 1 To (count - len) / 2 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      DataGrid1.CaptionText = " " + 
      DataGrid1.CaptionText<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      Next</P>
      <P>End Sub</P>
      <P>要点1如何计算一个英文字符的宽度,见代码</P>
      <P>要点2如何获得标题文本所占的字符数,要知道英文占一个字节,中文是占两个字节。解决方法就是用System.Text.Encoding.Default.GetByteCount来做。这些技巧还是很有用的,望牢记!<BR>另外,您可以用String.PadLeft属性来试试填充空字符串</P>
      <P></P>
      <P>分析二:</P>
      <P>但认真一想,这种方法还是不爽,智能化不够,于是乎就有了这种方法。即把标题文字写入一个Label里面去,然后把Label嵌入到datagrid中去,动态地调整Label的位置,不就结了!</P>
      <P>Private Sub Form1_Load(ByVal sender As Object, ByVal e As 
      System.EventArgs) Handles MyBase.Load</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LabCaption.BackColor = 
      Color.Transparent&nbsp;&nbsp; 
      ‘设为透明色<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      LabCaption.AutoSize = 
      True ‘设为可根据文本内容自动调整文本框大小<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      LabCaption.BorderStyle = 
      BorderStyle.None ‘设为无边框<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      LabCaption.ForeColor = 
      Color.White  ‘前景色设为白色,就是文字是白色字<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      DataGrid1.Controls.Add(LabCaption)  ‘将文本框嵌入Datagrid中去<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      LabCaption.Top = 
      5‘设置高度,0指的是datagrid的头部位置<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      LabCaption.Left = (DataGrid1.Width - LabCaption.Width) / 2 ‘设置居中</P>
      <P>End Sub</P>
      <P></P>
      <P>当然也有小技巧值得一说:</P>
      <P>要点1:设置文本框底色为透明。只写一句LabCaption.BackColor = 
      Color.Transparent是不行的,这样的话,系统会将背景色设置为Form的底色,因为透明是相对的嘛,想想变色龙的原理就明白了。我们得设置一步:LabCaption.Parent 
      = 
      DataGrid1这样才行,或者是和上述代码中所写的用:DataGrid1.Controls.Add(LabCaption)也可以。这里Parent属性在弹出菜单里没有,别管它,写上就行了。</P>
      <P>要点2:很遗憾,这种简单的方法需要把Datagrid的borderstyle设为None或Single,设为3D的时候Label也会有个小边框。</P>
      <P><BR>声明:本文版权与解释权归韩睿所有,如需转载,请保留完整的内容及此声明。</P>
      <P>QQ: 18349592</P>
      <P>E-Mail: <A 
      href="mailto:henry7685@hotmail.com">henry7685@hotmail.com</A></P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 请访问本人专栏:<A 
      href="http://www.csdn.net/develop/author/netauthor/Latitude/">http://www.csdn.net/develop/author/netauthor/Latitude/</A></P>
      <P></P>
      <P></P></DIV></TD></TR></TBODY></TABLE><BR>
<DIV class=opt><A title=查看该分类中所有文章 
href="http://hi.baidu.com/gallonchai/blog/category/Vb">类别:Vb</A> | <A 
title=将此文章添加到百度搜藏 onclick="return addToFavor();" 
href="http://cang.baidu.com/do/add" target=_blank>添加到搜藏</A> | 浏览(<SPAN 
id=result></SPAN>) | <A 
href="http://hi.baidu.com/gallonchai/blog/item/df25851347927c005aaf53b7.html#send">评论</A>&nbsp;(0)
<SCRIPT language=javascript>/*<![CDATA[*/var pre = [true,'MSHFLEXGRID学习笔记', 'MSHFLEXGRID学习笔记','/gallonchai/blog/item/ab5d9c95e4b05749d0135e00.html'];var post = [true,'Datagrid加入一列显示行号','Datagrid加入一列显示行号', '/gallonchai/blog/item/c8cf99117e0bb912b9127b95.html'];if(pre[0] || post[0]){	document.write('<div style="height:5px;line-height:5px;">&nbsp;</div><div id="in_nav">');	if(pre[0]){		document.write('上一篇:<a href="' + pre[3] + '" title="' + pre[1] + '">' +  pre[2] + '</a>&nbsp;&nbsp;&nbsp;&nbsp;');	}	if(post[0]){		document.write('下一篇:<a href="' + post[3] + '" title="' + post[1] + '">' +  post[2] + '</a>');	}	document.write('</div>');}/*]]>*/</SCRIPT>
 </DIV>
<DIV class=line></DIV>
<STYLE type=text/css>#in_related_doc A {
	TEXT-DECORATION: none
}
</STYLE>

<DIV id=in_related_tmp></DIV>
<SCRIPT language=javascript type=text/javascript>/*<![CDATA[*/function HI_MOD_IN_RELATED_DOC_CALLBACK(arg){    if(arg.length <= 1) return false;    var hasMore = arg[0];    var D=function(A,B){A[A.length]=B;}    if(arg.length % 2 == 0) D(arg, ["","","",""]);    var html = ['<div id="in_related_doc"><div class="tit">相关文章:</div>'];    D(html, '<table cellpadding="0" cellspacing="3" border="0">');    for(var i = 1, j = arg.length; i < j; i += 2){        D(html, '<tr>');        D(html, '<td width="15px"><a style="font-size:25px" >&#8226;</a></td><td><a href="http://hi.baidu.com/' + arg[i][3] + '/blog/item/' + arg[i][2] + '.html" target="_blank" title="' + arg[i][0] + '">' + arg[i][1] + '</a>');        D(html, new Array(10).join('\u3000'));        D(html, '</td>');        if(arg[i + 1][0] != "")            D(html, '<td width="15px"><a style="font-size:25px" >&#8226;</a></td><td><a href="http://hi.baidu.com/' + arg[i + 1][3] + '/blog/item/' + arg[i + 1][2] + '.html" target="_blank" title="' + arg[i + 1][0] + '">' + arg[i + 1][1] + '</a></td>');        else            D(html, '<td>&nbsp;</td><td>&nbsp;</td>');        D(html, '</tr>');    }    if(hasMore) D(html, '<tr><td colspan="4"><a target="_blank" href="/sys/search?pageno=1&type=7&sort=1&word=%B4%D3Datagrid%B5%C4%B1%EA%CC%E2%BE%D3%D6%D0%CB%B5%C6%F0&item=df25851347927c005aaf53b7">更多&gt;&gt;</a></td></tr>');    D(html, '</table></div><div class="line">&nbsp;</div>');    var div = document.getElementById('in_related_tmp');    if(div){        div.innerHTML = html.join('');        while(div.firstChild){            div.parentNode.insertBefore(div.firstChild, div);        }        div.parentNode.removeChild(div);    }	window.setTimeout("tracker_init('in_related_doc')",100);}if(RelatedDocData == -1){	// not supported xhr    var script = document.createElement('script');    script.type = 'text/javascript';    script.src = '/sys/search?type=8&word=%B4%D3Datagrid%B5%C4%B1%EA%CC%E2%BE%D3%D6%D0%CB%B5%C6%F0&item=df25851347927c005aaf53b7&t=' + new Date().getTime();    document.getElementsByTagName('HEAD')[0].appendChild(script);}else if(RelatedDocData == null){	GetAndEval = true;}else{	eval(RelatedDocData);}/*]]>*/</SCRIPT>

<DIV id=in_reader>
<DIV class=tit>最近读者:</DIV>
<SCRIPT>	var g_spAnnony=true;var g_read=[	["%CF%C3%C3%C5%B4%F3%D1%A7%BC%D2%BD%CC","ddfecfc3c3c5b4f3d1a7bcd2bdcc0b04","厦门大学家教"],{}];g_read.length=g_read.length-1;var _rh1="";var _rh2="";function wrreader(){	_rh1 += '<table width="100%" ><tr>';	_rh2+='<tr>';	if(g_spAnnony){		_rh1+='<td align="center" width="10%" ><img border="0" width="55" height="55" src="http://img.baidu.com/hi/img/portraitn.jpg"></td>';		_rh2+='<td>&nbsp;</td>';		if(g_read.length>0){			_rh1+='<td align="left" width="12%">';		}else{			_rh1+='<td align="left" width="100%">';		}		_rh1+="<a href='http://passport.baidu.com/?login&tpl=sp&tpl_reg=sp&u="+myref+"' target='_self'>登录</a>后,您就出现在这里。</td>";		_rh2+='<td>&nbsp;</td>'	}	if(g_read.length==0){		if(!g_spAnnony){			_rh1+='<td align=left width="100%">最近还没有登录用户看过这篇文章……</td>';			_rh2+='<td>&nbsp;</td>';		}	}else{		for(i=0,len=g_read.length;i<len;i++){			_rh1+='<td align="center" valign="bottom" width="10%" class="user"><a href="/'+g_read[i][0]+'" target="_blank"><img border="0" src="http://himg.baidu.com/sys/portraitn/item/'+g_read[i][1]+'.jpg"></a></td>';			_rh2+='<td align="center" valign="top" class="user"><a href="/'+g_read[i][0]+'" target="_blank">'+g_read[i][2]+'</a></td>';		}	}	_rh1+='<td width="100%"></td></tr>';	_rh2+='<td></td></tr></table>';	document.write(_rh1+_rh2);}wrreader();</SCRIPT>
</DIV>
<DIV class=line></DIV>
<SCRIPT language=JavaScript>allkey=allkey+"268962d15d40ed389b5027b9_df25851347927c005aaf53b7_";</SCRIPT>

<DIV id=in_comment><A name=comment></A>
<DIV class=tit>网友评论:</DIV>
<SCRIPT>function writecmt(type,id,cmtname,cmturl,portraitId){	var html1="";	if(type==1){			html1="<a href='"+cmturl+"' target='_blank' title='"+cmturl+"'><img  border='0' src='http://himg.baidu.com/sys/portraitn/item/"+portraitId+".jpg'><br>"+cmtname+"</a>";	}else{		if(cmtname=="" || cmtname=="匿名网友"){			if(cmturl==""){				html1="<a>匿名网友</a>";			}else{				html1="<a href='"+cmturl+"' target='_blank' title='"+cmturl+"'>"+cmtname+"</a>";			}		}else{			if(cmturl==""){				html1="<div class='f14' style='display:inline'>网友:<a>"+cmtname+"</a></div>";			}else{				html1="<div class='f14' style='display:inline'>网友:<a href='"+cmturl+"' target='_blank' title='"+cmturl+"'>"+cmtname+"</a></div>";			}		}	}	document.write(html1);}</SCRIPT>

<DIV id=page></DIV></DIV>
<DIV id=in_send><A name=send></A>
<FORM id=popFormSubmit name=form1 onsubmit="return checkcmtform()" 
action=/gallonchai/commit method=post><INPUT type=hidden value=8 name=ct> <INPUT 
type=hidden value=1 name=cm> <INPUT type=hidden value=df25851347927c005aaf53b7 
name=spBlogID>
<SCRIPT language=JavaScript>	document.write("<input type='hidden' name='spRefURL' value='"+window.location.href+"'>");</SCRIPT>
 
<DIV class=tit>发表评论:</DIV>
<TABLE cellSpacing=5 cellPadding=0 width=620 border=0>
  <TBODY>
  <TR>
    <TD class=f14>姓 名:</TD>
    <TD><INPUT id=spBlogCmtor style="WIDTH: 220px" onfocus=hidErr(1); 
      tabIndex=1 maxLength=49 onchange="checkname('spBlogCmtor')" 
      name=spBlogCmtor>
      <SCRIPT>document.write(" &nbsp;&nbsp; <a href='http://passport.baidu.com/?reg&tpl=sp&return_method=get&skip_ok=1&u=http://hi.baidu.com/sys/reg/' target='_blank'>注册</a>");document.write(" | <a href='http://passport.baidu.com/?login&tpl=sp&tpl_reg=sp&u="+myref+"'>登录</a>");</SCRIPT>
       
      <DIV id=nmerror style="DISPLAY: none">*姓名最长为50字节</DIV></TD></TR>
  <TR id=1_err style="DISPLAY: none">
    <TD>&nbsp;</TD>
    <TD>
      <DIV class=error id=1_err_con></DIV></TD></TR>
  <TR>
    <TD class=f14>网址或邮箱:</TD>
    <TD><INPUT id=spBlogCmtURL style="WIDTH: 360px" onfocus=hidErr(2); 
      tabIndex=2 maxLength=128 onchange="checkeandu('spBlogCmtURL')" 
      name=spBlogCmtURL> (选填)</TD>
    <SCRIPT>G("spBlogCmtor").value="";G("spBlogCmtURL").value="";</SCRIPT>
  </TR>
  <TR id=2_err style="DISPLAY: none">
    <TD>&nbsp;</TD>
    <TD>
      <DIV class=error id=2_err_con></DIV></TD></TR>
  <TR>
    <TD class=f14 vAlign=top>内 容:</TD>
    <TD><TEXTAREA id=spBlogCmtText style="WIDTH: 520px; HEIGHT: 155px" onfocus=hidErr(3); tabIndex=3 name=spBlogCmtText></TEXTAREA>
      <SCRIPT>G("spBlogCmtor").value=G("spBlogCmtor").defaultValue;G("spBlogCmtText").value="";</SCRIPT>
       </TD></TR>
  <TR id=3_err style="DISPLAY: none">
    <TD>&nbsp;</TD>
    <TD>
      <DIV class=error id=3_err_con></DIV></TD></TR>
  <TR id=vercode>
    <TD class=f14 vAlign=top>验证码:</TD>
    <TD vAlign=top><INPUT type=hidden 
      value=6454A95EE41D964644A22A4C3BED4CD37024B8EEAA0EEE8A7BB4BEF09D1F0B6482B819F32DF02DFC7A15C94C3E3F3A1744C7CA8AA4ED11AB65C6F66D4242A459 
      name=spVcode> <INPUT id=spVerifyKey onfocus=f_focus() tabIndex=4 
      maxLength=4 size=6 name=spVerifyKey autocomplete="off"><BR>
      <SCRIPT type=text/javascript>/*<![CDATA[*/var imgsrc="http://hiup.baidu.com/cgi-bin/genimg?6454A95EE41D964644A22A4C3BED4CD37024B8EEAA0EEE8A7BB4BEF09D1F0B6482B819F32DF02DFC7A15C94C3E3F3A1744C7CA8AA4ED11AB65C6F66D4242A459";function f_focus(){	if(G('yanzheng').style.display=="none" ){		G('verifypic').src=imgsrc;		G('yanzheng').style.display="block";	}}function newverifypic(){	G("verifypic").src = imgsrc +"&t="+ Math.random();	return false;}/*]]>*/</SCRIPT>

      <DIV id=yanzheng style="DISPLAY: none"><IMG id=verifypic height=40 
      width=120><WBR><A title=看不清左边的字符 onfocus=this.blur(); 
      onclick="return newverifypic();" 
      href="http://hi.baidu.com/gallonchai/blog/item/df25851347927c005aaf53b7.html#">看不清?</A> 
      </DIV></TD></TR>
  <TR>
    <TD class=f14 vAlign=top>&nbsp;</TD>
    <TD class=f14 vAlign=top><INPUT id=btn_ok tabIndex=5 type=submit value=发表评论 name=btn_ok></TD></TR></TBODY></TABLE></FORM></DIV><BR></DIV>
<TABLE height=8 cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD class=modbl width=7>&nbsp;</TD>
    <TD class=modbc>&nbsp;</TD>
    <TD class=modbr width=7>&nbsp;</TD></TR></TBODY></TABLE></DIV></DIV></DIV></DIV>
<SCRIPT language=javascript><!--var hstr="/gallonchai/brwstat?key1=1";document.write("<script src='"+hstr+"&key2="+allkey+"'><\/script>");//--></SCRIPT>
<BR>
<CENTER>
<DIV id=ft>&copy;2008 Baidu</DIV></CENTER>
<SCRIPT>if(document.getElementById("m_blog")){	var imgarray = document.getElementById("m_blog").getElementsByTagName('img');	var imgw = document.getElementById("m_blog").offsetWidth;	imgw =imgw-40;	for(var i=0; i<imgarray.length; i++){	if(imgarray[i].className=="blogimg" && imgarray[i].width>=imgw) imgarray[i].width=imgw;	}}// Fix ff bugsvar blog_text = document.getElementById('blog_text');blog_text.innerHTML = blog_text.innerHTML.replace(/href\s*=\s*("|')?(\.\.\/\.\.\/)/gi,"href=$1../$2");</SCRIPT>
</CENTER><IMG style="DISPLAY: none" src=""> </BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -