我正在开发一个表单应用程序,似乎误解了我的方法的范围。我有两个工作方法Split和AddToDatabase,我正试图从button1_click事件处理程序调用它们。然而,在处理程序中,Split()和AddToDatabase()以红色突出显示,表示它们在当前上下文中不存在。。。有人知道为什么会这样吗?感谢
namespace WindowsFormsApplication1
{
class Content
{
public void Split()
{
//
}
public void AddToDatabase()
{
//
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void Browse_Click(object sender, EventArgs e)
{
DialogResult result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK) // Test result.
{
string root = openFileDialog1.FileName;
}
}
public void button1_Click(object sender, EventArgs e)
{
Split();
AddtoDataBase();
}
}
}
这是因为它们在不同的类中。你需要这个:
var c = new Content();
c.Split();
c.AddToDatabase();
但这就引出了一个问题,即它们是否需要是实例方法。如果它们不存储任何状态,则将其设为static
:
public static void Split() ...
public static void AddToDatabase() ...
然后这样称呼他们:
Content.Split();
Content.AddToDatabase();
它们不存在于该范围中,因为您已将它们放入另一个类(Content
)中。在不知道为什么的情况下,我猜"答案是正确的,但您要么需要创建Content
的实例,并在上调用Split
和AddToDatabase
,要么将方法移动到您的主窗体。
您需要使用Content
类的instance
进行访问,因为这些方法在不同的类Content
中声明
示例:
Content c=new Content();
c.Split();
c.AddtoDataBase();
它们在Content
类中定义,而不是在Form1
类中定义
请尝试以下操作。
public void button1_Click(object sender, EventArgs e)
{
var content = new Content();
content.Split();
content.AddtoDataBase();
}
此外,您目前已经定义了Content
类,但没有定义它是public
、private
等,因此它将默认为internal
。
最后,当你构建越来越多的代码时,你会发现在同一个文件中有多个类会让你很难找到你的方法。尝试将它们分为不同的文件,通常是Content.cs
和Form1.cs