Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 12.05.2017
Сообщений: 33
1

Передать данные RichTextBox с одной формы в другую

01.06.2018, 09:42. Показов 1568. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть две формы, MyForm и SaveDialog, в MyForm находиться richtextbox, в SaveDialog кнопки - Yes, No
как передать то что находиться в richtextbox если я хочу написать функцию для обработчиков кнопок


Форма SaveDialog
C++
1
2
3
4
5
6
7
8
9
10
11
12
void saveChanges()
        {
            SaveFileDialog^ saveFile1 = gcnew SaveFileDialog;
            saveFile1->DefaultExt = "*.doc";
            saveFile1->Filter = "doc Files|*.doc";
            if (saveFile1->ShowDialog() == System::Windows::Forms::DialogResult::OK &&
                saveFile1->FileName->Length > 0)
            {
                //пишет что richtextbox не определен
richTextBox1->SaveFile(saveFile1->FileName, RichTextBoxStreamType::RichText);
            }
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2018, 09:42
Ответы с готовыми решениями:

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

Как передать данные из одной формы в другую
Проблема со следующим примером из этой темы: Form1 main = this.Owner as Form1; if(main != null)...

Как из одной формы передать данные в другую?
Всем привет! Нужна помощь! Ситуация такая, внутри одной программы, есть две формы Form1 и Form2. На...

Передать данные из одной формы в другую
форма 1 public partial class Form1 : Form { public Form1() { ...

23
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
01.06.2018, 15:34 2
Yan Chenrysh, тут возможны варианты.

1) Пускай SaveDialog возвращает путь для сохранения в форму откуда он вызван. Тогда проблем с доступом просто не возникнет.

2) Передать в SaveDialog ссылку на richTextBox1. Например через конструктор.
0
0 / 0 / 0
Регистрация: 12.05.2017
Сообщений: 33
03.06.2018, 12:11  [ТС] 3
Как правильно передавать ссылку в конструктор?
Делал так как на фото, но у меня ошибка что "MyForm::RichTextBox1 не доступно.
Там еще сказано что нужно вносить методы в cpp файлы, я так и не понял какие.
Вот ссылка на источник Ответы на 7 самых частых вопросов по Windows Forms, C++/CLI Edition
Миниатюры
Передать данные RichTextBox с одной формы в другую  
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
03.06.2018, 14:18 4
Yan Chenrysh, измени модифкатор доступа для RichTextBox1 на public
0
0 / 0 / 0
Регистрация: 12.05.2017
Сообщений: 33
03.06.2018, 14:27  [ТС] 5
Все сделал и меня куча ошибок
C++
1
2
3
4
5
6
7
8
9
public: 
        SaveDialog(MyForm^ f1)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
            richTextBox2->Text = f1->richTextBox1->Text;
        }
C++
1
2
3
4
5
6
7
private: System::Void createToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
        if (richTextBox1->Text != "")
        {
            SaveDialog^ f = gcnew SaveDialog(this);
            f->ShowDialog();
        }
    }
Миниатюры
Передать данные RichTextBox с одной формы в другую  
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
03.06.2018, 15:59 6
Yan Chenrysh, меня смущает ошибка "Возможно, неправильные параметры функции main. Рекомендуемый вариант - "int main(Platform::Array<Platform::String^>^ argv)""
Такие названия типов характерны для WinRT. Какой проект вы создали? Обратите внимание, что проекты C++/CLI Windows Forms в последних версиях студии недоступны и их нужно создавать вручную: Создание графического приложения (Windows Forms) в Visual Studio
0
0 / 0 / 0
Регистрация: 12.05.2017
Сообщений: 33
03.06.2018, 16:38  [ТС] 7
Я создал пустой проект CLR, и в него уже добавил UI Windows Forms. Несколько проектов делал так и все нормально работает.

Добавлено через 10 минут
У меня есть текстовый редактор (2 формы), на главной форме есть richTextBox и меню с пунктом "Создать новый файл", при нажатии на который открывается вторая форма с кнопками "да" "нет" "отмена" как сделать так что бы при нажатии на "да" текст с первой формы сохранялся в файл, и при нажатии на "нет" текст с первой формы удалялся?
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
03.06.2018, 16:43 8
Yan Chenrysh, приведите весь код из данного файла. Думаю, где-то выше есть синтаксическая или другая мелкая ошибка.
0
0 / 0 / 0
Регистрация: 12.05.2017
Сообщений: 33
03.06.2018, 17:37  [ТС] 9
tezaurismosis,
Сейчас сделаю

