public TabPage AddTab(string filename, bool readOnly) { filename = new FileInfo(filename).FullName; //already opened? TabPage buffer = GetTab(filename); if (buffer != null) { p_Tabs.SelectedTab = buffer; return buffer; } //create the text editor TextEditor editor = new TextEditor(filename) { Dock = DockStyle.Fill }; if (readOnly) { editor.ToggleReadOnly(); } else { editor.Modified += delegate(object sender, EventArgs e) { TextEditor inst = (TextEditor)sender; TabPage p = (TabPage)inst.Parent; if (!p.Text.EndsWith("*")) { p.Text += " *"; } }; } //create the tab buffer = new TabPage() { Text = new FileInfo(filename).Name, Tag = filename, BorderStyle = BorderStyle.None }; buffer.Controls.Add(editor); //are we in read-only mode? if (p_ReadOnlyMode) { Helpers.AddObject(ref p_PreviousReadOnlyState, readOnly); editor.ReadOnly = true; } //clean up p_Tabs.Visible = true; p_Tabs.TabPages.Add(buffer); p_Tabs.SelectedTab = buffer; saveState(); return buffer; }