C#编写第三方控件,实现窗体控件的一键取值

    上篇博客中讲到了利用编写第三方控件的方法,实现给窗体控件的Text属性赋值,比如说:TextBoxCombox等。有赋值,当然也有取值操作。从窗体的控件中取值,然后存入变量或者实体属性当中,传入到数据访问层进行添加,更新等操作也是我们经常使用的。如何实现一键取值呢?

使用的方法在上篇博客中已经做了详细说明,这里就不再累述了。

代码写在这里:

 

该方法的作用是,遍历传入窗体中的控件,并且获取其值赋给实体类的相应属性。

        /// <summary>
        /// 从窗体控件取值,填充到学生实体类中
        /// </summary>
        /// <param name="enStudent">学生实体</param>
        public static void FillStuEntityByForm(StuEntity enStudent, Form thisfrm)
        {
            //遍历窗体上的控件
            foreach (Control ctrl in thisfrm.Controls)
            {
                //控件是否继承了接口
                if (ctrl is Interface1)
                {
                    //是否属于文本框
                    if (ctrl is TextBoxEx)
                    {
                        //给实体属性赋值
                        SetStuValue(enStudent, ((TextBoxEx)ctrl).DataField, ctrl.Text);
                    }//如果属于下拉框
                    else if (ctrl is ComboxEx)
                    {
                        SetStuValue(enStudent, ((ComboxEx)ctrl).DataField, ((ComboxEx)ctrl).Text);
                    }
                }
            }
        }


利用反射给实体每个属性赋值:

        /// <summary>
        /// 给实体相应的属性赋值
        /// </summary>
        /// <param name="enStudent">学生实体类</param>
        /// <param name="DataFiled">匹配字符串</param>
        /// <param name="Value">窗体控件的值</param>
        public static void SetStuValue(StuEntity enStudent, string DataFiled, string Value)
        {
            PropertyInfo field = enStudent.GetType().GetProperty(DataFiled);
            field.SetValue(enStudent, Value, null);
        }


 

将返回实体的属性取出,拼成一个字符串。

        /// <summary>
        /// 将实体的属性组合成字符串返回
        /// </summary>
        /// <param name="enStudent"></param>
        /// <returns></returns>
        public static string GetStr(StuEntity enStudent)
        {
            PropertyInfo[] fields = enStudent.GetType().GetProperties();
            StringBuilder sb = new StringBuilder();
            foreach (PropertyInfo pi in fields)
            {
                sb.Append(pi.Name).Append(":").Append(pi.GetValue(enStudent, null)).Append("\r\n");
            }
            return sb.ToString();
        }

 

客户端调用代码:

        private void btnGetValue_Click(object sender, EventArgs e)
        {
            StuEntity enStudent = new StuEntity();
            //调用填充实体属性的函数
            FrmHelper.FillStuEntityByForm(enStudent, this);
            //将实体的属性显示出来
            string str = FrmHelper.GetStr(enStudent);
            MessageBox.Show(str);
        }


