使用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的时候,是这样的。
在这里插入图片描述
默认行列可编辑,行高和列高可编辑,列前有个带 * 的列头,默认可以新增,所以下面会多出一个空白行。
设置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);

CheckBox的选中和去掉选中:

checkBox1.checked = true/false;

日历取值:

String birthday = dateTimePicker1.Value.ToString();

系统时间:

System.DateTime.Now.ToString()

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


在winform中添加图片:
使用PictureBox组件,可以将图片放在本地或者项目中,一帮当然是要放在项目中的,操作如下:
在项目中新建一个空的资源文件:
在这里插入图片描述
在资源文件中右击–添加文件
在这里插入图片描述
添加之后在Resource1.resx的界面中就多了一条刚才添加的图片资源,注意,这里刚添加的时候,Resource1.resx文件的左边是没有小加号的,要右击Resource1.resx–执行自定义工具,就会生成下面的那个Resource1.Designer,cs的文件,这样在PictureBox中添加资源文件的时候就可以在项目中选择了。

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


接下来说一说绑定事件的东西:
点击一个页面构件,右上角点击闪电标志,出现事件列表,双击事件右侧空白处,可以将对应的事件和构件绑定。
在这里插入图片描述
不同的构件有不同的事件可选,这里不一一赘述。一般通过事件名称可以翻译出该事件在什么时候触发。
随便举两个例子:
Button的,Click:点击按钮时触发。
DataGridView的,CellClick:点击表格中单元格时触发。 CellValueChanged:单元格中数据变更触发。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值