Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
 Аватар для Lagos
11 / 11 / 6
Регистрация: 19.01.2012
Сообщений: 195
Записей в блоге: 2

Компонент folderBrowserDialog и его использование

16.11.2016, 23:47. Показов 3360. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Использую VS 2015.
Имею форму. С неё вызываю другую форму..на этой другой форме есть кнопка и textBox. И folderBrowserDialog.
По кнопке должен вызываться folderBrowserDialog и путь, который выберет пользователь запишется в textBox на данной форме. Вот код кнопки:
Код :
C++ Скопировано
1
2
3
4
if (folderBrowserDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
        {
            textBox_in_path->Text = folderBrowserDialog1->SelectedPath;
        }
Программа зависает на мертво, при нажатии на кнопку. Под отладкой следующее:
Миниатюры
Компонент folderBrowserDialog и его использование  
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.11.2016, 23:47
Ответы с готовыми решениями:

Вычисление суммы компонент файла и поиск наименьших его компонент
Создайте файл f, компоненты которого являются действительными числами. Напишите программу вычисления суммы компонент файла f и наименьшие...

Компонент пользователя и его свойства при размещении его на форме
Есть пользовательский компонент на базе TImage. При размещении его на форме проекта, компонент отрисовывается в соотвествии со своими...

Подскажите простую реализацию динамического массива и его использование с возможностью изменения его размера
Подскажите простую реализацию динамического масива и его использование с возможностью изменения его размера........спасибо))) ...

7
 Аватар для Lagos
11 / 11 / 6
Регистрация: 19.01.2012
Сообщений: 195
Записей в блоге: 2
17.11.2016, 19:57  [ТС]
Может быть ком-то пригодится. Открываем файл моя_форма.cpp(обязательно главная форма), и добавляем:
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
#include "MyForm.h"
#include <Windows.h>
using namespace textures_manager;
[STAThread] // данную строку
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);
    Application::Run(gcnew MyForm);
    return 0;
}
1
 Аватар для Bogradan
6 / 5 / 1
Регистрация: 22.03.2016
Сообщений: 296
18.01.2022, 20:00
Спасибо тебе за это, я это и искал.
1
0 / 0 / 1
Регистрация: 17.04.2016
Сообщений: 77
23.03.2023, 16:28
Коллеги, добрый день!
Помогите подсказкой.
Пробую в форме использовать folderBrowserDialog. Но во всех вариантах, запущенная программа зависает при обращении к folderBrowserDialog (нажатие на кнопку Button3). Где-то чего-то не хватает, но не могу понять, чего. Код:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
#pragma once
 
namespace TestWinInt {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    using namespace System::IO;
 
