惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
J
Java Code Geeks
雷峰网
雷峰网
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
V
Vulnerabilities – Threatpost
S
Securelist
The Hacker News
The Hacker News
The Register - Security
The Register - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Help Net Security
Help Net Security
G
Google Developers Blog
Hugging Face - Blog
Hugging Face - Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
M
MIT News - Artificial intelligence
AI
AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The GitHub Blog
The GitHub Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Schneier on Security
Schneier on Security
N
Netflix TechBlog - Medium
T
The Blog of Author Tim Ferriss
Google DeepMind News
Google DeepMind News
Hacker News - Newest:
Hacker News - Newest: "LLM"
H
Hacker News: Front Page
博客园 - 司徒正美
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
B
Blog
Microsoft Azure Blog
Microsoft Azure Blog
大猫的无限游戏
大猫的无限游戏
Security Latest
Security Latest
Engineering at Meta
Engineering at Meta
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
U
Unit 42
V
V2EX
V2EX - 技术
V2EX - 技术
L
LINUX DO - 最新话题
aimingoo的专栏
aimingoo的专栏
Microsoft Security Blog
Microsoft Security Blog
Recorded Future
Recorded Future
P
Privacy & Cybersecurity Law Blog
美团技术团队
小众软件
小众软件
F
Fortinet All Blogs

博客园 - Emosen

Win7 不能安装SQL Server 2005 Management Studio Express.msi解决办法 WINDOWS 画空心字 - Emosen - 博客园 create database link 数据库主键设计之思考 开始→运行→输入的命令集锦 开发人员一定要加入收藏夹的网站 SQL Server 2005 Express 远程访问设置方法 Microsoft SQL Server 2005 Express 远程访问设置详述,100%成功篇 编程十诫 转贴:最常见问题(FAQ)留着慢慢学习--微软.net精简框架最常见问题 ndis 相关资料 C# 改变图片大小的功能代码片段 (wince5) PHP+PDO+ORALCE 实例演示 PHP+PDO+ORALCE 配置说明 Oracle 数据类型 Oracle分页查询语句(一) 网页UTF8编码--多出空白行的问题(ZT) 开源性能测试工具 - ApacheBench(简称ab) 介绍 用Eclipse开发PHP项目
ZT--文本显示尺寸计算(关于控件的尺寸定义)
Emosen · 2010-08-26 · via 博客园 - Emosen

WM系统的特点之一就是:尺寸比较小。因此,在UI设计时,控件大小、位置、布局,就显得尤为重要,力求在有限的空间中,完整的显示文本信息。之前提到的跑马灯控件,也是类似的功能。

  用于文本显示的,主要有两种控件:LABEL和TEXTBOX。这两种控件,在一定程度上,都支持自动换行。但是要使其显示完整信息,就必须定义一个合适的尺寸(LABEL显示高度不够时,文字被遮蔽,TEXTBOX则会显示滚动条)。

  情况一、LABEL不换行,但需要显示完整的内容,即动态设置LABEL的长度。

  在NET2.0的桌面系统中,可以用以下方法:
  TextRenderer.MeasureText 方法 (String, Font)
  在使用指定字体绘制时,提供指定文本的尺寸(以像素为单位)。

  NETCF可以用以下方式:
    Graphics g = this.CreateGraphics();
    SizeF siF = g.MeasureString(内容, 字体);
    label2.Width = (int)siF.Width;

  情况二、在LABEL显示时,需要自动换行,并根据实际高度,设置控件的尺寸。
  思路,计算出一行显示需要的尺寸,除以希望每行显示的尺寸,得到行数。 再根据行数得到高度。


  情况三、在TEXTBOX中,根据文本,需要计算文本需要显示的高度。
  一般思路,文字的FONT决定了高度,只要知道行数,就可以得到需要显示的高度了。但是,用topic.Font.Height当行数很多时存在误差。 所以, 要获得一行文字所占的实际高度,需要借鉴Graphics方法。

以下是获得行数的方法(获得行数的方法,只支持2005):

 [DllImport("coredll.dll")]
        private static extern int SendMessage(IntPtr hwnd, int wMsg, IntPtr wParam, string lParam);  

        private void button1_Click(object sender, EventArgs e)
        {
            //获得TEXTBOX中文本的实际高度
            int EM_GETLINECOUNT = 0x00BA;//获取总行数的消息号 
            int lc = SendMessage(this.textBox1.Handle, EM_GETLINECOUNT, IntPtr.Zero, "");//行数

            Graphics g = this.CreateGraphics();
            SizeF siF = g.MeasureString("TEST", textBox1.Font);
            g.Dispose();
            int sf = (int)siF.Height * lc;

            this.textBox1.ClientSize = new Size(this.textBox1.ClientSize.Width, sf + 5);

        }

针对2003获得行数,需要下面的方法(获得控件句柄):
 [DllImport("coredll.dll")]
        private static extern IntPtr GetFocus();
 IntPtr hWnd = GetFocus();
        int lc3 = SendMessage(hWnd, EM_GETLINECOUNT, IntPtr.Zero, "");//行数

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhaojiangang/archive/2009/02/09/3869683.aspx