显示效果:
            

 

      实现过程就是这样了,有什么不当的地方欢迎指出!

 

 

 

 

 

                                           oノo═══════════════════════╲

                                            │ヽ.编程学习中。欢迎交流。                                 │

                                            │   http://blog.csdn.net/u010028869                  .ヽ│

                                             ╲═══════════════ヾ

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
C#控件大全 、窗体 1、常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。 (2) WindowState属性: 用来获取或设置窗体的窗口状态。 取值有三种: Normal (窗体正常显示)、 Minimized (窗体以最小化形式显示)和 Maximized(窗体以最大化形式显示)。 (3)StartPosition属性:用来获取或设置运行时窗体的起始位置。 (4)Text属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的文字。 (5)Width属性:用来获取或设置窗体的宽度。 (6)Height属性:用来获取或设置窗体的高度。 (7)Left属性:用来获取或设置窗体的左边缘的x坐标(以像素为单位)。 (8)Top属性:用来获取或设置窗体的上边缘的y坐标(以像素为单位)。 (9)ControlBox属性:用来获取或设置一个值,该值指示在该窗体的标题栏中是否显示控制框。值为true 时将显示控制框,值为false时不显示控制框。 (10)MaximizeBox属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最大化按钮。值 为 true时显示最大化按钮,值为false时不显示最大化按钮。 (11)MinimizeBox 属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最小化按钮。值 为 true时显示最小化按钮,值为false时不显示最小化按钮。 (12)AcceptButton 属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按 Enter 键时就相 当于单击了窗体上的该按钮。 (13)CancelButton 属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按 Esc 键时就相当 于单击了窗体上的该按钮。 (14)Modal 属性:该属性用来设置窗体是否为有模式显示窗体。如果有模式地显示该窗体,该属性值为 true;否则为 false。当有模式地显示窗体时,只能对模式窗体上的对象进行输入。必须隐藏或关闭模式窗 体(通常是响应某个用户操作),然后才能对另一窗体进行输入。有模式显示的窗体通常用做应用程序中 的对话框。 (15)ActiveControl属性:用来获取或设置容器控件中的活动控件窗体也是一种容器控件。 (16)ActiveMdiChild属性:用来获取多文档界面(MDI)的当前活动子窗口。 (17)AutoScroll 属性:用来获取或设置一个值,该值指示窗体是否实现自动滚动。如果此属性值设置为 true,则当任何控件位于窗体工作区之外时,会在该窗体上显示滚动条。另外,当自动滚动打开时,窗体 的工作区自动滚动,以使具有输入焦点的控件可见。 (18)BackColor属性:用来获取或设置窗体的背景色。 (19)BackgroundImage属性:用来获取或设置窗体的背景图像。 (20)Enabled 属性:用来获取或设置一个值,该值指示控件是否可以对用户交互作出响应。如果控件可 以对用户交互作出响应,则为 true;否则为false。默认值为true。 (21)Font属性:用来获取或设置控件显示的文本的字体。 (22)ForeColor属性:用来获取或设置控件的前景色。 (23)IsMdiChild属性:获取一个值,该值指示该窗体是否为多文档界面(MDI)子窗体。值为 true时, 是子窗体,值为false时,不是子窗体。 (24)IsMdiContainer 属性:获取或设置一个值,该值指示窗体是否为多文档界面(MDI)中的子窗体的 容器。值为true时,是子窗体的容器,值为false时,不是子窗体的容器。 (25)KeyPreview属性:用来获取或设置一个值,该值指示在将按键事件传递到具有焦点的控件前,窗体 是否将接收该事件。值为true时,窗体将接收按键事件,值为false时,窗体不接收按键事件。 (26)MdiChildren属性:数组属性。数组中的每个元素表示以此窗体作为父级的多文档界面(MDI)子窗 体。 (27)MdiParent属性:用来获取或设置此窗体的当前多文档界面(MDI)父窗体。 (28)ShowInTaskbar属性:用来获取或设置一个值,该值指示是否在Windows任务栏中显示窗体。 (29)Visible属性:用于获取或设置一个值,该值指示是否显示该窗体控件。值为true 时显示窗体控件,为 false时不显示。 (30)Capture属性:如果该属性值为true,则鼠标就会被限定只由此控件响应,不管鼠标是否在此控件的 范围内。 2、常用方法 下面介绍一些窗体的最常用方法。 (1)Show方法:该方法的作用是让窗体显示出来,其调用格式为: 窗体名.Show(); 其中窗体名是要显示的窗体名称。 (2)Hide方法:该方法的作用是把窗体隐藏出来,其调用格式为: 窗体名.Hide(); 其中窗体名是要隐藏的窗体名称。 (3)Refresh方法:该方法的作用是刷新并重画窗体,其调用格式为: 窗体名.Refresh(); 其中窗体名是要刷新的窗体名称。 (4)Activate方法:该方法的作用是激活窗体并给予它焦点。其调用格式为: 窗体名.Activate(); 其中窗体名是要激活的窗体名称。 (5)Close方法:该方法的作用是关闭窗体。其调用格式为: 窗体名.Close(); 其中窗体名是要关闭的窗体名称。 (6)ShowDialog方法:该方法的作用是将窗体显示为模式对话框。其调用格式为: 窗体名.ShowDialog(); 3.常用事件 (1)Load事件:该事件在窗体加载到内存时发生,即在第一次显示窗体前发生。 (2)Activated事件:该事件在窗体激活时发生。 (3)Deactivate事件:该事件在窗体失去焦点成为不活动窗体时发生。 (4)Resize事件:该事件在改变窗体大小时发生。 (5)Paint事件:该事件在重绘窗体时发生。 (6)Click事件:该事件在用户单击窗体时发生。 (7)DoubleClick事件:该事件在用户双击窗体时发生。 (8)Closed事件:该事件在关闭窗体时发生。 文本框类控件 2、Label 控件 1、常用属性: (1)Text属性:用来设置或返回标签控件中显示的文本信息。 (2)AutoSize 属性:用来获取或设置一个值,该值指示是否自动调整控件的大小以完整显示其内容。取 值为 true时,控件将自动调整到刚好能容纳文本时的大小,取值为false时,控件的大小为设计时的大小。 默认值为false。 (3)Anchor 属性:用来确定此控件与其容器控件的固定关系的。所谓容器控件指的是这样一种情况:往 往在控件之中还有一个控件,例如最典型的就是窗体控件中会包含很多的控件,像标签控件、文本框等。 这时称包含控件控件为容器控件或父控件,而父控件称为子控件。这时将遇到一个问题,即子控件与父 控件的位置关系问题,即当父控件的位置、大小变化时,子控件按照 什么样的原则改变其位置、大小。Anchor属性就规定了这个原则。 对于 Anchor 属性,可以设定 Top、Bottom、Right、Left 中的任意几 种,设置的方法是在属性窗口中单击Anchor属性右边的箭头,将会 出现如图 9-6 的窗口,通过它可设置 Anchor 属性值。图 9-6 中选中 变黑的方位即为设定的方位控制,即图中所示的为 Left、Right、 Bottom。此时,如果父窗口变化,子窗口将保证其左边缘与容器左边 的距离、上边缘与容器上边的距离、底边与容器底边的距离等不变, 效果如图9-7 所示。
以下是一个简单的 C# 窗体应用程序,使用 SQL Server 数据库和 DataGridView 控件实现查询功能的源代码: ```csharp using System; using System.Data; using System.Data.SqlClient; using System.Windows.Forms; namespace DataGridViewSearch { public partial class Form1 : Form { private string connectionString = "Data Source=SERVER_NAME;Initial Catalog=DATABASE_NAME;Integrated Security=True"; private SqlConnection connection; private SqlDataAdapter dataAdapter; private DataTable dataTable; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // 创建 SQL 连接和数据适配器 connection = new SqlConnection(connectionString); dataAdapter = new SqlDataAdapter("SELECT * FROM Customers", connection); // 创建数据表和 DataGridView 控件 dataTable = new DataTable(); dataGridView1.DataSource = dataTable; // 填充数据表 dataAdapter.Fill(dataTable); } private void buttonSearch_Click(object sender, EventArgs e) { // 获取查询关键字 string keyword = textBoxSearch.Text.Trim(); // 确保查询关键字不为空 if (string.IsNullOrEmpty(keyword)) { MessageBox.Show("请输入查询关键字!", "提示"); return; } // 设置查询语句和参数 dataAdapter.SelectCommand.CommandText = "SELECT * FROM Customers WHERE FirstName LIKE @Keyword OR LastName LIKE @Keyword"; dataAdapter.SelectCommand.Parameters.Clear(); dataAdapter.SelectCommand.Parameters.AddWithValue("@Keyword", "%" + keyword + "%"); // 填充数据表 dataTable.Clear(); dataAdapter.Fill(dataTable); } } } ``` 在此代码中,需要将 `SERVER_NAME` 和 `DATABASE_NAME` 替换为实际的 SQL Server 服务器名称和数据库名称。在窗体的 `Load` 事件中,首先创建了一个 SQL 连接和数据适配器,然后创建了一个数据表和一个 DataGridView 控件,并使用数据适配器填充了数据表。在查询按钮的 `Click` 事件中,获取了查询关键字,设置了查询语句和参数,清空了数据表,并再次使用数据适配器填充了数据表。这样就可以实现简单的查询功能了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值