UserControl自定义控件系列一:Label+TextBox组合控件

       从今天开始在这边分享本人对UserControl自定义控件的研究,主要针对多个控件组合为一个控件,展示控件显示风格的与众不同,有时候为了实现一个功能拖拉了多个控件到窗体中,还要对这些控件进行有序的排版(一个排版非常乱的程序自己用的都不爽),我想着如果能编写一个控件,把我要的这些控件都拖拉进去组合成一个控件我要的时候只要拖拉我自定义的这个控件进来就能直接用了,也不用每次都去排版排了半天。好了直接进入主题吧。

       这次我用Label和TextBox这两个控件来组合。

一、演示效果图及原理说明

1.控件效果演示

在窗体界面设计的时候拖放到窗体中长的样子,我们来看下运行以后的效果。

这边三个控件呈现的三个不同的显示效果,第一个控件没有字段名,我把字段名清空了,所以就显示成一条下划线了,如果像第二个控件那样的话就是一个十足十的文本框了,第二个控件是有字段名的加上一个文本框,这个时候正处于编辑状态,在里面输入了一些内容,第三个控件我在里面输入了内容了,让他处于浏览状态这样子的话就显示成内容加上下划线的效果了。这些就是本次UserControl组合控件要实现的功能了。

2.实现原理

        字段Label控件我用它来显示字段名,值Label控件我用它来显示用户输入的值,当该Label控件显示的时候整个控件处于浏览状态,TextBox控件我用它来输入值,当该控件显示的时候整个控件处于编辑状态,如上图大家看到了在控件处于浏览状态的时候有一条下划线,这条下划线我用画图的方式把它绘制出来,并给控件提供了一个改变该下划线的颜色的属性,有了这些思路这个控件就很容易实现了。

控件的演示及原理说明部分就到这里了,接下来我们开始来实现这些功能。

二、功能实现

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用c#2017窗体写一个学生基本信息注册基本控件如下1. private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e):当用户点击“用户协议”链接时,触发这个事件处理程序。 2. form1_Load(object sender, EventArgs e):窗体加载时调用这个方法。 3. comboBox1.SelectedIndex = 0;:将下拉框选中第一个选项。 4. button2.Enabled = checkBox1.Checked;:根据复选框状态启用或禁用按钮2。 5. info += "账号:" + textBox1.Text.Trim() + "\n";:将用户名拼接到消息框中。 6. info += "密码:" + textBox4.Text.Trim() + "\n";:将密码拼接到消息框中。 7. info += "性别:" + this.GetSexInput() + "\n";:将性别拼接到消息框中。 8. info += "生日:" + dateTimePicker1.Value.ToShortDateString() + "\n";:将生日拼接到消息框中。 9. info += "QQ:" + textBox1.Text.Trim() + "\n";:将QQ号拼接到消息框中。 10. info += "喜爱的编程:" + GetFaavorLangInput() + "\n";:将喜欢的编程语言拼接到消息框中。 11. info += "爱好:" + GetHobbiesInput() + "\n";:将爱好拼接到消息框中。 12. MessageBox.Show(info, "确认你的注册信息!");:弹出一个消息框显示所有输入的信息。 13. bool ValidateInput():定义了一个名为ValidateInput的方法用于验证输入的用户名、密码、性别、生日、QQ和喜欢的编程语言等信息是否正确。 14. string GetSexInput():定义了一个名为GetSexInput的方法用于获取用户的性别。 15. string GetFaavorLangInput():定义了一个名为GetFaavorLangInput的方法用于获取用户的喜欢的编程语言。 16. string GetHobbiesInput():定义了一个名为GetHobbiesInput的方法用于获取用户的爱好
06-12
好的,以下是一个示例代码,实现了学生基本信息注册的功能,包括上述所列的控件和方法: ``` public partial class Form1 : Form { public Form1() { InitializeComponent(); } // 用户协议链接 private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { // 在此处添加打开用户协议的代码 } // 窗体加载 private void Form1_Load(object sender, EventArgs e) { // 将下拉框选中第一个选项 comboBox1.SelectedIndex = 0; } // 复选框状态改变 private void checkBox1_CheckedChanged(object sender, EventArgs e) { // 根据复选框状态启用或禁用按钮2 button2.Enabled = checkBox1.Checked; } // 注册按钮点击 private void button1_Click(object sender, EventArgs e) { // 验证输入的信息是否正确 if (!ValidateInput()) { MessageBox.Show("请输入正确的信息!", "提示"); return; } // 拼接所有输入的信息 string info = "账号:" + textBox1.Text.Trim() + "\n"; info += "密码:" + textBox4.Text.Trim() + "\n"; info += "性别:" + GetSexInput() + "\n"; info += "生日:" + dateTimePicker1.Value.ToShortDateString() + "\n"; info += "QQ:" + textBox2.Text.Trim() + "\n"; info += "喜爱的编程:" + GetFaavorLangInput() + "\n"; info += "爱好:" + GetHobbiesInput() + "\n"; // 弹出一个消息框显示所有输入的信息 MessageBox.Show(info, "确认你的注册信息!", MessageBoxButtons.OKCancel); } // 验证输入的信息是否正确 private bool ValidateInput() { // 在此处添加验证逻辑,例如检查用户名是否符合要求,密码是否符合要求等 return true; } // 获取用户的性别 private string GetSexInput() { if (radioButton1.Checked) { return "男"; } else if (radioButton2.Checked) { return "女"; } else { return "保密"; } } // 获取用户的喜欢的编程语言 private string GetFaavorLangInput() { if (checkBox2.Checked && checkBox3.Checked) { return "C#和Java"; } else if (checkBox2.Checked) { return "C#"; } else if (checkBox3.Checked) { return "Java"; } else { return "无"; } } // 获取用户的爱好 private string GetHobbiesInput() { string hobbies = ""; if (checkBox4.Checked) { hobbies += "运动,"; } if (checkBox5.Checked) { hobbies += "旅游,"; } if (checkBox6.Checked) { hobbies += "音乐,"; } if (hobbies.Length > 0) { hobbies = hobbies.Substring(0, hobbies.Length - 1); } else { hobbies = "无"; } return hobbies; } } ``` 需要注意的是,示例代码中的验证逻辑、拼接信息的方式、复选框和单选框的选项等都是示例,需要根据实际需求进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值