0 / 0 / 0
Регистрация: 22.01.2017
Сообщений: 7
1

Передача значения из OpenDialog в TextBox на общей форме из процедуры нажатия кнопки вызова OpenDialog

22.01.2017, 20:05. Показов 1844. Ответов 5
Метки нет (Все метки)

Доброго времени суток, уважаемые форумчане. На форме лежат TextBox и Button. Элементы созданы программно. При нажатии на Button вызывается OpenDialog. Пытаюсь выполнить передачу значения OpenDialog в TextBox, но похоже путаюсь в видимости компонентов формы. При указании в процедуре кнопки Click - this или форма недоступна. Подскажите пожалуйста, как передать значение результата выбора OpenDialog в TextBox на форме.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 public void databaseoptionItem_Click(object sender, EventArgs e)
        {
            Form optionForm = new Form(); 
            TextBox databasePathTextBox = new TextBox();
            databasePathTextBox.Parent = optionForm;
            optionForm.Controls.Add(databasePathTextBox);
            Button databasePathButton = new Button();
            databasePathButton.Text = "...";
            databasePathButton.Click += new EventHandler(databasePathButton_Click);
            optionForm.Show();
 
 public static void databasePathButton_Click(object sender, EventArgs e) 
        {
            OpenFileDialog databaseOpenFileDialog = new OpenFileDialog();
            if (databaseOpenFileDialog.ShowDialog() == DialogResult.OK) 
            {
             optionform.    ?(не вижу ни формы ни объектов)
            }
         }
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2017, 20:05
Ответы с готовыми решениями:

Компонент: свойство вызова OpenDialog
Делаю компонент который работает с изображениями. Для загрузки используется OpenDialog, только вот...

После нажатия кнопки в первой форме, становится невидимым TextBox во второй форме
у меня 2 формы .в первой форме, после нажатия кнопки открывается вторая форма. как сделать чтобы...

Добавление кнопки удаления в opendialog
Здравствуйте, задача состоит в том, чтобы сделать программу просмотра документов из списка Excel...

WPF TextBox передача значения по нажатию кнопки
В WPF компонент TextBox передает свое значение в прибиндинное свойство только когда теряет фокус....

5
1113 / 920 / 236
Регистрация: 15.06.2012
Сообщений: 3,614
Записей в блоге: 1
23.01.2017, 02:05 2
Свойство FileDialog.FileName

C#
1
2
3
4
            if (databaseOpenFileDialog.ShowDialog() == DialogResult.OK) 
            {
             this.TextBox1.Text = optionform.FileName;
            }
0
0 / 0 / 0
Регистрация: 22.01.2017
Сообщений: 7
23.01.2017, 19:51  [ТС] 3
Wolfdp, к сожалению this в данном контексте не виден... Подозреваю на то, что видимость компонентов класса задается при создании класса, т.е. стоит попробовать обозначить нужную переменную необходимого типа в начале класса, т.е формы... попробую...
0
Модератор
Эксперт .NET
5812 / 4689 / 2940
Регистрация: 20.04.2015
Сообщений: 8,359
23.01.2017, 19:58 4
Лучший ответ Сообщение было отмечено alessi-savage как решение

Решение

alessi-savage,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Form optionForm; //объявление выносим в класс
private void button1_Click(object sender, EventArgs e)
{
    optionForm = new Form();
    TextBox databasePathTextBox = new TextBox();
    databasePathTextBox.Parent = optionForm;
    optionForm.Controls.Add(databasePathTextBox);
    Button databasePathButton = new Button();
    databasePathButton.Text = "...";
    databasePathButton.Click += new EventHandler(databasePathButton_Click);
    optionForm.Show();
}
 
public void databasePathButton_Click(object sender, EventArgs e) //убираем static
{
    OpenFileDialog databaseOpenFileDialog = new OpenFileDialog();
    if (databaseOpenFileDialog.ShowDialog() == DialogResult.OK) 
    {
         //теперь есть и this и optionForm       
    }
}
1
0 / 0 / 0
Регистрация: 22.01.2017
Сообщений: 7
23.01.2017, 20:48  [ТС] 5
Действительно, при создания приватной переменной класса и в последующем присвоением ей значения создаваемого экземпляра - объект, появившийся на форме стал виден в пределах созданного класса , т.е. формы mainForm.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
namespace Datamanager
{
    public partial class mainform : Form
    {
        private TextBox databasePathTextBox;
        private Form aboutForm;
        private Form optionForm;
        public mainform()
        {
           InitializeComponent();
        }
 
...
 
public void databaseoptionItem_Click(object sender, EventArgs e)
        {
            optionForm = new Form();
            databasePathTextBox = new TextBox();
            optionForm.Controls.Add(databasePathTextBox);
            Button databasePathButton = new Button();
            optionForm.Controls.Add(databasePathButton);
            databasePathButton.Click += new EventHandler(databasePathButton_Click);
            Button optionButton = new Button();
            optionButton.Click+= new EventHandler(optionButton_Click);
            optionForm.Controls.Add(optionButton);
            optionForm.Show();
 
public void optionButton_Click(object sender, EventArgs e)
        {
            optionForm.Close();
        }
public void databasePathButton_Click(object sender, EventArgs e) 
        {
            OpenFileDialog databaseOpenFileDialog = new OpenFileDialog();
            if (databaseOpenFileDialog.ShowDialog() == DialogResult.OK) 
            {
                databasePathTextBox.Text = databaseOpenFileDialog.FileName;
            }
         }


Спасибо за помощь . Вопрос закрыт.
0
1113 / 920 / 236
Регистрация: 15.06.2012
Сообщений: 3,614
Записей в блоге: 1
24.01.2017, 07:50 6
Цитата Сообщение от alessi-savage Посмотреть сообщение
Wolfdp, к сожалению this в данном контексте не виден...
не обратил внимание что у вас public static void... Статические методы не могут работать с внутреностями класса.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2017, 07:50

На форме Delphi есть Мемо, OpenDialog, button "Открыть файл", statusBar
при нажатии на кнопку Открыть файл, в Мемо загружается файл и в StatusBar выводиться название...

Ошибка при закрытии OpenDialog без выбора файла и при нажатии кнопки Отмена
почему при закрытии OpenDialog (если не че не открыл), или при нажатии кнопку отмена вылазеет...

Открытие существующей книги эксель и передача значения textbox в ячейку, по нажатию кнопки
Пытаюсь разобраться,куча обрывочной информации в интернете.Но что-то у меня не выходит.....открыть...

По нажатию кнопки прибавлять к общей сумме значение из TextBox
Нужно сделать так, чтобы по нажатию кнопки число, которое было вписано textBox добавилось к общему...

Как из обработчика Form1_KeyPress вызвать событие для нажатия заданной по имени кнопки на форме (кнопки 0-9)
Пишу калькулятор. Есть несколько кнопок (Button) с цифрами и знаками. Для цифр имена кнопок:...

Вызов процедуры нажатия кнопки с кнопки
При нажатии на Button1 создается экземпляр класса. Требуется, при нажатии на Button2 вызывать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.