    /// <summary>
    /// Сводка для MainForm
    /// </summary>
    public ref class MainForm : public System::Windows::Forms::Form
    {
    public:
        MainForm(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~MainForm()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Label^ label1;
    protected:
    private: System::Windows::Forms::TextBox^ textBox1_Fist;
    private: System::Windows::Forms::TableLayoutPanel^ tableLayoutPanel1;
    private: System::Windows::Forms::Button^ button1;
    private: System::Windows::Forms::Button^ button2;
    private: System::Windows::Forms::Label^ label2;
 
    private: System::Windows::Forms::Button^ button3;
    private: System::Windows::Forms::FolderBrowserDialog^ folderBrowserDialog1;
 
 
 
 
 
 
 
 
 
 
    private:
        /// <summary>
        /// Обязательная переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Требуемый метод для поддержки конструктора — не изменяйте 
        /// содержимое этого метода с помощью редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            this->label1 = (gcnew System::Windows::Forms::Label());
            this->textBox1_Fist = (gcnew System::Windows::Forms::TextBox());
            this->tableLayoutPanel1 = (gcnew System::Windows::Forms::TableLayoutPanel());
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->button2 = (gcnew System::Windows::Forms::Button());
            this->label2 = (gcnew System::Windows::Forms::Label());
            this->button3 = (gcnew System::Windows::Forms::Button());
            this->folderBrowserDialog1 = (gcnew System::Windows::Forms::FolderBrowserDialog());
            this->tableLayoutPanel1->SuspendLayout();
            this->SuspendLayout();
            // 
            // label1
            // 
            this->label1->AutoSize = true;
            this->label1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 12, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,
                static_cast<System::Byte>(204)));
            this->label1->Location = System::Drawing::Point(12, 9);
            this->label1->Name = L"label1";
            this->label1->Size = System::Drawing::Size(134, 20);
            this->label1->TabIndex = 0;
            this->label1->Text = L"Напиши текст:";
            // 
            // textBox1_Fist
            // 
            this->textBox1_Fist->Anchor = static_cast<System::Windows::Forms::AnchorStyles>(((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Left)
                | System::Windows::Forms::AnchorStyles::Right));
            this->textBox1_Fist->Location = System::Drawing::Point(16, 32);
            this->textBox1_Fist->Name = L"textBox1_Fist";
            this->textBox1_Fist->Size = System::Drawing::Size(283, 20);
            this->textBox1_Fist->TabIndex = 1;
            // 
            // tableLayoutPanel1
            // 
            this->tableLayoutPanel1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>(((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left)
                | System::Windows::Forms::AnchorStyles::Right));
            this->tableLayoutPanel1->ColumnCount = 2;
            this->tableLayoutPanel1->ColumnStyles->Add((gcnew System::Windows::Forms::ColumnStyle(System::Windows::Forms::SizeType::Percent,
                50)));
            this->tableLayoutPanel1->ColumnStyles->Add((gcnew System::Windows::Forms::ColumnStyle(System::Windows::Forms::SizeType::Percent,
                50)));
            this->tableLayoutPanel1->Controls->Add(this->button1, 0, 0);
            this->tableLayoutPanel1->Controls->Add(this->button2, 1, 0);
            this->tableLayoutPanel1->Location = System::Drawing::Point(16, 315);
            this->tableLayoutPanel1->Name = L"tableLayoutPanel1";
            this->tableLayoutPanel1->RowCount = 1;
            this->tableLayoutPanel1->RowStyles->Add((gcnew System::Windows::Forms::RowStyle(System::Windows::Forms::SizeType::Percent, 50)));
            this->tableLayoutPanel1->Size = System::Drawing::Size(283, 65);
            this->tableLayoutPanel1->TabIndex = 2;
            // 
            // button1
            // 
            this->button1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
                | System::Windows::Forms::AnchorStyles::Left)
                | System::Windows::Forms::AnchorStyles::Right));
            this->button1->Location = System::Drawing::Point(3, 3);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(135, 59);
            this->button1->TabIndex = 0;
            this->button1->Text = L"OK";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &MainForm::button1_Click);
            // 
            // button2
            // 
            this->button2->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)
                | System::Windows::Forms::AnchorStyles::Left)
                | System::Windows::Forms::AnchorStyles::Right));
            this->button2->Location = System::Drawing::Point(144, 3);
            this->button2->Name = L"button2";
            this->button2->Size = System::Drawing::Size(136, 59);
            this->button2->TabIndex = 1;
            this->button2->Text = L"Clear";
            this->button2->UseVisualStyleBackColor = true;
            this->button2->Click += gcnew System::EventHandler(this, &MainForm::button2_Click);
            // 
            // label2
            // 
            this->label2->AutoSize = true;
            this->label2->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 14.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
                static_cast<System::Byte>(204)));
            this->label2->Location = System::Drawing::Point(19, 87);
            this->label2->Name = L"label2";
            this->label2->Size = System::Drawing::Size(60, 24);
            this->label2->TabIndex = 3;
            this->label2->Text = L"label2";
            // 
            // button3
            // 
            this->button3->Location = System::Drawing::Point(23, 264);
            this->button3->Name = L"button3";
            this->button3->Size = System::Drawing::Size(75, 23);
            this->button3->TabIndex = 4;
            this->button3->Text = L"Open";
            this->button3->UseVisualStyleBackColor = true;
            this->button3->Click += gcnew System::EventHandler(this, &MainForm::button3_Click);
            // 
            // MainForm
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(314, 392);
            this->Controls->Add(this->button3);
            this->Controls->Add(this->label2);
            this->Controls->Add(this->tableLayoutPanel1);
            this->Controls->Add(this->textBox1_Fist);
            this->Controls->Add(this->label1);
            this->MinimumSize = System::Drawing::Size(330, 431);
            this->Name = L"MainForm";
            this->Text = L"FirstTestForm";
            this->tableLayoutPanel1->ResumeLayout(false);
            this->ResumeLayout(false);
            this->PerformLayout();
 
        }
