我有一个“Form1.cs”类,其中所有进程都发生,该文件有近2k行代码。 我无法正常阅读。
有没有办法将部分功能移动到另一个文件?扩展课程?我仍然希望能够从主“Form1.cs”调用这些函数。这些函数在主类中读取公共声明变量时应该没有任何问题。
using ...
namespace myprogram
{
public partial class Form1 : Form
{
public void function1() {}
public void function2() {}
public void function3() {}
public void function4() {}
}
}
在上面的例子中 - 将函数4移动到另一个文件的正确方法是什么。有没有其他方法可以解决这个问题?
答案 0 :(得分:2)
从Form
外部公开显示所有控件,然后只需将代码复制到一个单独的类中,并让它访问Form
的实例来直接操作控件将无法帮助您维护你的代码。它只是让事情变得一团糟。
您真正想要的是将您的业务逻辑"或任何您想要调用的内容移动到一个单独的类中,而无需移动直接触及UI的代码。 (将该代码保留在原始Form
。)
你说你已经有了辅助课程了,听起来你打算暂时走部分班级路线,所以下面的内容可能没有必要重申(但无论如何......)
假设您的Form
目前看起来像这样:
public partial class Form1 : Form
{
public void function4()
{
var currentText = MyTextBox.Text;
// Do a bunch of stuff that depends on the Text value and even manipulates it
MyTextBox.Text = ??? // Some other value
}
public void SomeOtherFunction()
{
function4();
}
}
我将功能拆分为一个单独的类,它接受来自Form的参数并可以传回值,但绝对不会直接引用调用它的Form上的控件。
public partial class Form1 : Form
{
private HelperClass helper;
public Form1()
{
helper = new HelperClass();
}
public void SomeOtherFunction()
{
MyTextBox.Text = helper.Function4(MyTextBox.Text);
}
}
public class HelperClass()
{
public string Function4(string input) // I need a better name
{
// Do a bunch of stuff that depends on the input value and even manipulates it
return ??? // Some other value, perhaps from the previous stuff you did
}
}
如果你需要返回多个值,那么有一些结构,例如Tuple
,但要注意这也很难维护:
public class HelperClass()
{
public Tuple<int,string> Function4(string input) // I need a better name ;p
{
// Do a bunch of stuff that depends on the input value and even manipulates it
return Tuple.Create(200, "Success!");
}
}
或者只是创建另一个小类,创建一个实例,填充数据,然后返回到原始Form
中的调用方法。
答案 1 :(得分:1)
首先注意:您不应该在表单代码后面有2K行代码!您应该将逻辑拆分为适当的对象,辅助类等。
回答你的问题:这正是partial
课所做的。 Form1
已标记为部分,因此只需创建一个新文件,然后添加:
public partial class Form1 : Form
{
//All your functions
}
编译器将所有部分类组合在一起形成一个类定义。
答案 2 :(得分:0)
您可以创建新文件,并将您的课程添加为partial
课程。这是Visual Studio代码模板已经完成的工作,可以单独保存代码和设计器代码。
只确保类的名称相同,名称空间也必须相同。
namespace myprogram
{
public partial class Form1 : Form
{
public void function4() {}
}
}
只要用partial
关键字标记了您的课程,您就可以将课程设置为任意数量的文件。