C# 如何在VisualStudio中将业务逻辑从windows窗体分离到类
我在C#和visualstudio中工作,并制作了一个Windows窗体(C# 如何在VisualStudio中将业务逻辑从windows窗体分离到类,c#,visual-studio-2015,C#,Visual Studio 2015,我在C#和visualstudio中工作,并制作了一个Windows窗体(MainForm)-它有大量的按钮,可以通过许多进程工作 目前-它实际上工作得很好,我只是想“让它工作”。但是,我所有的代码都在MainForm.cs文件中,我认为这是一种不好的做法。我在那里有很多方法,我觉得最好放在适当的类中 通过阅读,我发现buttonClick事件应该存在于Form类中,但随后应该将剩余的工作交给存在按钮的类(即,如果按钮说“备份图片”,我应该有一个带有“备份”方法的图片类) 在VisualStud
MainForm
)-它有大量的按钮,可以通过许多进程工作
目前-它实际上工作得很好,我只是想“让它工作”。但是,我所有的代码都在MainForm.cs
文件中,我认为这是一种不好的做法。我在那里有很多方法,我觉得最好放在适当的类中
通过阅读,我发现buttonClick
事件应该存在于Form类中,但随后应该将剩余的工作交给存在按钮的类(即,如果按钮说“备份图片”,我应该有一个带有“备份”方法的图片类)
在VisualStudio中有没有一个好的方法来实现这一点
有没有帮助者可以使用现有的方法并将它们放入自己的类中?我在之前的项目中遇到了这个问题,下面是如何解决这个问题的
因此,最好取出所有内容并保留UI、COM调用,所有内容都将以这种方式正常工作。您认为
事件
和事件处理程序
应该存在于表单
中,而所有数据操作都应该在处理程序
调用的类中处理。不幸的是,没有任何工具可以神奇地将这些内容拆分出来,因为没有真正的方法来自动化需要类的内容和最好的内联内容
您应该遍历代码并首先建立所需的类。继续,用“添加新内容”创建New
Class
文件,并将其删除。他们根本不需要任何代码。现在,转到表单中的事件
处理程序,确定应该在函数中的内容组。举个(非常便宜的)例子:
变成:
//new code
public void myEventHandler(object sender, EventArgs e)
{
LabelResult.Text = Order.Preference(myDrinkOfChoice.Text, myFoodOfChoice.Text);
}
即使创建了一个“Order”类文件,您也会在“Order.Preference”下看到错误的红色波形。您需要将排序
放入一个类中,但不需要删除首选项
,因为VS可以为您这样做。单击鼠标悬停在错误上时出现的错误解决动态菜单按钮,并告诉VS将代码存根到您的订单
类中。再次打开订单时,您将看到:
public static class Order
{
public static string Preference(string myDrink, string myFood)
{
throw new NotImplementedException();
}
}
从这里开始,您只需粘贴表单中的代码
,然后返回值
public static class Order
{
public static string Preference(string myDrink, string myFood)
{
return "I like " + myDrink + " & " + myFood";
}
}
在不牺牲可靠性的情况下,让VS删除您需要的内容可能是完成您正试图完成的工作的最快方式。如果您提前创建了类文件,您可以在表单中通过事件
处理程序并让VS为您清除方法时,只需编写方法名称和签名 这是一个怎样的VisualStudio问题?请仅在有关工具本身的问题上使用Visual Studio标记,而不是在一般编程问题上。在这些情况下,我总是创建我的类,并手动将代码从UI复制/粘贴/调整到新类中。我真的无法想象Visual Studio能够提供什么样的工具来让它变得更简单——对我来说,做这些事情通常只是一件单调乏味的琐事。看看,它提供了高级重构实用程序,例如将一个方法移动到它自己的文件中。重组->重构->移动。很棒的建议@GeorgPatscheider!谢谢乔,我也很感谢你的意见。我不确定“编写代码使其工作”然后将逻辑四处移动有多普遍。我不熟悉C#和visual studio-主要是PHP框架-因此windows窗体是一个学习曲线-我很欣赏反馈~关于使用红色曲线帮助快速创建类中方法的好主意。非常感谢。
public static class Order
{
public static string Preference(string myDrink, string myFood)
{
return "I like " + myDrink + " & " + myFood";
}
}