Добавлено через 5 минут
tezaurismosis,
Вот
MyForm.h
224 строка вызываю вторую форму
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
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
#pragma once
#include "SaveDialog.h"
 
namespace edtr3 {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
 
    /// <summary>
    /// Сводка для MyForm
    /// </summary>
    public ref class MyForm : public System::Windows::Forms::Form
    {
    public:
        MyForm(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~MyForm()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::MenuStrip^  menuStrip1;
    protected:
    private: System::Windows::Forms::ToolStripMenuItem^  menuToolStripMenuItem;
    private: System::Windows::Forms::ToolStripMenuItem^  createToolStripMenuItem;
    private: System::Windows::Forms::ToolStripMenuItem^  openToolStripMenuItem;
    private: System::Windows::Forms::ToolStripMenuItem^  saveToolStripMenuItem;
    private: System::Windows::Forms::ToolStripMenuItem^  saveAsToolStripMenuItem;
    private: System::Windows::Forms::ToolStripMenuItem^  colorToolStripMenuItem;
    private: System::Windows::Forms::ToolStripMenuItem^  fontToolStripMenuItem;
    public: System::Windows::Forms::RichTextBox^  richTextBox1;
    private: System::Windows::Forms::OpenFileDialog^  openFileDialog1;
    private: System::Windows::Forms::SaveFileDialog^  saveFileDialog1;
    private: System::Windows::Forms::FontDialog^  fontDialog1;
    private: System::Windows::Forms::ColorDialog^  colorDialog1;
 
    private:
        /// <summary>
        /// Обязательная переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Требуемый метод для поддержки конструктора — не изменяйте 
        /// содержимое этого метода с помощью редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            this->menuStrip1 = (gcnew System::Windows::Forms::MenuStrip());
            this->menuToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
            this->createToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
            this->openToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
            this->saveToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
            this->saveAsToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
            this->colorToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
            this->fontToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
            this->richTextBox1 = (gcnew System::Windows::Forms::RichTextBox());
            this->openFileDialog1 = (gcnew System::Windows::Forms::OpenFileDialog());
            this->saveFileDialog1 = (gcnew System::Windows::Forms::SaveFileDialog());
            this->fontDialog1 = (gcnew System::Windows::Forms::FontDialog());
            this->colorDialog1 = (gcnew System::Windows::Forms::ColorDialog());
            this->menuStrip1->SuspendLayout();
            this->SuspendLayout();
            // 
            // menuStrip1
            // 
            this->menuStrip1->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^  >(3) {
                this->menuToolStripMenuItem,
                    this->colorToolStripMenuItem, this->fontToolStripMenuItem
            });
            this->menuStrip1->Location = System::Drawing::Point(0, 0);
            this->menuStrip1->Name = L"menuStrip1";
            this->menuStrip1->Size = System::Drawing::Size(427, 24);
            this->menuStrip1->TabIndex = 0;
            this->menuStrip1->Text = L"menuStrip1";
            // 
            // menuToolStripMenuItem
            // 
            this->menuToolStripMenuItem->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^  >(4) {
                this->createToolStripMenuItem,
                    this->openToolStripMenuItem, this->saveToolStripMenuItem, this->saveAsToolStripMenuItem
            });
            this->menuToolStripMenuItem->Name = L"menuToolStripMenuItem";
            this->menuToolStripMenuItem->Size = System::Drawing::Size(50, 20);
            this->menuToolStripMenuItem->Text = L"Menu";
            // 
            // createToolStripMenuItem
            // 
            this->createToolStripMenuItem->Name = L"createToolStripMenuItem";
            this->createToolStripMenuItem->Size = System::Drawing::Size(180, 22);
            this->createToolStripMenuItem->Text = L"Create";
            this->createToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::createToolStripMenuItem_Click);
            // 
            // openToolStripMenuItem
            // 
            this->openToolStripMenuItem->Name = L"openToolStripMenuItem";
            this->openToolStripMenuItem->Size = System::Drawing::Size(180, 22);
            this->openToolStripMenuItem->Text = L"Open";
            this->openToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::openToolStripMenuItem_Click);
            // 
            // saveToolStripMenuItem
            // 
            this->saveToolStripMenuItem->Name = L"saveToolStripMenuItem";
            this->saveToolStripMenuItem->Size = System::Drawing::Size(180, 22);
            this->saveToolStripMenuItem->Text = L"Save file";
            this->saveToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::saveToolStripMenuItem_Click);
            // 
            // saveAsToolStripMenuItem
            // 
            this->saveAsToolStripMenuItem->Name = L"saveAsToolStripMenuItem";
            this->saveAsToolStripMenuItem->Size = System::Drawing::Size(180, 22);
            this->saveAsToolStripMenuItem->Text = L"Save file as";
            this->saveAsToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::saveAsToolStripMenuItem_Click);
            // 
            // colorToolStripMenuItem
            // 
            this->colorToolStripMenuItem->Name = L"colorToolStripMenuItem";
            this->colorToolStripMenuItem->Size = System::Drawing::Size(48, 20);
            this->colorToolStripMenuItem->Text = L"Color";
            this->colorToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::colorToolStripMenuItem_Click);
            // 
            // fontToolStripMenuItem
            // 
            this->fontToolStripMenuItem->Name = L"fontToolStripMenuItem";
            this->fontToolStripMenuItem->Size = System::Drawing::Size(43, 20);
            this->fontToolStripMenuItem->Text = L"Font";
            this->fontToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::fontToolStripMenuItem_Click);
            // 
            // richTextBox1
            // 
            this->richTextBox1->Dock = System::Windows::Forms::DockStyle::Fill;
            this->richTextBox1->Location = System::Drawing::Point(0, 24);
            this->richTextBox1->Name = L"richTextBox1";
            this->richTextBox1->Size = System::Drawing::Size(427, 289);
            this->richTextBox1->TabIndex = 1;
            this->richTextBox1->Text = L"";
            // 
            // openFileDialog1
            // 
            this->openFileDialog1->FileName = L"openFileDialog1";
            // 
            // MyForm
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(427, 313);
            this->Controls->Add(this->richTextBox1);
            this->Controls->Add(this->menuStrip1);
            this->MainMenuStrip = this->menuStrip1;
            this->Name = L"MyForm";
            this->Text = L"Text Editor";
            this->menuStrip1->ResumeLayout(false);
            this->menuStrip1->PerformLayout();
            this->ResumeLayout(false);
            this->PerformLayout();
 
        }
 
 
