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

但实际上你已经掌握了 进销存系统的底层能力

  • 输入校验
  • 业务规则约束
  • 用户操作流程控制
  • “不合法就不往下走”的工程思维

后面所有模块(采购、销售、库存)
都会不断重复并升级这一套逻辑


十、本篇小结

在这一篇中,你已经完成了从“按钮点一下”到“业务流程判断”的跨越:

  • 程序开始有规则
  • 用户输入开始被约束
  • 界面开始体现“系统逻辑”

这正是从“写程序”走向“做系统”的关键一步。

posted @ 2025-10-27 21:19  元始天尊123  阅读(3)  评论(0)    收藏  举报