我对C#还是很陌生,我想知道是否有可能将部分代码(从主窗体移动到外部.cs文件(仍在相同的解决方案),并且可以从我的form1.cs文件中访问与我的原始form1.cs文件相同级别的变量和函数。
我正在使用最新版本的.NET-framework,但没有其他参考(外部)代码。
这是我正在寻找的简单示例:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Code1
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
// variables
text1 = "Hello"
public void ExternalCode()
{
this.BackgroundImage = null;
Btn1.Text = "Click me";
Lbl1.Text = text1;
}
private void Btn1_Click(object sender, EventArgs e)
{
ExternalCode();
}
}
}
此表单中仅包含一个名为“ Btn1
”的按钮和一个名为“ Lbl1
”的标签。
我希望方法SeparateCode
中的代码在一个单独的文件中,但是仍然能够从Form3
访问变量和控件,并且仍然可以访问Form3
能够在外部文件(ExternalCode
)中执行该方法。
我曾想过将此文件做成Form3.cs
的女儿,但正如我所说,我在这方面还很新,所以我真的不知道该怎么做。
答案 0 :(得分:3)
是的,这是可能的,因为该类已在此处声明为局部的:
v-----v
public partial class Form3 : Form
此关键字意味着您从中获取代码的文件可以是多个文件之一,它们都声明了此类的部分内容。
因此,您可以做的是将另一个文件添加到项目中,并确保它有助于此类。为此,您必须:
请注意,您不必提及继承,例如原始文件中带有: Form
的部分,因为从原始文件中仍然可以理解。
因此,如果您添加具有以下内容的文件:
namespace Code1 // <-- this has to be the same
{
public partial class Form3 // <-- as does this
{
public void ExternalCode()
{
this.BackgroundImage = null;
Btn1.Text = "Click me";
Lbl1.Text = text1;
}
}
}
然后您可以从原始文件中删除ExternalCode
,它仍然可以正常工作。
编译器会将所有这些文件视为建立相同的一个类Form3
。