#pragma endregion
    private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
        String^ TextTest = this-> textBox1_Fist->Text;
        this->label2->Text = "Вы написали: " + this->textBox1_Fist->Text;
    }
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
    this->textBox1_Fist->Text = "";
    this->label2->Text = "";
}
 
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
    /*
    System::String^ folderName;
    FolderBrowserDialog^ folderBrowserDialog1;
    folderBrowserDialog1 = gcnew System::Windows::Forms::FolderBrowserDialog;
    */
    if (folderBrowserDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
    {
        label2->Text = folderBrowserDialog1->SelectedPath;
    }
}
};
}
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17896 / 13992 / 5345
Регистрация: 17.03.2014
Сообщений: 28,648
Записей в блоге: 1
23.03.2023, 18:18
n1056, атрибут STAThread добавили?
Цитата Сообщение от Lagos Посмотреть сообщение
[STAThread] // данную строку
1
0 / 0 / 1
Регистрация: 17.04.2016
Сообщений: 77
24.03.2023, 11:02
Цитата Сообщение от OwenGlendower Посмотреть сообщение
[STAThread] // данную строку
Да, его не было (параметр потока). Спасибо, помогло.
0
0 / 0 / 1
Регистрация: 17.04.2016
Сообщений: 77
01.06.2023, 14:55
Такой еще вопрос. Можно ли из folderBrowserDialog увидеть файлы и получить путь к выбранному файлу, а не путь к папке? Помню в Delphi, в аналогичном инструменте была такая возможность. А здесь не нахожу этого в folderBrowserDialog.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17896 / 13992 / 5345
Регистрация: 17.03.2014
Сообщений: 28,648
Записей в блоге: 1
01.06.2023, 15:17
n1056, элемент управления не зря называется FolderBrowserDialog. Он только с папками работает. Можно воспользоваться OpenFileDialog или вызвать Windows API функцию SHBrowseForFolder с флагом BIF_BROWSEINCLUDEFILES.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2023, 15:17
Помогаю со студенческими работами здесь

Использование ActiveX компонент табличного ввода
Привет народ. Одна из неудобственных проблем интерфейса нотес - отсутствие динамических таблиц. Имеются ввиду не генеренные в РТ...

Использование компонент ввода-вывода. Работа со строками
Ввести произвольную последовательность символов, предшествующую символу ! и выяснить, есть ли среди них буквы, входящие в слово КУРС и...

Использование стандартных компонент в приложении вычисления функции
Создать приложение с заданным количеством страниц диалога (закладками). 1. Первая страница Вычислить значение функции, условие...

Разработка приложения обработки строк. Использование компонент Memo, ListBox, ComboBox
Помогите пожалуйстa сделать программу в Delphi7. Тема: «Разработка приложения обработки строк. Использование компонент Memo, ListBox,...

Найти компонент по его имени
Как преобразовать строку в тип обьекта, то ли chekbox scrollbox panel, приведите код Добавлено через 13 часов 39 минут Тоесть никто...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
Метод с двумя буферами (или double buffering) или ping-pong buffering
Hrethgir 02.04.2025
Из ответов LM модели. Метод, который предполагает использование двух массивов для хранения промежуточных результатов сложения векторов, обычно применяется в сценариях, где необходимо минимизировать. . .
На любовном киберфронте
Alexander-7 01.04.2025
Недавно на одном малоизвестном сайте знакомств мною заинтересовалась девушка: «Текст немного странный. Но, судя по адресу почты, иностранка», – подумал я. Поколебавшись пару суток, я ответил ей:. . .
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер