使用C#写winform小程序入门

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 使用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:单元格中数据变更触发。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
开发框架 .NET API
RESTful API 设计与实现:C# 开发者的一分钟入门
【10月更文挑战第5天】本文从零开始,介绍了如何使用 C# 和 ASP.NET Core 设计并实现一个简单的 RESTful API。首先解释了 RESTful API 的概念及其核心原则,然后详细说明了设计 RESTful API 的关键步骤,包括资源识别、URI 设计、HTTP 方法选择、状态码使用和错误处理。最后,通过一个用户管理 API 的示例,演示了如何创建项目、定义模型、实现控制器及运行测试,帮助读者掌握 RESTful API 的开发技巧。
135 7
|
4月前
|
存储 JSON 小程序
微信小程序入门之新建并认识小程序结构
微信小程序入门之新建并认识小程序结构
90 1
|
4月前
|
C#
C#入门
C#入门
33 0
|
2月前
|
Linux C# iOS开发
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
65 12
|
5月前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
3月前
|
程序员 C# 图形学
全面的C#/.NET自学入门指南
全面的C#/.NET自学入门指南
|
4月前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
108 8
|
4月前
|
XML 小程序 JavaScript
小程序入门之项目配置说明和数据绑定
小程序入门之项目配置说明和数据绑定
65 1
|
4月前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
372 0
|
6月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
155 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目