- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在C中制作组合控件
在C#中制作组合控件
丽水市汽车运输集团有限公司信息中心 苟安廷
我们通常通过文本框、组合框等控件获取用户的数据输入,为告诉用户当前需要输入的内容,通常还要在上面加一个提示用的标签,如:
姓名
张三
如果窗体上待输入的内容很多,则要同时放大量标签,不仅工作量大,还不易于排版,本文介绍如何制作一个组合控件以简化操作,也就是将上面的标签和文本框做成一个整体,文本框移动时标签跟着移动,还可以设置提示用标签的位置、内容、字体、颜色等。
打开VS2003,新建一个windows控件库(不是windows项目),不妨取名为MultiControls吧。
将下面的代码:
public class UserControl1 : System.Windows.Forms.UserControl
{
private System.ComponentModel.Container components = null;
public UserControl1()
{
修改为:
public class TextBoxExt : System.Windows.Forms.TextBox
{
private System.ComponentModel.Container components = null;
public TextBoxExt()
{
也就是将默认的控件名称UserControl1修改为TextBoxExt,同时将基类修改为TextBox,表示该控件继承自TextBox。
单击菜单“项目”→“属性”,在“配置”后的组合框中选择“所有配置”,点“配置属性”下的“生成”,为输出路径指定一个目录,也就是无论是Debug版还是Release版,都输出到同一个目录中,便于后面的引用,如下图所示:
编译一下,保证程序没有错误。Windows控件是无法直接调试的,为了调试方便,我们要新建一个windows项目。
单击菜单“文件”→“添加项目”→“新建项目”,选择“Windows 应用程序”,不妨取名为TestTextBox,并将该项目设为启动项目。单击菜单“项目”→“项目依赖项”,设置项目TestTextBox依赖于Multicontrols,如下图:
切换到工具箱面板的“常规”选项卡中,点鼠标右键,选择“添加/移除项”,打开自定义工具箱对话框,切换到“.Net FrameWork组件”,点“浏览”按钮,找到刚才编译生成的MultiControls.dll,选择后点“确定”按钮,此时工具箱中就有了自定义控件“TextBoxExt”,切换到TestTextBox项目的Form1窗口,随便拖几个放到窗口上,可以看到,目前的TextBoxExt同标准的TextBox控件没有什么区别,因为我们还没有开始编写代码。
切换到TextBoxExt的代码窗口中(以下大部分代码均指该窗口中的代码,特殊说明除外)。
先创建一个提示用的标签(Label),由于需要一些初始信息,我们先将创建过程空着。
private System.Windows.Forms.Label m_lblPrompt=null;
private System.Windows.Forms.Label myPrompt
{
get
{
//如果提示用的标签,没有则创建一个
if((m_lblPrompt==null) this.Parent!=null)
{
//创建过程就在后面的补上
}
return m_lblPrompt;
}
}
添加一个变量,表示文本框和Label之间的位置关系。
private System.Drawing.ContentAlignment m_lblPromptAlignment=System.Drawing.ContentAlignment.TopLeft;
public System.Drawing.ContentAlignment LabelAlignment
{
get
{
return m_lblPromptAlignment;
}
set
{
m_lblPromptAlignment=value;
this.LayoutCtrls();
}
}
上面代码中用到了一个函数this.LayoutCtrls(),表示如何具体实现文本框和标签的位置关系,代码如下:
private void LayoutCtrls()
{
//根据提示文本的排列位置设置提示文本的位置
Label lbl=myPrompt;
if(lbl!=null)
您可能关注的文档
- 初三化学期末综合复习卷14_.doc
- 世界贸易组织组织法教程.doc
- 世界贸易组织概论复习提纲1.doc
- 圆柱齿轮的齿宽系数.doc
- 初三化学上册化学方程式总结.doc
- 圆滚动时自转的周数练习.doc
- 圆点可调红光镭射器.doc
- 圆柱齿轮和齿条的铣削.doc
- 圆片检测课KLAAIT步骤.doc
- 初三化学探究性试题Ⅱ.doc
- 2-红河州建筑施工安全生产标准化工地复核评分表(2022年修改版).docx
- 6.锡通项目2018年下半年工作会汇报材料(2018.7.9).docx
- 2018道路工程知识点汇总(新版).docx
- 附件3:月度生产例会安全汇报资料-站台门项目部.docx
- 附件2:广东建工集团2018年度科技成果汇总表.DOC
- 马武停车区、三汇停车区停车位管理系统,0#台账缺量.doc
- 攀成钢委办发〔2015〕19号(党风廉政建设责任考核与追究办法).doc
- 1-红河州建筑工程质量管理标准化复核评分表(2022年修改版).docx
- 中交第三公路工程局第四工程分公司项目经济合同结算管理办法(修订).doc
- 厂站安全操作规程汇编.doc
最近下载
- 2025入党积极分子考试试卷(含答案).docx VIP
- 空调维修保养服务方案(技术方案).pdf
- 中医基础理论(暨南大学)中国大学MOOC慕课章节测验答案(课程ID:1206450825).pdf
- 高级卫生专业技术资格考试慢性非传染性疾病控制(088)(正高级)试卷及解答参考.docx VIP
- 大学英语四级考试高频词汇1500(打印版).pdf VIP
- 2025年医学分析-心脏再同步化治疗(CRT).pptx VIP
- 慢性非传染性疾病控制(088)(副高级)高级卫生专业技术资格考试2024年复习试题及解答参考.pdf VIP
- 我国未成年人专门矫治教育制度研究.docx VIP
- 北京市属高校国外访问学者英文简历模板.doc
- 工厂电工安全培训.pptx VIP
文档评论(0)