Как подключить текстовое поле с параметром?

#c#

#c#

Вопрос:

У меня есть два класса: FormOne и 123 .

В FormOne нем есть текстовые поля, метки и код кнопок. 123 Есть подключение к базе данных Erply, и я должен создать форму входа, в которую клиенты могут входить, поэтому мне нужно подключить текстовое поле с именем пользователя, поэтому, если клиент хочет войти в систему, программа отправляет информацию в Erply и отправляет обратно, если имя пользователя и пароль верны.

Итак, вкратце, как подключить параметр «имя пользователя» с текстовым полем?

 class FormOne
{
    private void textBox18_TextChanged(object sender, EventArgs e)
    {
        //username textbox
        //I need code in here
    }
}
class 123
{
    async public void DoItJustDoItPleaseIBegYou()
    {
        string erplyPilv = "http://**clientcode**.erply.com/api/";  //"http://***.***.***.**:****/**/"

        await VerifyUser(erplyPilv, "verifyUser", "request", "**username**", "**password**", "**clientcode**", "0.1");
    }

    public async Task VerifyUser(string url, string VerifyUser, string request, string username, string password, string clientcode, string version)
    {
        IEnumerable<KeyValuePair<string, string>> queries = new List<KeyValuePair<string, string>>()
        {
            new KeyValuePair<string, string>("request", VerifyUser),
            new KeyValuePair<string, string>("username", username),
            new KeyValuePair<string, string>("password", password),
            new KeyValuePair<string, string>("clientCode", clientcode),
            new KeyValuePair<string, string>("version", version),
        };
    }
}
 

Комментарии:

1. how to connect parameter "username" with textbox? .. эм, ты этого не делаешь… Куда и как вы звоните DoItJustDoItPleaseIBegYou ?

2. async void это действительно плохая идея. Ваш метод должен, по крайней мере, возвращать a Task .

3. @David Ты не ошибаешься, но я думаю, что сейчас это наименьшая из проблем OPs.

4. @ChrisPickford Я бы согласился, но всегда хорошо, если кто-то может указать на потенциальные проблемы, когда они их видят; в этом нет ничего плохого 🙂

Ответ №1:

Вам просто нужно передать значение из текстового поля в ваш код в другом классе

 class FormOne
{
    private void textBox18_TextChanged(object sender, EventArgs e)
    {
        123 OtherClass = new 123( );
        123.DoItJustDoItPleaseIBegYou( textBox18.text );
    }
}
class 123
{
    async public void DoItJustDoItPleaseIBegYou(string UserName)
    {
        string erplyPilv = "http://**clientcode**.erply.com/api/";  //"http://***.***.***.**:****/**/"

        await VerifyUser( erplyPilv, "verifyUser", "request", UserName, "**password**", "**clientcode**", "0.1" );
    }

public async Task VerifyUser(string url, string VerifyUser, string request, string username, string password, string clientcode, string version)
{
    IEnumerable<KeyValuePair<string, string>> queries = new List<KeyValuePair<string, string>>( )
    {
        new KeyValuePair<string, string>("request", VerifyUser),
        new KeyValuePair<string, string>("username", username),
        new KeyValuePair<string, string>("password", password),
        new KeyValuePair<string, string>("clientCode", clientcode),
        new KeyValuePair<string, string>("version", version),
    };
}
 

Ответ №2:

Предполагая, что ваше текстовое поле называется textBox18 (каковым оно и является, исходя из имени вашей функции), тогда:

 private void textBox18_TextChanged(object sender, EventArgs e)
{
   var userName = textBox18.Text;
}
 

Комментарии:

1. Область действия этой переменной — это только метод, что, если OP не вызывает ничего, что использует этот параметр? ИМХО, было бы лучше иметь область на уровне класса…

2. Это отвечает на вопрос.