将变量连接到另一个类

时间:2018-10-19 16:28:53

标签: c# sql winforms class

所以我有一个正在做的小项目。基本上我想做的是创建另一个类,并带有SQL连接以及结果。但是,它告诉我:

  

名称“名字”不存在。

当我将其放在为Visual Studio中的设计者模式创建的页面上时,它消失了并且可以工作。

info.cs

public void GetInfo(string accountNumber)
{
    string source = helper.CnnVal("WorkflowConfiguration");
    SqlConnection con = new SqlConnection(source);
    con.Open();

    string sqlSelectQuery = $"Select TOP 1 * From [Workflow Creation].[dbo].[ssFields] Where Field16 =" + int.Parse(accountNumber);
    SqlCommand cmd = new SqlCommand(sqlSelectQuery, con);
    SqlDataReader dr = cmd.ExecuteReader();
    if (dr.Read())
    {
        firstName.Text = (dr["Field1"].ToString());
        lastName.Text = (dr["Field2"].ToString());
        dateOfbirth.Text = (dr["Field3"].ToString());
        socialSecurity.Text = (dr["Field4"].ToString());
    }

    con.Close();               
}

我想引用“设计师”代码页。因此,我可以在下面的btn中引用结果:

namespace WindowsFormsApp1
{
    public partial class dataBase : Form
    {
        List<Information> people = new List<Information>();
        private personalInfo personal = new personalInfo();

        public dataBase()
        {
            InitializeComponent();        
        }

        public void searchBtn_Click(object sender, EventArgs e)
        {
            dataAccess db = new dataAccess();

            people = db.GetPeople(accountNumber.Text);
            ListBoxPeople.DataSource = people;
            ListBoxPeople.DisplayMember = "FullInfo";

            //Would like to references here from info.cs       
        }

1 个答案:

答案 0 :(得分:2)

您似乎在这里处理Windows窗体,因为您的主类是Form。首先,我建议不要提供与表单完全无关的名称。我习惯于命名应用程序MainForm的主要形式,但是您也可以使用MyAppForm(应用程序的名称加上单词Form)。

除此之外,如果您需要访问表单上的控件(例如TextBox),我建议您在Form类本身内,除非您有这样做的绝佳理由。您将无法从表单类外部引用内容(因为控件为Private),即使您编写了一种从表单中拉出控件的方法,也将无法访问它们(它们将会在不同的线程上),除非您实现一种算法来解决该问题。

因此,我建议您将GetInfo方法移至表单类。请注意,该类是partial类,这意味着您可以使用相同的类名创建一个新的类文件,它将扩展您的表单类,从而更好地组织事物(这是Designer代码生成所要做的,因此您为什么'不应该更改Designer文件上的内容。

编辑:此外,如上所述,如果表单的上下文不适合您的方法,您还可以通过额外的公共可访问方法来传递控件所需的数据。例如,可以通过Form事件调用该额外方法。

注意:如果您打算这样做,请确保在另一个文件上也将类定义为partial