#pragma endregion
    private: System::Void openToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
        if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
        {
            richTextBox1->LoadFile(openFileDialog1->FileName, RichTextBoxStreamType::RichText);
        }
    }
 
    private: System::Void saveToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
            SaveFileDialog^ saveFile1 = gcnew SaveFileDialog;
            saveFile1->DefaultExt = "*.doc";
            saveFile1->Filter = "doc Files|*.doc";
            if (saveFile1->ShowDialog() == System::Windows::Forms::DialogResult::OK &&
                saveFile1->FileName->Length > 0)
            {
                richTextBox1->SaveFile(saveFile1->FileName, RichTextBoxStreamType::RichText);
            }
    }
 
    private: System::Void fontToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
        if (fontDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
        {
            richTextBox1->Font = fontDialog1->Font;
        }
    }
 
    private: System::Void colorToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
        if (colorDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
        { 
            int startRange = richTextBox1->SelectionStart;
            int lenghtRange = richTextBox1->SelectionLength;
            richTextBox1->SelectionColor = colorDialog1->Color; 
        }
    }
 
    private: System::Void saveAsToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
        SaveFileDialog^ saveFile1 = gcnew SaveFileDialog;
        saveFile1->DefaultExt = "*.rtf";
        saveFile1->Filter = "RTF Files|*.rtf";
        if (saveFile1->ShowDialog() == System::Windows::Forms::DialogResult::OK &&
            saveFile1->FileName->Length > 0)
        {
            richTextBox1->SaveFile(saveFile1->FileName, RichTextBoxStreamType::RichText);
        }
    }
 
    private: System::Void createToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
        if (richTextBox1->Text != "")
        {
            SaveDialog^ f = gcnew SaveDialog(this);
            f->ShowDialog();
        }
    }
 
    private: System::Void MyForm_FormClosing(System::Object^  sender, System::EventArgs^  e){
    }
};
}
SaveDialog.h
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
#pragma once
#include <string>
namespace edtr3 {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    /// <summary>
    /// Сводка для SaveDialog
    /// </summary>
    public ref class SaveDialog : public System::Windows::Forms::Form
    {
    public: 
        SaveDialog(MyForm^ f1)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
            richTextBox2->Text = f1->richTextBox1->Text;
        }
 
 
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~SaveDialog()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Label^  label1;
    private: System::Windows::Forms::Button^  button1;
    private: System::Windows::Forms::Button^  button2;
    private: System::Windows::Forms::Button^  button3;
    private: System::Windows::Forms::SaveFileDialog^  saveFileDialog1;
    public: System::Windows::Forms::RichTextBox^  richTextBox2;
 
