- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在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)
{
您可能关注的文档
最近下载
- 2025-2026人教部编版三年级上册语文教学计划.docx VIP
- 施工现场车辆安全教育.pptx VIP
- 给排水系统学习培训ppt课件.pptx VIP
- 2025北京市十八里店乡人民政府城市协管员招聘21人笔试参考题库附答案解析.docx VIP
- 输血科管理制度、程序性文件、SOP文件.docx VIP
- 05J909_工程做法_建筑专业图集.docx VIP
- 2021海绵城市设施通用图集.docx VIP
- 【统编版】高中语文必修上册第一单元《3百合花》优质课(29张PPT)课件.pptx VIP
- 钢丝帘线压延机生产线(中文参考).doc VIP
- 2025年福建省福州市辅警协警笔试笔试预测试题(含答案).docx VIP
文档评论(0)