C#基本控件的输入、输出

一、基本控件数据的输入(根据我们小组现有设计进度案例讲解)

1.TextBox控件,即文本框,用于用户直接输入和显示文本。通过Text属性输入数据如下图:

 

2.Label控件,用来直接设置或返回标签控件中显示的文本信息。通过Label属性输入数据如下图:

 

3.ComboBox控件中的下拉列表中,可以显示多项数据,使用ComboBox控件中的Items集合的Add方法向控件中添加数据。通过Items属性输入数据如下图:

4.DateTimePicker控件,一般用于让用户可以从日期列表中选择单个值。运行时,单击控件边上的下拉箭头,会显示两个部分:一个下拉列表,一个用于选择日期。通过选择Values属性输入数据如下图:

5.RadioButton控件为用户提供由两个或多个互斥选项组成的选项集,需要注意的是,当用户选择某单选按钮时,同一组中的其他单选按钮不能同时选定。通过Check属性输入数据如下图所示:

6.DataGridView控件可以显示和编辑来自不同类型的数据源的表格数据,通过绑定DataSoure属性输入数据如下图所示:(由于小组设计还没用到这个控件,用例题运行截图代替)

7.PictureBox又称图片框,常用于图形设计和图像处理应用程序,在该控件中可以通过Image属性加载的图像文件格式有:位图文件(.Bmp)、图标文件(.ICO)、图元文件(.wmf)、.JPEG 和.GIF 文件。通过Image属性更改图片载入演示如下:

 

二、基本控件数据的输出

上图界面代码如下:

using System;
using System.Configuration;                                                                                 //包含访问配置文件所需的配置管理器;需事先在本项目的“引用”中添加对System.Configuration的引用;
using System.Data;
using System.Data.SqlClient;   
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Imaging;                                                                               //包含图像处理功能;
using System.IO;       


namespace 住院医生工作站
{
    public partial class frm_UserMessage : Form
    {
        private string PhotoFileName;
        
        public frm_UserMessage()
        {
            InitializeComponent();
            this.StartPosition = FormStartPosition.CenterScreen;                                //本窗体启动位置设为屏幕中央; 
            this.txb_No.ReadOnly = true;
            this.cmb_Department.DropDownStyle = ComboBoxStyle.DropDownList;
        
        }

        
        private void btn_Load_Click(object sender, EventArgs e)
        {
            SqlConnection sqlConnection = new SqlConnection();
            sqlConnection.ConnectionString =
              ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;                             
            SqlCommand sqlCommand = new SqlCommand();                                                       
            SqlCommand sqlCommand2 = new SqlCommand();
            sqlCommand.Connection = sqlConnection;                                                       
            sqlCommand2.Connection = sqlConnection;
            sqlCommand.CommandText = "SELECT * FROM tb_HospitalDepartments;"; 
            sqlCommand2.CommandText = "SELECT * FROM tb_Doctort WHERE DoctorNo=@No;";
            sqlCommand2.Parameters.AddWithValue("@No", "0000000002");                                       
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           
            sqlDataAdapter.SelectCommand = sqlCommand;
            DataTable DepartmentsTable = new DataTable();                                                         
            sqlConnection.Open();
            sqlDataAdapter.Fill(DepartmentsTable);                                                                //SQL数据适配器读取数据,并填充班级数据表;
            this.cmb_Department.DataSource = DepartmentsTable;                                                         //将班级下拉框的数据源设为班级数据表;
            this.cmb_Department.DisplayMember = "Name";                                                          //将班级下拉框的显示成员设为班级数据表的名称列;
            this.cmb_Department.ValueMember = "No";                                                                 
            SqlDataReader sqlDataReader = sqlCommand2.ExecuteReader();
            byte[] photoBytes = null;                            
            if (sqlDataReader.Read())                                                                       
            {
                this.txb_No.Text = sqlDataReader["DoctorNo"].ToString();
                this.txb_Name.Text = sqlDataReader["Name"].ToString();
                this.rdb_Male.Checked = (bool)sqlDataReader["Gender"];
                this.rdb_Female.Checked = !(bool)sqlDataReader["Gender"];
                this.dtp_BirthDate.Value = (DateTime)sqlDataReader["BirthDate"];
                this.cmb_Department.SelectedValue = (int)sqlDataReader["DepartmentNo"];
                this.txb_Phone.Text = sqlDataReader["Phone"].ToString();
                this.txb_Position.Text = sqlDataReader["Position"].ToString();
                photoBytes =
                   (sqlDataReader["Photo"] == DBNull.Value ? null : (byte[])sqlDataReader["Photo"]); 
            }
            this.textBox1.Text = this.cmb_Department.SelectedValue.ToString();
            sqlDataReader.Close();
            if (photoBytes != null)                                                                         //若学生的照片非空;
            {
                MemoryStream memoryStream = new MemoryStream(photoBytes);                                   //声明并实例化内存流,用于读取照片的字节数据;
                this.ptb_Photo.Image = Image.FromStream(memoryStream);                                      //调用图像的静态方法FromStream从内存流中读取图像,并赋予图像框;
            }
        }
      

        private void frm_UserMessage_Load(object sender, EventArgs e)
        {

        }

        private void btn_Update_Click(object sender, EventArgs e)
        {
            MemoryStream memoryStream = new MemoryStream();                                                 //声明并实例化内存流,用于读取照片的字节数据;
            this.ptb_Photo.Image.Save(memoryStream, ImageFormat.Bmp);                                       //调用图像框的图像的静态方法Save,将图像保存至内存流;
            byte[] photoBytes = new byte[memoryStream.Length];                                              //声明并实例化字节数组,用于保存照片数据;数组长度对应内存流长度;
            memoryStream.Seek(0, SeekOrigin.Begin);                                                         //保存后的内存流的偏移位置在末尾,需通过查找来将偏移位置设为起始;
            memoryStream.Read(photoBytes, 0, photoBytes.Length);   

            SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;
            sqlConnection.ConnectionString =
                ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;                             //配置管理器从配置文件读取连接字符串,并将之赋予SQL连接的连接字符串属性;
            SqlCommand sqlCommand = new SqlCommand();                                                       //声明并实例化SQL命令;
            sqlCommand.Connection = sqlConnection;                                                          //将SQL命令的连接属性指向SQL连接;
            sqlCommand.CommandText =                                                                        //指定SQL命令的命令文本;
                "UPDATE tb_Doctort"
                + " SET Name=@Name,Gender=@Gender,BirthDate=@BirthDate,DepartmentNo=@DepartmentNo,Phone=@Phone,Photo=@Photo"
                + " WHERE DoctorNo=@No;";
            this.textBox1.Text = this.cmb_Department.SelectedValue.ToString();
            sqlCommand.Parameters.AddWithValue("@Name", this.txb_Name.Text.Trim());                         //向SQL命令的参数集合添加参数的名称、值;
            sqlCommand.Parameters.AddWithValue("@Gender", this.rdb_Male.Checked);
            sqlCommand.Parameters.AddWithValue("@BirthDate", this.dtp_BirthDate.Value);
            sqlCommand.Parameters.AddWithValue("@DepartmentNo", this.textBox1.Text.Trim ());
            sqlCommand.Parameters.AddWithValue("@Phone", this.txb_Phone.Text.Trim());
            sqlCommand.Parameters.AddWithValue("@Photo", photoBytes);
            sqlCommand.Parameters.AddWithValue("@No", "0000000002");
            sqlConnection.Open();                                                                           //打开SQL连接;
            int rowAffected = sqlCommand.ExecuteNonQuery();                                                 //调用SQL命令的方法ExecuteNonQuery来执行命令,向数据库写入数据,并返回受影响行数;
            sqlConnection.Close();                                                                          //关闭SQL连接;
            MessageBox.Show("更新" + rowAffected.ToString() + "行。");
        }