    protected:
 
    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->button1 = (gcnew System::Windows::Forms::Button());
            this->button2 = (gcnew System::Windows::Forms::Button());
            this->button3 = (gcnew System::Windows::Forms::Button());
            this->saveFileDialog1 = (gcnew System::Windows::Forms::SaveFileDialog());
            this->richTextBox2 = (gcnew System::Windows::Forms::RichTextBox());
            this->SuspendLayout();
            // 
            // label1
            // 
            this->label1->AutoSize = true;
            this->label1->Font = (gcnew System::Drawing::Font(L"Tahoma", 9.75F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
                static_cast<System::Byte>(204)));
            this->label1->Location = System::Drawing::Point(65, 32);
            this->label1->Name = L"label1";
            this->label1->Size = System::Drawing::Size(129, 16);
            this->label1->TabIndex = 0;
            this->label1->Text = L"Save changes to file\?";
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(12, 75);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(75, 23);
            this->button1->TabIndex = 1;
            this->button1->Text = L"Yes";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &SaveDialog::button1_Click);
            // 
            // button2
            // 
            this->button2->Location = System::Drawing::Point(93, 75);
            this->button2->Name = L"button2";
            this->button2->Size = System::Drawing::Size(75, 23);
            this->button2->TabIndex = 2;
            this->button2->Text = L"No";
            this->button2->UseVisualStyleBackColor = true;
            this->button2->Click += gcnew System::EventHandler(this, &SaveDialog::button2_Click);
            // 
            // button3
            // 
            this->button3->Location = System::Drawing::Point(174, 75);
            this->button3->Name = L"button3";
            this->button3->Size = System::Drawing::Size(75, 23);
            this->button3->TabIndex = 3;
            this->button3->Text = L"Cancel";
            this->button3->UseVisualStyleBackColor = true;
            this->button3->Click += gcnew System::EventHandler(this, &SaveDialog::button3_Click);
            // 
            // richTextBox2
            // 
            this->richTextBox2->Location = System::Drawing::Point(0, -2);
            this->richTextBox2->Name = L"richTextBox2";
            this->richTextBox2->Size = System::Drawing::Size(262, 31);
            this->richTextBox2->TabIndex = 4;
            this->richTextBox2->Text = L"";
            // 
            // SaveDialog
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(262, 130);
            this->ControlBox = false;
            this->Controls->Add(this->richTextBox2);
            this->Controls->Add(this->button3);
            this->Controls->Add(this->button2);
            this->Controls->Add(this->button1);
            this->Controls->Add(this->label1);
            this->Name = L"SaveDialog";
            this->Text = L"SaveDialog";
            this->Load += gcnew System::EventHandler(this, &SaveDialog::SaveDialog_Load);
            this->ResumeLayout(false);
            this->PerformLayout();
 
        }
        
        
 
#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
        SaveFileDialog^ saveFile2 = gcnew SaveFileDialog;
        saveFile2->DefaultExt = "*.doc";
        saveFile2->Filter = "doc Files|*.doc";
        if (saveFile2->ShowDialog() == System::Windows::Forms::DialogResult::OK &&
            saveFile2->FileName->Length > 0)
        {
            richTextBox2->SaveFile(saveFile2->FileName, RichTextBoxStreamType::RichText);
        }
        Close();
    }
    private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
 
    }
 
    private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) {
        Close();
    }
 
    private: System::Void SaveDialog_Load(System::Object^  sender, System::EventArgs^  e) {
    }
};
}
MyForm.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "MyForm.h"
 
