Как получить текст из текстового поля в событие кнопки в с #

Я создал этот код

созданная форма в файле .dll и добавил элементы управления

        TextBox dbname = new TextBox();  
        dbname.BorderStyle = BorderStyle.Fixed3D;
        dbname.Location = new Point(236, 81);

        Button Create = new Button();
        Create.FlatStyle = FlatStyle.Flat;
        Create.FlatAppearance.BorderSize = 0;
        Create.Location = new Point(261, 115);
        Create.Text = "Create";
        Create.Click += new System.EventHandler(this.Create_Click);

Как получить текст из текстового поля?

private void Create_Click(object sender , EventArgs e)
    {

        SaveFileDialog _sfd_ = new SaveFileDialog();

        _sfd_.Filter = "Housam Printing |*.HP";
        _sfd_.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory;
        _sfd_.FileName = dbname.text;
        _sfd_.Title = "Database location";
    }

Вы должны добавить текстовое поле в коллекцию элементов управления или сохранить где-нибудь ссылку на него. Если это член класса, вы можете просто вызвать dbname.Text в коде нажатия кнопки.

Ron Beyer 13.09.2018 21:29

Он должен быть dbname.Text, с заглавной буквы, и dbname должен быть членом уровня класса, чтобы это работало. Я предполагаю, что вы создаете переменную dbname как переменную уровня метода, а не как переменную уровня класса.

Ron Beyer 13.09.2018 21:33

CreateFile.Controls.Add (dbname_lb); CreateFile.Controls.Add (Создать); я сделал

Geanny 13.09.2018 21:35
1
3
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы сделать ваши элементы управления доступными для остальной части вашего класса, вам необходимо определить их на уровне класса. Затем вы можете инициализировать их в конструкторе или событии Form_Load (или где угодно) и получить к ним доступ из других методов класса:

public partial class Form1 : Form
{
    // Declare your controls at the class level so all methods can access them
    private TextBox dbName;
    private Button create;

    private void Form1_Load(object sender, EventArgs e)
    {
        dbName = new TextBox
        {
            BorderStyle = BorderStyle.Fixed3D,
            Location = new Point(236, 81)
        };
        Controls.Add(dbName);

        create = new Button
        {
            FlatStyle = FlatStyle.Flat,
            Location = new Point(261, 115),
            Text = "Create",
        };
        create.FlatAppearance.BorderSize = 0;
        create.Click += create_Click;
        Controls.Add(create);
    }

    private void create_Click(object sender , EventArgs e)
    {
        var sfd = new SaveFileDialog
        {
            Filter = "Housam Printing |*.HP",
            InitialDirectory = AppDomain.CurrentDomain.BaseDirectory,
            FileName = dbName.Text,
            Title = "Database location"
        };
    }
}        

Другие вопросы по теме