从Datagrid的标题居中说起

时间:2010-03-16 17:38:05  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:两种实现的方法,不亦乐乎,尽管事务缠身,也赶紧记下。      命题:如果在.NET中使Datagrid的标题文字居中。      分析一:      这个命题似乎不难,主要是Datagrid作者没有提供CaptionAlign这样的属性给大家,所以……      那么怎么解决它呢?我想...
  正文:编程的乐趣是什么?相信各人都有自己的见解。Henry最大的快乐是享受创造的喜悦,而且这种喜悦都是建立在可以看得到的实践上的。今天这篇小文源头很简单,是我中午在CSDN论坛上看到一个网友发的帖子,当时也回了帖,但话语不详,更重要的是下午稍稍一试,得到了两种实现的方法,不亦乐乎,尽管事务缠身,也赶紧记下。
  
  命题:如果在.NET中使Datagrid的标题文字居中。
  
  分析一:
  
  这个命题似乎不难,主要是Datagrid作者没有提供CaptionAlign这样的属性给大家,所以……
  
  那么怎么解决它呢?我想到最直接的方法,就是给标题文字前面加上适当的空格数,使标题文字推到中间去。好,说做就做。
  
  (1) 要知道在当前环境下,Datagrid标题栏一个英文字符占据了多大的宽度;
  
  (2) Datagrid的宽度/字符宽度=标题栏所能容纳的字符数
  
  (3) 给已有标题的文本前面添加n个空格,n=(标题栏所能容纳的字符数-已有标题的字符数)/2
  
  代码如下所示:
  
  Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
  
   Dim perWidth As Integer ‘一个英文字符占据的宽度
  
   Dim count As Integer ‘标题栏所能容纳的字符数
  
   Dim len As Integer‘已有标题的字符数
  
   Dim i As Integer
  
   With Graphics.FromHwnd(DataGrid1.Handle).MeasureString(Text:="ABCDEFGHIJKLMNOPQRSTUVWXYZ", Font:=DataGrid1.Font)
  
   perWidth = CInt(.Width / 26.0!)
  
   End With
  
   count = DataGrid1.Width / perWidth
  
   len = System.Text.Encoding.Default.GetByteCount(DataGrid1.CaptionText)
  
   For i = 1 To (count - len) / 2
  
   DataGrid1.CaptionText = " " + DataGrid1.CaptionText
  
   Next
  
  End Sub
  
  要点1如何计算一个英文字符的宽度,见代码
  
  要点2如何获得标题文本所占的字符数,要知道英文占一个字节,中文是占两个字节。解决方法就是用System.Text.Encoding.Default.GetByteCount来做。这些技巧还是很有用的,望牢记!
  
  另外,您可以用String.PadLeft属性来试试填充空字符串
  
  结果如图一所示:
  
  
  
  图1 第一种方案:加空格
  
  分析二:
  
  但认真一想,这种方法还是不爽,智能化不够,于是乎就有了这种方法。即把标题文字写入一个Label里面去,然后把Label嵌入到datagrid中去,动态地调整Label的位置,不就结了!
  
  Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
  
   LabCaption.BackColor = Color.Transparent ‘设为透明色
  
   LabCaption.AutoSize = True ‘设为可根据文本内容自动调整文本框大小
  
   LabCaption.BorderStyle = BorderStyle.None ‘设为无边框
  
   LabCaption.ForeColor = Color.White  ‘前景色设为白色,就是文字是白色字
  
   DataGrid1.Controls.Add(LabCaption)  ‘将文本框嵌入Datagrid中去
  
   LabCaption.Top = 5‘设置高度,0指的是datagrid的头部位置
  
   LabCaption.Left = (DataGrid1.Width - LabCaption.Width) / 2 ‘设置居中
  
  End Sub
  
  
  
  
  
  图2 第二种方案:嵌入文本框 《从Datagrid的标题居中说起》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/13242.html


关键字:

关于《从Datagrid的标题居中说起》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td