Соединение переменных с другим классом - PullRequest
0 голосов
/ 19 октября 2018

Итак, у меня есть небольшой проект, над которым я работаю.По сути, я хочу создать еще один класс с соединением SQL и результатами.Однако, он говорит мне:

Имя 'firstName' не существует.

Когда я помещаю его на страницу, созданную для режима конструктора в визуальномстудия, это уходит и работает.

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 click ниже:

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 голосов
/ 19 октября 2018

Вы, похоже, имеете здесь дело с Windows Forms, так как ваш основной класс - Form.Для начала я бы рекомендовал не давать именам форм, которые совершенно не связаны с ними.У меня есть привычка называть основные формы моих приложений MainForm, но вы также можете использовать, например, MyAppForm (название вашего приложения плюс слово Form).

Отложив это,если вам нужен доступ к элементу управления в вашей форме (например, TextBox), я рекомендую вам сделать это в самом классе Form , если только у вас нет для этого веской причины.Вы не сможете ссылаться на вещи извне класса формы (так как элементы управления Private), и даже если вы напишите метод для извлечения элементов управления из вашей формы, вы не сможете получить к ним доступ (они будутв другом потоке), если вы не реализуете алгоритм, позволяющий обойти это.

Поэтому я предлагаю вам переместить ваш метод GetInfo в свой класс формы.Обратите внимание, что этот класс является partial классом, это означает, что вы можете создать новый файл класса с тем же именем класса, и это расширит ваш класс формы, улучшив организацию вещей (именно это делает генерация кода в Designer, поэтому выне предполагается что-либо менять в файле Designer).

Редактировать : Кроме того, как предложено выше, если контекст вашей формы не соответствует вашему методу, вы также можете передать данныеТребуется контроль с помощью дополнительного общедоступного метода.Этот дополнительный метод может быть вызван вашим событием формы, например.

Примечание : Обязательно определите класс как partial и в другом файле, если вы собираетесь это сделатьэто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...