网站大量收购独家精品文档,联系QQ:2885784924

在C中制作组合控件.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

文档评论(0)

juhui05 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档