using namespace System;
using namespace System::Windows::Forms;
[STAThread]
void main(array<String^>^args)
{
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);
    edtr3::MyForm form;
    Application::Run(%form);
}
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
03.06.2018, 18:03 10
В файле SaveDialog.h класс MyForm не виден. Лучше передайте в конструктор сам RichTextBox
0
0 / 0 / 0
Регистрация: 12.05.2017
Сообщений: 33
03.06.2018, 18:22  [ТС] 11
tezaurismosis, ну я сделал а как мне теперь с второй формы обращаться к первой?
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
03.06.2018, 18:27 12
Хотя проще будет передавать даже не RichTextBox, а строку
SaveDialog.h
C++
1
2
3
4
5
SaveDialog(String^ text)
{
    InitializeComponent();
    richTextBox2->Text = text;
}
MyForm.h
C++
1
2
3
4
5
6
7
private: System::Void createToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
    if (richTextBox1->Text != "")
    {
        SaveDialog^ f = gcnew SaveDialog(richTextBox1->Text);
        f->ShowDialog();
    }
}
0
0 / 0 / 0
Регистрация: 12.05.2017
Сообщений: 33
03.06.2018, 18:29  [ТС] 13
tezaurismosis, хорошо, а как теперь с второй формы обратить к richtextbox первой, и как сохранить исходное форматирование при передаче?
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
03.06.2018, 18:31 14
Yan Chenrysh, если это нужно, тогда передаём RichTextBox
SaveDialog.h
C++
1
2
3
4
5
SaveDialog(RichTextBox^ rtb)
{
    InitializeComponent();
    richTextBox2->Text = rtb->Text;
}
MyForm.h
C++
1
2
3
4
5
6
7
private: System::Void createToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
    if (richTextBox1->Text != "")
    {
        SaveDialog^ f = gcnew SaveDialog(richTextBox1);
        f->ShowDialog();
    }
}
0
0 / 0 / 0
Регистрация: 12.05.2017
Сообщений: 33
03.06.2018, 18:37  [ТС] 15
tezaurismosis, не знаю как обратиться к richTextBox первой формы
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
03.06.2018, 18:49 16
Цитата Сообщение от Yan Chenrysh Посмотреть сообщение
Там еще сказано что нужно вносить методы в cpp файлы, я так и не понял какие.
Всё, теперь понял. В .cpp-файлы нужно вынести методы, которые обращаются к другой форме.
В вашем коде из MyForm.h нужно вынести createToolStripMenuItem_Click()
Из SaveDialog.h - конструктор (SaveDialog())
1
0 / 0 / 0
Регистрация: 12.05.2017
Сообщений: 33
03.06.2018, 18:50  [ТС] 17
спасибо, а всё остальное так и оставляем?
0
0 / 0 / 0
Регистрация: 12.05.2017
Сообщений: 33
03.06.2018, 18:57  [ТС] 18
tezaurismosis, и опять ошибки, как вообще правильно переносить конструктор?
Миниатюры
Передать данные RichTextBox с одной формы в другую   Передать данные RichTextBox с одной формы в другую  
0
Администратор
Эксперт .NET
9602 / 4744 / 761
Регистрация: 17.04.2012
Сообщений: 9,592
Записей в блоге: 14
03.06.2018, 19:03 19
Yan Chenrysh, смотрите пример в закреплённой теме, на которую вы ссылались
Про первую картинку - если реализация метода отделена от его определения, нужно указывать имя класса:
C++
1
SaveDialog::SaveDialog(RichTextBox^ rtb)
На второй картинке вы вынесли метод не в тот .cpp-файл. В файл с main() ничего выносить не нужно.
1
0 / 0 / 0
Регистрация: 12.05.2017
Сообщений: 33
03.06.2018, 19:39  [ТС] 20
tezaurismosis,
Вот я создал метод для обработчика
C++
1
2
3
4
private: 
        System::Void createToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
    
    }
вот cpp файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "MyForm.h"
#include "SaveDialog.h"
 
namespace edtr3{
 
 System::Void createToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
     if (richTextBox1->Text != "")
     {
         SaveDialog^ f = gcnew SaveDialog(richTextBox1);
         f->ShowDialog();
     }
}
а на richTextBox1 пишет что не определен
0
03.06.2018, 19:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2018, 19:39
Помогаю со студенческими работами здесь

Передать данные с одной формы в другую
Есть две формы нужно чтоб при нажатии кнопки в другой форме изменилось название label1. Но в первой...

Передать данные из одной формы в другую
Надо передать данные из одной формы в другую.Использую свойство &quot;родитель&quot; и что-то не работает.....

Передать данные из одной формы в другую
Есть 2 формы, при запуске открывается 1 форма, на ней есть кнопка, по нажатию на эту кнопку из 2-й...

Передать данные из одной формы в другую
Доброй ночи(у меня) и доброго времени суток всем. Столкнулся с проблемой, что не могу передать...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru