Как передать значение из одной формы в закрытый TextBox в другой форме через открытый статический класс? - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть Invoice form с несколькими приватными текстовыми полями.Я хочу передать некоторые значения из моего DataGridView в search form в эти текстовые поля в Invoice form (например, когда я нажимаю Enter).Я хочу передать значения текущей выбранной строки в DataGridView для передачи в определенные текстовые поля в Invoice Form: я мог бы проиллюстрировать это следующим кодом: (Я знаю, как получить значения выбранной строки вdatagridview мой вопрос - это просто заголовок ...)

if (e.KeyCode == Keys.Enter)
{
    SqlCommand sqlcmd = new SqlCommand("SELECT ID FROM X WHERE ID=" +
                        dataGridView1.CurrentRow.Cells[0].Value + "", sqlcon);
    SqlDataReader sqldr = sqlcmd.ExecuteReader();
    while (sqldr.Read())
    {
        InvoiceForm.CodeTextBox = sqldr[codecolumn].Tostring
        InvoiceForm.NameTextBox = sqldr[Namecolumn].Tostring
        InvoiceForm.BlahTextBox = sqldr[Blahcolumn].Tostring                               
    }
}

, который выдает мне следующую ошибку:

codeTextBox закрыт ... не может сделать это из-зауровень защиты ...

Я думаю, что для этого нужно сделать публичный статический класс, но я не знаю как.Как я пытался:

 private string RetrivedCode;
        private string RetrivedName;
        private int RetrivedQTY;
        ...

    Public Form1(string CodeTextBox , string NameTextBox, string BlahTextBox)
    {
      this.CodeTextBox= RetrivedCode; 
      this.NameTextBox= RetrivedName; 
      ... and so On 
    }

какие ошибки:

не может неявно преобразовать тип 'string' в 'system.windows.forms.textbox'.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Вы пытались изменить уровень доступа вашего CodeTextBox к общедоступному внутри InvoiceForm , который называется InvoiceForm.Designer.cs file.

0 голосов
/ 21 ноября 2018

Что ж, ошибка вполне понятна, вы пытаетесь convert type 'string' to 'system.windows.forms.textbox'.

while (sqldr.Read())
{
    //textbox                  string
    InvoiceForm.CodeTextBox = sqldr[codecolumn].Tostring();
    InvoiceForm.NameTextBox = sqldr[Namecolumn].Tostring();
    InvoiceForm.BlahTextBox = sqldr[Blahcolumn].Tostring();
}

, если вместо этого установить текстовое свойство text, ошибка исчезнет.

while (sqldr.Read())
{
    // Note the ´Text´ property.
    InvoiceForm.CodeTextBox.Text = sqldr[codecolumn].Tostring();
    InvoiceForm.NameTextBox.Text = sqldr[Namecolumn].Tostring();
    InvoiceForm.BlahTextBox.Text = sqldr[Blahcolumn].Tostring();
}

ОБНОВЛЕНИЕ:

То же самое на самом деле, даже если это вторая часть, которая вызывает ошибки.Я полагаю CodeTextBox это текстовое поле?

this.CodeTextBox.Text = RetrivedCode; 
this.NameTextBox.Text = RetrivedName; 

Но вы задаете не тот вопрос.Потому что для этого не нужно «делать общедоступный статический класс».Если вы сделаете свои текстовые поля защищенными (если ваша вторая форма наследует первую форму) или общедоступными, а не закрытыми, вы сможете назначить значение напрямую в соответствии с моими первыми примерами.

Если ваше текстовое поле обязательнодолжен быть закрытым, использовать общедоступный или защищенный метод доступа или общедоступный метод, который устанавливает значение свойства Text текстовых полей.

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