gpt4 book ai didi

C# Windows 窗体应用程序 : Separate GUI from Business Logic

转载 作者:太空狗 更新时间:2023-10-29 17:48:26 26 4
gpt4 key购买 nike

我想要一些关于如何在简单的 C# Windows 窗体应用程序中分离 UI 和业务逻辑的建议。

让我们举个例子:

UI 由一个简单的文本框和一个按钮组成。用户输入 0 到 9 之间的数字并单击按钮。该程序应将数字加 10 并使用该值更新文本框。

enter image description here

业务逻辑部分应该不知道 UI。如何做到这一点?

这是空的流程类(业务逻辑):

namespace addTen
{
class Process
{
public int AddTen(int num)
{
return num + 10;
}
}
}

要求是:

  1. 当用户点击按钮时,Process::AddTen 会以某种方式被调用。
  2. 必须使用 Process::AddTen 的返回值更新文本框。

我只是不知道如何将这两者联系起来。

最佳答案

首先,您需要更改您的类(class)名称。 “Process”是类库中类的名称,可能会使阅读您的代码的任何人感到困惑。

让我们假设,对于这个答案的其余部分,您将类名更改为 MyProcessor(仍然是一个糟糕的名称,但不是一个众所周知的、经常使用的类。)

此外,您还缺少用于检查以确保用户输入确实是 0 到 9 之间的数字的代码。这在表单代码而不是类代码中是合适的。

  • 假设 TextBox 名为 textBox1(VS 为添加到表单的第一个 TextBox 生成默认值)
  • 进一步假设按钮的名称是 button1

在 Visual Studio 中,双击按钮以创建按钮单击事件处理程序,如下所示:

protected void button1_Click(object sender, EventArgs e)
{

}

在事件处理程序中,添加如下代码:

 protected void button1_Click(object sender, EventArgs e)
{
int safelyConvertedValue = -1;
if(!System.Int32.TryParse(textBox1.Text, out safelyConvertedValue))
{
// The input is not a valid Integer value at all.
MessageBox.Show("You need to enter a number between 1 an 9");
// Abort processing.
return;
}

// If you made it this far, the TryParse function should have set the value of the
// the variable named safelyConvertedValue to the value entered in the TextBox.
// However, it may still be out of the allowable range of 0-9)
if(safelyConvertedValue < 0 || safelyConvertedValue > 9)
{
// The input is not within the specified range.
MessageBox.Show("You need to enter a number between 1 an 9");
// Abort processing.
return;
}

MyProcessor p = new MyProcessor();
textBox1.Text = p.AddTen(safelyConvertedValue).ToString();
}

正确设置访问修饰符的类应该如下所示:

namespace addTen       
{
public class MyProcessor
{
public int AddTen(int num)
{
return num + 10;
}
}
}

关于C# Windows 窗体应用程序 : Separate GUI from Business Logic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11547438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com