Получение строки из TextBox и запись ее в текстовый файл

Sergey1812

Здравствуйте!Работаю в Microsoft Visual Studio 2010. Создан проект Windows Forms - "TestProject". На форме Form1 имеется текстовое поле TextBox1.Требуется присвоить переменной userName значение из TextBox1, а затем записать это значение в текстовый файл.Код Form1.h:
#pragma once
 
extern int userName;
 
namespace TestProject {
 
    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>
    /// Сводка для Form1
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            //
            //TODO: добавьте код конструктора
            //
        }
 
    protected:
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
 
    private: System::Windows::Forms::TextBox^  textBox1;
    protected: 
 
 
    private:
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            this->textBox1 = (gcnew System::Windows::Forms::TextBox());
            this->SuspendLayout();
            // 
            // textBox1
            // 
            this->textBox1->Location = System::Drawing::Point(38, 117);
            this->textBox1->Name = L"textBox1";
            this->textBox1->Size = System::Drawing::Size(214, 20);
            this->textBox1->TabIndex = 1;
            this->textBox1->TextChanged += gcnew System::EventHandler(this, &Form1::textBox1_TextChanged);
            // 
            // Form1
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(284, 262);
            this->Controls->Add(this->textBox1);
            this->Name = L"Form1";
            this->Text = L"Form1";
            this->ResumeLayout(false);
            this->PerformLayout();
 
        }
#pragma endregion
 
    private: System::Void textBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
                 userName = Convert::ToInt16(this->textBox1->Text);
             }
    };
}
Код TestProject.cpp:
// TestProject.cpp: главный файл проекта.
 
#include "stdafx.h"
#include "Form1.h"
 
using namespace TestProject;
using namespace System::IO;
 
int userName;
 
//using namespace System::Runtime::InteropServices;
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    // Включение визуальных эффектов Windows XP до создания каких-либо элементов управления
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 
 
    // Создание главного окна и его запуск
    Application::Run(gcnew Form1());
    
    System::DateTime moment = DateTime::Now;
    String^ fileName = "target " + moment.Hour + "-" + moment.Minute + "-" + moment.Second + " " + moment.Day + "." + moment.Month + "." + moment.Year + ".txt";
    StreamWriter^ sw = gcnew StreamWriter(fileName);
    sw->WriteLine(userName);
    sw->Close();
    
    return 0;
}
Код выше работает с числами integer. Но как его изменить, чтобы передавать текстовую строку - имя пользователя (кириллические и латинские символы)? Заранее благодарю за помощь.
1 ответ

Sergey1812

Sergey1812, метод StreamWriter::WriteLine умеет работать и со строками. Только C++/CLI не даст объявть глобальную переменную типа String^. И это хорошо. Их вообще следует избегать. Перенеси userName в класс Form1 и делай запись в файл в обработчике события FormClosed.