Visual C++ .NET/GUI Form/RichTextBox
Rich Text area demo
<source lang="csharp">
using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); BuildLabels(); } private: System::Windows::Forms::RichTextBox^ rtBox; array<System::Windows::Forms::Label^>^ labels; void InitializeComponent(void) { this->rtBox = (gcnew System::Windows::Forms::RichTextBox()); this->SuspendLayout(); // // rtBox // this->rtBox->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->rtBox->Location = System::Drawing::Point(0, 32); this->rtBox->Name = L"rtBox"; this->rtBox->RightMargin = 900; this->rtBox->ScrollBars = System::Windows::Forms::RichTextBoxScrollBars::ForcedVertical; this->rtBox->ShowSelectionMargin = true; this->rtBox->Size = System::Drawing::Size(950, 488); this->rtBox->TabIndex = 1; this->rtBox->Text = L""; this->rtBox->KeyDown += gcnew System::Windows::Forms::KeyEventHandler(this, &Form1::rtBox_KeyDown); // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(950, 520); this->Controls->Add(this->rtBox); this->Name = L"Form1"; this->Text = L"(Very Simple Rich Text Editor)"; this->ResumeLayout(false); } void BuildLabels() { array<String^>^ rtLabel = gcnew array<String^> { L"F1-Bold", L"F2-Italics", L"F3-Underline", L"F4-Normal", L"F5-Red", L"F6-Blue", L"F7-Green", L"F8-Black", L"F9-Load", L"F10-Save" }; labels = gcnew array<System::Windows::Forms::Label^>(10);
// Build the labels for (int i = 0; i < labels->Length; i++) { labels[i] = gcnew Label(); labels[i]->BackColor = SystemColors::ControlDark; labels[i]->BorderStyle = BorderStyle::FixedSingle; labels[i]->Location = Drawing::Point(5+(95*i), 8); labels[i]->Size = Drawing::Size(85, 16); labels[i]->Text = rtLabel[i]; labels[i]->TextAlign = ContentAlignment::MiddleCenter; } // Place labels on the Form Controls->AddRange(labels); } System::Void rtBox_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) { try { if (rtBox->SelectionLength > 0) { // Change selected text style FontStyle fs; switch (e->KeyCode) { case Keys::F1: fs = FontStyle::Bold; break; case Keys::F2: fs = FontStyle::Italic; break; case Keys::F3: fs = FontStyle::Underline; break; case Keys::F4: fs = FontStyle::Regular; break; // Change selected text color case Keys::F5: rtBox->SelectionColor = Color::Red; break; case Keys::F6: rtBox->SelectionColor = Color::Blue; break; case Keys::F7: rtBox->SelectionColor = Color::Green; break; case Keys::F8: rtBox->SelectionColor = Color::Black; break; } // Do the actual change of the selected text style if (e->KeyCode >= Keys::F1 && e->KeyCode <= Keys::F4) { rtBox->SelectionFont = gcnew Drawing::Font( rtBox->SelectionFont->FontFamily, rtBox->SelectionFont->Size, fs ); } } // Load hard coded Chapter01.rtf file else if (e->KeyCode == Keys::F9) { rtBox->LoadFile("Chapter01.rtf"); } // Save hard coded Chapter01.rtf file else if (e->KeyCode == Keys::F10) { rtBox->SaveFile("Chapter01.rtf", RichTextBoxStreamType::RichText); } } // Capture any blowups catch (Exception ^e) { MessageBox::Show(String::Format("Error: {0}", e->Message)); } } };
[STAThreadAttribute] int main(array<System::String ^> ^args) {
Application::Run(gcnew Form1()); return 0;
}
</source>