提问人:Guy 4678 提问时间:9/3/2023 更新时间:9/3/2023 访问量:51
如何将代码从主窗体类中分离出来?
How do I go about separating code away from the main form class?
问:
我只是 C# 的新手,但有一个项目在旅途中,遇到了一些麻烦。
我正在尝试遵循(我已知的)最佳实践,并希望尽早掌握这一点。
下面是一个非常简化的示例。我想提取方法,最好是提取到另一个文件,但无法确定范围恢复到原始形式。
namespace form_and_separate_class
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void button1_Click(object sender, EventArgs e)
{
textBox1.Text = GetText();
}
public void button2_Click(object sender, EventArgs e)
{
SetText();
}
public string GetText()
{
return "text111";
}
public void SetText()
{
textBox1.Text = "Text222";
}
}
}
我想把 GetText() 和 SetText() 方法拿出来,把它们放在其他地方,但仍然可以让它们工作。
我已经在网上和youTube上做了很多事情,但对我来说,这一切似乎都有点过于复杂了。有没有人有任何关键字(我以为是方法提取),我需要谷歌,或者可以在上面的示例中扔几行。
我试图定位的表单实际上是我通过“表单 form1 = new Form();即使智能识别它,我也无法让任何东西工作
多谢!
我只是想学习并克服路上的这个小坎坷
答:
-1赞
IFrank
9/3/2023
#1
如果 SetText() 和 GetText() 方法归您的 Form 所有,并且您面向的特定文本框采用该表单,我认为您不能将这些方法放在其他地方(或者我可能不明白这个问题)。
如果只需要将代码分部分组织,可以查看 C# 区域。
另一种选择是使这些方法泛型,例如:
public void SetText(TextBox textbox, string text)
{
textbox.Text = text;
}
public string GetText(TextBox textbox)
{
return textbox.Text;
}
这样,您可以将这些方法放在另一个类(可能是静态类)中,并使用它们在表单文件的顶部添加 using 指令。
请尝试提供更多详细信息,如果需要,我会更新我的答案。
评论
0赞
Guy 4678
9/3/2023
是的,带有代码的第二个选项似乎是首选。我确实尝试调用一个方法并将表单作为对象参数传递给外部方法,但我不确定它是否有效。这种方法是否允许我使用原始主窗体上声明的方法?这就是我的总体目标,我很确定。谢谢。对不起,我什至不能支持你的答案。哈哈
0赞
IFrank
9/3/2023
@Guy4678 很高兴它帮助了你。我强烈建议你看一下面向对象编程的基础知识。如果您先学习基本的编程概念,学习编程语言确实很有意义。如果您需要更多帮助,请告诉我,我仍然不确定是否正确理解了您的问题,因为它非常通用。
上一个:将对象列表传递给奇异方法
评论