使用C#写winform小程序入门

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 使用C#写winform小程序入门

帮朋友要写一个自用的winform小程序,一开始打算拿java的swing写,可是发现东西太老旧太难用了,新用的话开发效率比较低。


所以就转C#写吧,反正C#和java很相近,减少很多学习成本。

先说工具,C#一般对应的是SQLServer的数据库,安装稍有麻烦,我这有两个安装条件一直无法满足,算了,还是用mysql。


开发工具的话,最常用的Visual Studio,最新版的单单是winform的功能就要5个G之大。。。。。。网上又搜了搜,发现一款叫Sharpdevelop的轻量级的C#开发软件可以用之。(使用时有一个小问题,有时候对于winform界面操作多次后,编译或者保存会把winform的designer中的内容修改掉,导致可能只是修改了一个按钮的名字,winform界面就报错出不来了,而且designer中的内容还不能撤销刚才的修改。。。。。。不知道是下的软件问题还是我不会用,反正多多备份吧)


先解决C#环境连接mysql数据库的问题,下载mysql-connector-net,是一个msi格式的文件,双击安装即可。之后在sharpdevelop中,右击项目–添加引用,在搜索框中输入mysql,选择mysql.data。(就是刚才安装的东西)

这一步搞定,下一步是操作数据库,列出其中一种写法,上代码。

void nonQueryJS(String sql){
  String connetStr = "server=127.0.0.1;port=3306;user=root;password=123456; database=cake";
  MySqlConnection conn = new MySqlConnection(connetStr);
  try{
      conn.Open();
      MySqlCommand cmd = new MySqlCommand(sql,conn);
      cmd.ExecuteNonQuery();
  }catch(Exception e){
      GLResultTextArea.Text = e.Message;
      return;
  }finally{
       conn.Close();
  }
} 

sql语句作为入参,在做非查询的操作的时候,使用ExecuteNonQuery方法来执行。如果是查询,使用ExecuteReader来获得查询结果。


有了数据来源,接下来记录一些我在winform中的常用元素的用法。


TextBox:普通的文本输入框,如果想用可以多行输入的textarea的话,将Multiline属性设置为true即可。textBox1.Text = “” 可以设置文本框中的内容。


Label和Button:没啥说的。

DataGridView:将sql语句的查询结果填充到表格使用DataGridView组件,将组件拖动到winform上,

右击–Add Colume 可以为表格添加列的内容。

右击–Edit Colume 可以编辑列的一些属性:

ReadOnly:只读。Width:宽度。AutoSizeMode:选择Fill时是将列填充满表格,选择Fill的时候,要对Width进行设置才可以得到合适的列宽。


表格刚拖动到winform的时候,是这样的。

20201012092024872.png

默认行列可编辑,行高和列高可编辑,列前有个带 * 的列头,默认可以新增,所以下面会多出一个空白行。

设置RowHeaderVisible为False去掉前面带 * 的列头。

设置AllowUserToAddRows为fales去掉下面的新增的空白行。

设置AllowUserToResizeRows为fales禁止编辑行高。

设置SelectionMode为FullRowSelect点击选中一整行。CellSelect是默认的选中一个单元格。


DataGridView的数据填充:将sql查询语句的结果放在表格中(多列):

  MySqlCommand cmd = new MySqlCommand(sql,conn);
    dr = cmd.ExecuteReader();
  while(dr.Read()){
    GLProductDataGrid.Rows.Add(dr["type"].ToString(),dr["productname"].ToString(),dr["singlemoney"].ToString());
   }

获得选中单元格的值:

dataGridView1.CurrentCell.Value.ToString();

选中一行时的单元格取值:

在click事件中:

void GLTypeDataGridCellClick(object sender, DataGridViewCellEventArgs e)
    {
      if (e.RowIndex > -1){
      int indexGrid= dataGridView1.CurrentRow.Index;
      String membertel = dataGridView1.Rows[indexGrid].Cells["type"].Value.ToString();
      }

Cells后可以使用列的下标,也可以使用列名来取值。Cells[0]或者Cells[“type”],都可以,列名就是Add Colume 时的name里的值。

清空表内容:

HYmemberTable.Rows.Clear();

遍历表格内容:

int row = dataGridView1.Rows.Count;
for(int i = 0; i< row;i ++){
  String type = dataGridView1.Rows[i].Cells["type"].Value.ToString();
} 

删除选中行:

dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
• 1

CheckBox的选中和去掉选中:

checkBox1.checked = true/false;

日历取值:

String birthday = dateTimePicker1.Value.ToString();
• 1

系统时间:

System.DateTime.Now.ToString()

这两个的默认的格式是yyyy/MM/dd HH:mm:ss.


在winform中添加图片:

使用PictureBox组件,可以将图片放在本地或者项目中,一帮当然是要放在项目中的,操作如下:

在项目中新建一个空的资源文件:

在资源文件中右击–添加文件

添加之后在Resource1.resx的界面中就多了一条刚才添加的图片资源,注意,这里刚添加的时候,Resource1.resx文件的左边是没有小加号的,要右击Resource1.resx–执行自定义工具,就会生成下面的那个Resource1.Designer,cs的文件,这样在PictureBox中添加资源文件的时候就可以在项目中选择了。20201012104246930.png

默认的图片是按原图大小填充在PictureBox中的,要把图片适应PictureBox大小,将SizeMode设置为StretchImage即可。


接下来说一说绑定事件的东西:

点击一个页面构件,右上角点击闪电标志,出现事件列表,双击事件右侧空白处,可以将对应的事件和构件绑定。20201012105029228.png

不同的构件有不同的事件可选,这里不一一赘述。一般通过事件名称可以翻译出该事件在什么时候触发。

随便举两个例子:

Button的,Click:点击按钮时触发。

DataGridView的,CellClick:点击表格中单元格时触发。 CellValueChanged:单元格中数据变更触发。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
24天前
|
C#
C# WinForm发送Email邮件
C# WinForm发送Email邮件
C# WinForm发送Email邮件
|
2月前
|
存储 编译器 数据处理
C#基础入门之数据类型
C#基础入门之数据类型
|
3月前
|
SQL 数据库连接 应用服务中间件
C#WinForm基础编程(三)
C#WinForm基础编程
79 0
|
2月前
|
JSON 小程序 JavaScript
微信小程序入门实践
微信小程序入门实践
|
3月前
|
JSON 小程序 前端开发
微信小程序框架(五)-全面详解(学习总结---从入门到深化)
微信小程序框架(五)-全面详解(学习总结---从入门到深化)
35 0
|
3月前
|
存储 缓存 JSON
微信小程序框架(四)-全面详解(学习总结---从入门到深化)
微信小程序框架(四)-全面详解(学习总结---从入门到深化)
152 0
|
2月前
|
小程序 JavaScript 前端开发
微信小程序云开发入门实践
微信小程序云开发入门实践
|
12天前
|
IDE 程序员 C#
C#编程入门:从零开始的旅程
【4月更文挑战第20天】本文引导初学者入门C#编程,从环境搭建开始,推荐使用Visual Studio Community版作为IDE。接着,通过编写&quot;Hello, World!&quot;程序,介绍基本语法,包括数据类型、运算符和表达式。文章还涉及控制结构、函数和方法,以及面向对象编程概念。通过学习,读者将对C#有初步了解,并激发进一步探索编程世界的兴趣。
|
24天前
|
JavaScript C#
C#winForm程序与html JS交互调用
C#winForm程序与html JS交互调用
|
2月前
|
小程序 安全 搜索推荐
​ C#掌上医院预约挂号系统源码 一套成熟的医院/诊所预约挂号小程序需要了解哪些方面?
"互联网+医院"服务水平不断的提升,各类门诊部、中医馆、诊所、乡镇卫生院、社区卫生服务中心等医疗机构服务形式开始拓展互联网线上渠道。利用微信小程序、公众号(服务号)+网页端等形式进行开发,其中,预约小程序,门诊预约挂号系统的稳定性强、运行维护方便、是被众多医院机构信任与选择的。