        private void btn_OpenPhoto_Click_1(object sender, EventArgs e)
        {
            OpenFileDialog openPhotoDialog = new OpenFileDialog()                                           //声明并实例化打开文件对话框;
            {                                                                                           //在初始化器中,设置打开文件对话框的各属性;
                Title = "打开照片文件(位图格式)"                                                      //对话框标题;
                ,
                Filter = "BMP Files (*.jpg)|*.jpg"                                                    //文件格式过滤器;
                ,
                InitialDirectory = @"C:\"                                                             //初始目录;
            };
            if (openPhotoDialog.ShowDialog() == DialogResult.OK)                                            //显示打开文件对话框,若打开文件对话框的对话结果为点击OK键;
            {
                this.PhotoFileName = openPhotoDialog.FileName;                                              //将对话框获得的文件名,存入本窗体的私有字段中;
                this.ptb_Photo.Image = Image.FromFile(this.PhotoFileName);                                  //调用图像的静态方法FromFile从指定文件中读取图像,并赋予图像框;
            }
        }

     
    }
}

DataGridView控件的数据输出代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
                                                                                                            //添加调用:
using System.Data.SqlClient;                                                                                //包含访问SQL Server所需的各类对象;

namespace Ex52_Table_GridView
{
    
    public partial class frm_StudentTable : Form
    {
        /// <summary>
        /// 私有字段:学生表;
        /// </summary>
        private DataTable StudentTable;
        
        /// <summary>
        /// 公有方法:构造函数;
        /// </summary>
        public frm_StudentTable()
        {
            InitializeComponent();
            this.StartPosition = FormStartPosition.CenterScreen;                                            //本窗体启动位置设为屏幕中央; 
            this.dgv_Score.AllowUserToAddRows = false;                                                      //数据网格视图不允许用户添加行;
            this.dgv_Score.RowHeadersVisible = false;                                                       //数据网格视图的行标题不可见;
            this.dgv_Score.BackgroundColor = Color.White;                                                   //数据网格视图的背景色设为白色;
            this.dgv_Score.AutoSizeColumnsMode =
                DataGridViewAutoSizeColumnsMode.AllCells;                                                   //数据网格视图的自动调整列宽模式设为(显示)所有单元格;
        }

        /// <summary>
        /// 私有方法:点击载入按钮;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Load_Click(object sender, EventArgs e)
        {
            SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;
            sqlConnection.ConnectionString =
                "Server=(local);Database=EduBaseDemo;Integrated Security=sspi";                             //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
            SqlCommand sqlCommand = new SqlCommand();                                                       //声明并实例化SQL命令;
            sqlCommand.Connection = sqlConnection;                                                          //将SQL命令的连接属性指向SQL连接;
            sqlCommand.CommandText = "SELECT * FROM tb_Class;";                                             //指定SQL命令的命令文本;该命令查询所有班级,以用作下拉框数据源;
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器;
            sqlDataAdapter.SelectCommand = sqlCommand;                                                      //将SQL数据适配器的查询命令属性指向SQL命令;
            DataTable classTable = new DataTable();                                                         //声明并实例化数据表,用于保存所有班级,以用作下拉框数据源;
            DataTable studentTable = new DataTable();                                                       //声明并实例化数据表,用于保存所有学生,以用作数据网格视图的数据源;
            sqlConnection.Open();                                                                           //打开SQL连接;
            sqlDataAdapter.Fill(classTable);                                                                //SQL数据适配器读取数据,并填充班级数据表;
            sqlCommand.CommandText = "SELECT * FROM tb_Student;";                                           //指定SQL命令的命令文本;该命令查询所有学生;
            sqlDataAdapter.Fill(studentTable);                                                              //SQL数据适配器读取数据,并填充学生数据表;
            sqlConnection.Close();                                                                          //关闭SQL连接;
            this.StudentTable = studentTable;                                                               //将学生表赋予本窗体的相应私有字段,便于其它方法访问;
            this.dgv_Score.Columns.Clear();                                                                 //数据网格视图的列集合清空;
            this.dgv_Score.DataSource = studentTable;                                                       //将数据网格视图的数据源设为学生数据表;
            this.dgv_Score.Columns["No"].HeaderText = "学号";                                               //将数据网格视图的指定列的表头文本设为中文;
            this.dgv_Score.Columns["Name"].HeaderText = "姓名";
            this.dgv_Score.Columns["Gender"].HeaderText = "性别";
            this.dgv_Score.Columns["BirthDate"].HeaderText = "生日";
            this.dgv_Score.Columns["Speciality"].HeaderText = "特长";
            this.dgv_Score.Columns["Photo"].HeaderText = "照片";
            this.dgv_Score.Columns["ClassNo"].Visible = false;                                              //将数据网格视图的指定列设为不可见;
            DataGridViewComboBoxColumn classColumn = new DataGridViewComboBoxColumn();                      //声明并实例化数据网格视图下拉框列,用于设置学生的班级;
            this.dgv_Score.Columns.Add(classColumn);                                                        //将下拉框列加入数据网格视图的列集合;
            classColumn.Name = "Class";                                                                     //设置下拉框列的名称;
            classColumn.HeaderText = "班级";                                                                //设置下拉框列的表头文本;
            classColumn.DataSource = classTable;                                                            //设置下拉框列的数据源为班级数据表;
            classColumn.DisplayMember = "Name";                                                             //设置下拉框列的显示成员为(班级数据表的)名称(列);
            classColumn.ValueMember = "No";                                                                 //设置下拉框列的值成员为(班级数据表的)编号(列);
            classColumn.DataPropertyName = "ClassNo";                                                       //设置下拉框列的数据属性名称为(学生数据表的)班级编号(列);
            classColumn.DisplayIndex = 4;                                                                   //设置下拉框列的显示顺序;
            classColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;                             //设置下拉框列的自动调整列宽模式为(显示)所有单元格;
            this.dgv_Score.Columns[this.dgv_Score.Columns.Count - 2].AutoSizeMode =                         //数据网格视图的倒数第2列(即照片列)的自动调整列宽模式设为填充(至数据网格视图右侧边缘);
                DataGridViewAutoSizeColumnMode.Fill;
        }
        
