Creating A Text Editor In C# And Visual Basic (Part B Coding)
PART B – CODING
SETTING UP REGIONS AND METHODS
We will first setup our coding regions and methods, and there will be a few methods to create. In code view add the following regions and methods (to see code, click View > Code).
#region Methods #region Tabs private void AddTab() { } private void RemoveTab() { } private void RemoveAllTabs() { } private void RemoveAllTabsButThis() { } #endregion #region SaveAndOpen private void Save() { } private void SaveAs() { } private void Open() { } #endregion #endregion
#Region "Methods" #Region "Tabs" Private Sub AddTab() End Sub Private Sub RemoveTab() End Sub Private Sub RemoveAllTabs() End Sub Private Sub RemoveAllTabsButThis() End Sub #End Region #Region "SaveAndOpen" Private Sub Save() End Sub Private Sub SaveAs() End Sub Private Sub Open() End Sub #End Region #End Region
All the methods will remain private since we will not use them outside of the current class. Next create a global variable of data type integer and set the value to 0.
CREATING PROPERTIES
To avoid repetitive code, we will add a property which will provide us with the RichTextBox methods and properties. Below the Region Method add this:
#region Properties private RichTextBox GetCurrentDocument { get { return (RichTextBox)tabControl1.SelectedTab.Controls["Body"]; } } #endregion
#Region "Properties" Private ReadOnly Property GetCurrentDocument() As RichTextBox Get Return CType(TabControl1.SelectedTab.Controls.Item("Body"), RichTextBox) End Get End Property #End Region
The code will simply find the RichTextbox in the selected tab control (we will create the RichTextBox next).
CREATING THE METHODS
AddTab
RichTextBox Body = new RichTextBox(); Body.Name = "Body"; Body.Dock = DockStyle.Fill; Body.ContextMenuStrip = contextMenuStrip1; TabPage NewPage = new TabPage(); TabCount += 1; string DocumentText = "Document " + TabCount; NewPage.Name = DocumentText; NewPage.Text = DocumentText; NewPage.Controls.Add(Body); tabControl1.TabPages.Add(NewPage);
Dim Body As New RichTextBox() Body.Name = "Body" Body.Dock = DockStyle.Fill; Body.ContextMenuStrip = ContextMenuStrip1 Dim NewPage As New TabPage() TabCount += 1 Dim DocumentText As String = "Document " & TabCount NewPage.Name = DocumentText NewPage.Text = DocumentText NewPage.Controls.Add(Body) TabControl1.TabPages.Add(NewPage)
The RichTextBox (from now on called RTB) is added to a new TabPage, and then the TabPage is added to the TabControls TabPages collection. Each time a new TabPage is added we increment TabCount by 1.
RemoveTab
if (tabControl1.TabPages.Count != 1) { tabControl1.TabPages.Remove(tabControl1.SelectedTab); } else { tabControl1.TabPages.Remove(tabControl1.SelectedTab); AddTab(); }
If Not TabControl1.TabPages.Count = 1 Then TabControl1.TabPages.Remove(TabControl1.SelectedTab) Else TabControl1.TabPages.Remove(TabControl1.SelectedTab) AddTab() End If
Here we check the amount of tabs in the TabControl. If it’s 1 then we remove the current tab and add another; otherwise remove the tab.
RemoveAllTabs
foreach (TabPage Page in tabControl1.TabPages) { tabControl1.TabPages.Remove(Page); } AddTab();
For Each Page As TabPage In TabControl1.TabPages TabControl1.TabPages.Remove(Page) Next AddTab()
RemoveAllTabsButThis
foreach (TabPage Page in tabControl1.TabPages) { if (Page.Name != tabControl1.SelectedTab.Name) { tabControl1.TabPages.Remove(Page); } }
For Each Page As TabPage In TabControl1.TabPages If Not Page.Name = TabControl1.SelectedTab.Name Then TabControl1.TabPages.Remove(Page) End If Next
Similar to the above, this time we have an If Statement to check if the TabPage name is not equal to the selected TabPage and remove them all.
Save
saveFileDialog1.FileName = tabControl1.SelectedTab.Name; saveFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); saveFileDialog1.Filter = "RTF|*.rtf"; saveFileDialog1.Title = "Save"; if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (saveFileDialog1.FileName.Length > 0) { GetCurrentDocument.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.RichText); } }
SaveFileDialog1.FileName = TabControl1.SelectedTab.Name SaveFileDialog1.Filter = "RTF|*.rtf" SaveFileDialog1.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments SaveFileDialog1.Title = "Save" If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then If SaveFileDialog1.FileName.Length > 0 Then GetCurrentDocument.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.RichText) End If End If
Firstly we set the saveFileDialog properties and then show it; if it’s OK (the user has clicked OK), the code inside the If Statement executes and saves the file.
Save As
saveFileDialog1.FileName = tabControl1.SelectedTab.Name; saveFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); saveFileDialog1.Filter = "Text Files|*.txt|VB Files|*.vb|C# Files|*.cs|All Files|*.*"; saveFileDialog1.Title = "Save As"; if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (saveFileDialog1.FileName.Length > 0) { GetCurrentDocument.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText); } }
SaveFileDialog1.FileName = TabControl1.SelectedTab.Name SaveFileDialog1.Filter = "Text Files|*.txt|VB Files|*.vb|C# Files|*.cs|All Files|*.*" SaveFileDialog1.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments SaveFileDialog1.Title = "Save As" If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then If SaveFileDialog1.FileName.Length > 0 Then GetCurrentDocument.SaveFile(SaveFileDialog1.FileName, RichTextBoxStreamType.PlainText) End If End If
This is similar to the above code except we have changed filter and stream type.
Open
openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); openFileDialog1.Filter = "RTF|*.rtf|Text Files|*.txt|VB Files|*.vb|C# Files|*.cs|All Files|*.*"; if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { if (openFileDialog1.FileName.Length > 9) { GetCurrentDocument.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText); } }
OpenFileDialog1.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments OpenFileDialog1.Filter = "RTF|*.rtf|Text Files|*.txt|VB Files|*.vb|C# Files|*.cs|All Files|*.*" If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then If OpenFileDialog1.FileName.Length > 0 Then GetCurrentDocument.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.PlainText) End If
This is similar to the Save and SaveAs methods, but in reverse.
[ Continue ]