C# 窗口程序基础:按钮事件与简单业务逻辑实现
C# 窗口程序基础:按钮事件与简单业务逻辑实现
一、为什么这一篇很关键
- 能创建 WinForms 项目
- 能设计窗口界面
- 能通过按钮响应用户操作
但此时程序还不像一个系统,更像“点一下给个提示”。
而进销存系统的核心不是弹窗,而是业务逻辑,例如:
- 判断输入是否合理
- 根据不同情况给出不同结果
- 多个控件之间产生联动
第 2 篇的目标:
让你的窗口程序开始具备“业务判断能力”。
二、本篇要达到的效果
学什么
- 多个控件协同工作
- 按钮事件中编写完整业务逻辑
- 基本的条件判断(if / else)
- 将“业务规则”写进程序
做到什么
- 模拟一个 “商品录入界面”雏形
- 判断输入是否合法
- 根据输入给出不同反馈
- 程序开始像一个“管理系统”
三、准备一个“商品录入”窗口界面
1. 设计界面控件
在 Form1 中拖入以下控件:
| 控件类型 | 名称(建议) | 用途 |
|---|---|---|
| Label | label1 | 商品名称 |
| TextBox | txtName | 输入商品名称 |
| Label | label2 | 商品价格 |
| TextBox | txtPrice | 输入商品价格 |
| Button | btnSave | 保存商品 |
| Button | btnClear | 清空输入 |
界面语义已经非常接近真实系统。
四、从界面获取多个输入值
1. 保存按钮的点击事件
双击 “保存商品”按钮,生成事件方法:
private void btnSave_Click(object sender, EventArgs e)
{
}
2. 读取文本框中的数据
private void btnSave_Click(object sender, EventArgs e)
{
string name = txtName.Text.Trim();
string priceText = txtPrice.Text.Trim();
}
这里第一次出现一个重要习惯:
Trim()—— 去掉用户输入的前后空格
真实系统中非常重要
五、第一层业务校验:不能为空
在进销存系统中,商品名称和价格一定不能空。
private void btnSave_Click(object sender, EventArgs e)
{
string name = txtName.Text.Trim();
string priceText = txtPrice.Text.Trim();
if (name == "")
{
MessageBox.Show("请输入商品名称");
return;
}
if (priceText == "")
{
MessageBox.Show("请输入商品价格");
return;
}
}
你在这里学到的不是 if,而是:
系统要替用户兜底,不能相信用户输入
六、第二层业务校验:数据类型正确吗?
价格应该是数字,但用户可能输入:
- abc
- 一百
- 12.3.4
这时候程序不能直接用。
1. 使用 decimal.TryParse
decimal price;
if (!decimal.TryParse(priceText, out price))
{
MessageBox.Show("商品价格必须是数字");
return;
}
现在完整逻辑是:
private void btnSave_Click(object sender, EventArgs e)
{
string name = txtName.Text.Trim();
string priceText = txtPrice.Text.Trim();
if (name == "")
{
MessageBox.Show("请输入商品名称");
return;
}
if (priceText == "")
{
MessageBox.Show("请输入商品价格");
return;
}
decimal price;
if (!decimal.TryParse(priceText, out price))
{
MessageBox.Show("商品价格必须是数字");
return;
}
MessageBox.Show("商品保存成功!");
}
七、第三层业务校验:业务规则判断
在真实进销存系统中:
- 商品价格不能为负数
- 不能为 0
if (price <= 0)
{
MessageBox.Show("商品价格必须大于 0");
return;
}
加入后,完整代码变为:
private void btnSave_Click(object sender, EventArgs e)
{
string name = txtName.Text.Trim();
string priceText = txtPrice.Text.Trim();
if (name == "")
{
MessageBox.Show("请输入商品名称");
return;
}
if (priceText == "")
{
MessageBox.Show("请输入商品价格");
return;
}
decimal price;
if (!decimal.TryParse(priceText, out price))
{
MessageBox.Show("商品价格必须是数字");
return;
}
if (price <= 0)
{
MessageBox.Show("商品价格必须大于 0");
return;
}
MessageBox.Show($"商品保存成功:{name},价格:{price}");
}
你已经写出了一个完整的“业务校验流程”。
八、第二个按钮:清空界面状态
系统不仅要能“存”,还要能“恢复初始状态”。
清空按钮事件
private void btnClear_Click(object sender, EventArgs e)
{
txtName.Text = "";
txtPrice.Text = "";
}
这是一个典型的 界面状态控制。
九、这一篇你真正学到的“系统能力”
表面上你学的是:
- 多个 TextBox
- if 判断
- TryParse
但实际上你已经掌握了 进销存系统的底层能力:
- 输入校验
- 业务规则约束
- 用户操作流程控制
- “不合法就不往下走”的工程思维
后面所有模块(采购、销售、库存)
都会不断重复并升级这一套逻辑。
十、本篇小结
在这一篇中,你已经完成了从“按钮点一下”到“业务流程判断”的跨越:
- 程序开始有规则
- 用户输入开始被约束
- 界面开始体现“系统逻辑”
这正是从“写程序”走向“做系统”的关键一步。

浙公网安备 33010602011771号