        /// <summary>
        /// 私有方法:点击更新按钮;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Update_Click(object sender, EventArgs e)
        {
            SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;
            sqlConnection.ConnectionString =
                "Server=(local);Database=EduBaseDemo;Integrated Security=sspi";                             //在字符串变量中,描述连接字符串所需的服务器地址、数据库名称、集成安全性(即是否使用Windows验证);
            SqlCommand sqlCommand = new SqlCommand();                                                       //声明并实例化SQL命令;
            sqlCommand.Connection = sqlConnection;                                                          //将SQL命令的连接属性指向SQL连接;
            sqlCommand.CommandText =                                                                        //指定SQL命令的命令文本;
                "UPDATE tb_Student"
                + " SET Name=@Name,Gender=@Gender,BirthDate=@BirthDate,ClassNo=@ClassNo,Speciality=@Speciality"
                + " WHERE No=@No;";
            sqlCommand.Parameters.Add("@Name",SqlDbType.VarChar,0,"Name");                                  //向SQL命令的参数集合添加参数的名称、SQL Server数据类型、长度(仅用于定长类型)、所绑定的数据表中的列名;
            sqlCommand.Parameters.Add("@Gender", SqlDbType.Bit, 0, "Gender");
            sqlCommand.Parameters.Add("@BirthDate", SqlDbType.Date, 0, "BirthDate");
            sqlCommand.Parameters.Add("@ClassNo", SqlDbType.Int, 0, "ClassNo");
            sqlCommand.Parameters.Add("@Speciality", SqlDbType.VarChar, 0, "Speciality");
            sqlCommand.Parameters.Add("@No", SqlDbType.Char, 10, "No");
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器,同时借助构造函数,将其SelectCommand属性设为先前创建的SQL命令;
            sqlDataAdapter.UpdateCommand = sqlCommand;                                                      //将SQL数据适配器的更新命令属性指向SQL命令;
            DataTable studentTable = this.StudentTable;                                                     //声明数据表,并指向本窗体的相应私有字段;
            sqlConnection.Open();                                                                           //打开SQL连接;
            int rowAffected = sqlDataAdapter.Update(studentTable);                                          //SQL数据适配器根据学生数据表提交更新,并返回受影响行数;
            sqlConnection.Close();                                                                          //关闭SQL连接;
            MessageBox.Show("更新" + rowAffected.ToString() + "行。");                                      //在消息框显示受影响行数;
        }

        private void frm_StudentTable_Load(object sender, EventArgs e)
        {

        }
    }                                                                                                    
}

三.思维导图


 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/Dennis_t/article/details/89078118
今日推荐