C# 无法从窗体访问类方法

C# 无法从窗体访问类方法,c#,winforms,C#,Winforms,我正在设置一个非常简单的C#windows窗体应用程序,它有两个窗体,您也可以通过按钮导航。我试图添加一个类来控制数据访问,但我无法从任何表单访问该类。它们都在同一个名称空间中。 这是尝试访问DataAccessLayer.LookupCombo类的表单 namespace LoanSaleControlPanel { public partial class EditParticipant : Form { public EditParticipant()

我正在设置一个非常简单的C#windows窗体应用程序,它有两个窗体,您也可以通过按钮导航。我试图添加一个类来控制数据访问,但我无法从任何表单访问该类。它们都在同一个名称空间中。 这是尝试访问DataAccessLayer.LookupCombo类的表单

namespace LoanSaleControlPanel
{
    public partial class EditParticipant : Form
    {
        public EditParticipant()
        {
            InitializeComponent();
        }
        private void EditParticipant_Load(object sender, EventArgs e)
        {
            DataSet Actions = new DataSet();
            Actions = LookupCombo("LST_Participant");
        }
    }
这是类声明

namespace LoanSaleControlPanel {
    class DataAccessLayer
    {
        public DataSet LookupCombo(string lookuptype) 
        {
            //Execute Queries and save results into variables
            DataSet Data = new DataSet();
            return Data;
        }
    } }

您的类不是静态的,因此需要更改为静态

public static class DataAccessLayer { ... }
你的方法LookupCombo也变为静态。。。或者您需要创建类的新实例来访问它

我很确定你在追求前者,所以只需在你的类中添加static

然后您可以使用

DataAccessLayer.LookupCombo()

你有两个选择。要么将
LookupCombo
函数声明为静态函数,要么必须创建
DataAccessLayer
的实例,然后通过该对象访问该函数

备选案文1:

public static DataSet LookupCombo(string lookuptype) { (...) }
备选案文2:

DataAccessLayer layer = new DataAccessLayer();
layer.LookupCombo(myString);
编辑:

关于选项1,我忘了提到您必须像这样调用该函数:

DataAccessLayer.LookupCombo(mystring);

在同一名称空间中是不够的。您需要通过类对象访问该方法<代码>数据集操作=新建DataAccessLayer().LookupCombo(“LST_参与者”)还请注意,没有理由创建一个新的
DatSet
对象,您将在方法调用中丢弃它。“操作”只在Load方法中起作用。如果希望表单的其余部分可以使用它,则必须在表单级别声明它。您发布的代码不应编译,因此您应该告诉我们您遇到的错误。无法使选项1正常工作,但选项2看起来很有希望。让我再测试一下,然后回来谢谢。