?? mainform.cs
字號:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Printing;
using Custom.Windows.Forms;
namespace CSharpNotepad
{
public partial class mainForm : Form
{
#region 全局變量
public childForm currentForm; //標記當前活動的子窗口
public int count = 0; //記錄打開過的文檔數量
public string newfileType = ".rtf"; //新建立的文檔類型,獲取newfileForm的返回值
public string currentFontFamilyName = null; //記錄當前文本字體
public float currentFontSize = 0.0f; //記錄當前文本字號
public TabPage page;
#endregion
#region 構造函數
public mainForm()
{
InitializeComponent();
}
#endregion
#region 其他方法
public void SetCurrentFont()
{
this.tscbFontFamilyName.Text = this.currentForm.currentFont.Name;
this.tscbFontSize.Text = this.currentForm.currentFont.Size.ToString();
this.tsbBold.Checked = this.currentForm.currentFont.Bold;
this.tsbItalic.Checked = this.currentForm.currentFont.Italic;
this.tsbUnderLine.Checked = this.currentForm.currentFont.Underline;
}
public void SetCurrentAlignment()
{
this.LeftAlign.Checked = false;
this.MiddleAlign.Checked = false;
this.RightAlign.Checked = false;
switch (this.currentForm.currentAlignment)
{
case HorizontalAlignment.Left:
this.LeftAlign.Checked = true;
break;
case HorizontalAlignment.Center:
this.MiddleAlign.Checked = true;
break;
case HorizontalAlignment.Right:
this.RightAlign.Checked = true;
break;
}
}
public void CheckActiveMdiChild()
{
if (this.tabControl1.TabCount == 0 || this.MdiChildren.Length == 0)
{
#region 菜單欄
保存ToolStripMenuItem.Enabled = false;
另存為ToolStripMenuItem.Enabled = false;
打印設置ToolStripMenuItem.Enabled = false;
打印預覽ToolStripMenuItem.Enabled = false;
打印ToolStripMenuItem.Enabled = false;
撤消ToolStripMenuItem.Enabled = false;
恢復ToolStripMenuItem.Enabled = false;
剪切ToolStripMenuItem.Enabled = false;
復制ToolStripMenuItem.Enabled = false;
粘貼ToolStripMenuItem.Enabled = false;
刪除ToolStripMenuItem.Enabled = false;
查找ToolStripMenuItem.Enabled = false;
替換ToolStripMenuItem.Enabled = false;
全選ToolStripMenuItem.Enabled = false;
時間和日期ToolStripMenuItem.Enabled = false;
自動換行AToolStripMenuItem.Enabled = false;
字體ToolStripMenuItem.Enabled = false;
顏色ToolStripMenuItem.Enabled = false;
項目符號樣式ToolStripMenuItem.Enabled = false;
段落ToolStripMenuItem.Enabled = false;
左對齊ToolStripMenuItem.Enabled = false;
居中ToolStripMenuItem.Enabled = false;
右對齊ToolStripMenuItem.Enabled = false;
顯示比例ToolStripMenuItem.Enabled = false;
層疊顯示ToolStripMenuItem.Enabled = false;
水平排列ToolStripMenuItem.Enabled = false;
垂直排列ToolStripMenuItem.Enabled = false;
#endregion
#region 工具欄
保存SToolStripButton.Enabled = false;
打印PToolStripButton.Enabled = false;
打印預覽VToolStripButton.Enabled = false;
剪切UToolStripButton.Enabled = false;
復制CToolStripButton.Enabled = false;
粘貼PToolStripButton.Enabled = false;
撤消UToolStripButton.Enabled = false;
恢復RToolStripButton.Enabled = false;
tscbDisplayRatio.Enabled = false;
#endregion
#region 格式欄
tscbFontFamilyName.Enabled = false;
tscbFontSize.Enabled = false;
tsbBold.Enabled = false;
tsbItalic.Enabled = false;
tsbUnderLine.Enabled = false;
LeftAlign.Enabled = false;
MiddleAlign.Enabled = false;
RightAlign.Enabled = false;
tssbFontColor.Enabled = false;
tsbProject.Enabled = false;
#endregion
return;
}
else
{
#region 菜單欄
保存ToolStripMenuItem.Enabled = true;
另存為ToolStripMenuItem.Enabled = true;
打印設置ToolStripMenuItem.Enabled = true;
打印預覽ToolStripMenuItem.Enabled = true;
打印ToolStripMenuItem.Enabled = true;
撤消ToolStripMenuItem.Enabled = true;
恢復ToolStripMenuItem.Enabled = true;
剪切ToolStripMenuItem.Enabled = true;
復制ToolStripMenuItem.Enabled = true;
粘貼ToolStripMenuItem.Enabled = true;
刪除ToolStripMenuItem.Enabled = true;
查找ToolStripMenuItem.Enabled = true;
替換ToolStripMenuItem.Enabled = true;
全選ToolStripMenuItem.Enabled = true;
時間和日期ToolStripMenuItem.Enabled = true;
自動換行AToolStripMenuItem.Enabled = true;
字體ToolStripMenuItem.Enabled = true;
顏色ToolStripMenuItem.Enabled = true;
項目符號樣式ToolStripMenuItem.Enabled = true;
段落ToolStripMenuItem.Enabled = true;
左對齊ToolStripMenuItem.Enabled = true;
居中ToolStripMenuItem.Enabled = true;
右對齊ToolStripMenuItem.Enabled = true;
顯示比例ToolStripMenuItem.Enabled = true;
層疊顯示ToolStripMenuItem.Enabled = true;
水平排列ToolStripMenuItem.Enabled = true;
垂直排列ToolStripMenuItem.Enabled = true;
#endregion
#region 工具欄
保存SToolStripButton.Enabled = true;
打印PToolStripButton.Enabled = true;
打印預覽VToolStripButton.Enabled = true;
剪切UToolStripButton.Enabled = true;
復制CToolStripButton.Enabled = true;
粘貼PToolStripButton.Enabled = true;
撤消UToolStripButton.Enabled = true;
恢復RToolStripButton.Enabled = true;
tscbDisplayRatio.Enabled = true;
#endregion
#region 格式欄
tscbFontFamilyName.Enabled = true;
tscbFontSize.Enabled = true;
tsbBold.Enabled = true;
tsbItalic.Enabled = true;
tsbUnderLine.Enabled = true;
LeftAlign.Enabled = true;
MiddleAlign.Enabled = true;
RightAlign.Enabled = true;
tssbFontColor.Enabled = true;
tsbProject.Enabled = true;
#endregion
return;
}
}
public int CurrentFormIndexOf()
{ //查詢當前子窗口在MdiChildren中的索引
int i;
for (i = 0; i < this.MdiChildren.Length; ++i)
{
if (this.currentForm == (childForm)this.MdiChildren[i])
break;
}
return i;
}
private void MainForm_Load(object sender, EventArgs e)
{
this.mdiClientController1.AutoScroll = false; //禁用主窗口的滾動條,因為默認的為無效
this.tabControl1.Height = 0;
this.tbCurrentFormClose.Height = 0;
this.CheckActiveMdiChild(); // 設置控件的可見性
this.GetDisplayRatio(); // 獲取顯示比例數據
this.GetFontFamilyNames(); // 獲取字體數據
this.GetFontSize(); // 獲取字號數據
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
int count = this.MdiChildren.Length - 1;
for (int i = count; i >= 0; i--)
{
this.MdiChildren[i].Close();
}
/*
childForm arrChildren = (childForm[])this.MdiChildren;
for (int i = 0; i < MdiChildren.Length; i++)
{
if (arrChildren[i].docHasChanged)
{
string strask = "文件 " + arrChildren[i].fileName +" 的文字已經改變。\n想保存文件嗎?";
DialogResult asksave = MessageBox.Show(strask, "CSharpNotepad", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
if (asksave == DialogResult.Yes)
{
this.currentForm = arrChildren[i];
this.保存ToolStripMenuItem_Click(sender, e);
arrChildren[i].Close();
}
else if (asksave == DialogResult.No)
{
Application.Exit();
}
else if (asksave == DialogResult.Cancel)
{
return;
}
}
else if (!arrChildren[i].docHasChanged)
{
arrChildren[i].Close();
}
}*/
}
private void MainForm_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Insert)
{
string str = this.toolStripStatusInsertOrOver.Text;
this.toolStripStatusInsertOrOver.Text = (str.Equals("插入")) ? "覆蓋" : "插入";
}
}
private void MainForm_MdiChildActivate(object sender, EventArgs e)
{
//獲取當前激活窗口
this.currentForm = (childForm)this.ActiveMdiChild;
if (this.currentForm != null)
{
//comboBox_scale.Text = string.Format("{0:G3}%", currentdoc.richTextBox1.ZoomFactor * 100);//當前窗口的閱讀比例
}
this.tabControl1.SelectedIndex = CurrentFormIndexOf();
}
#endregion
#region TabControl控件
private void tabControl1_SelectedIndexChanged(object sender, System.EventArgs e)
{ //通過單擊tabPage激活子窗口
if (this.tabControl1.SelectedIndex == -1)
return;
this.MdiChildren[this.tabControl1.SelectedIndex].Activate();
}
private void tabControl1_DoubleClick(object sender, System.EventArgs e)
{ //雙擊關閉該文檔
if (this.currentForm != null)
{
this.currentForm.Close();
}
}
public void NewTabPage()
{ //新建文檔時創建一個標簽頁
this.tabControl1.Height = 19;
this.tbCurrentFormClose.Height = 17;
this.page = new TabPage(this.currentForm.Text);
this.page.Parent = this.tabControl1;
}
public void NewTabPage(string FileName)
{ //打開文檔時創建一個標簽頁
this.tabControl1.Height = 19;
this.tbCurrentFormClose.Height = 17;
this.page = new TabPage(this.currentForm.Text);
this.page.Parent = this.tabControl1;
this.page.Text = FileName;
}
private void ReSetTabPageName(int CurrentFormIndexOf, string FileName)
{ //“另存為”后修改標簽頁
tabControl1.SelectedIndex = CurrentFormIndexOf;
tabControl1.SelectedTab.Text = FileName;
}
private void tbCurrentFormClose_Click(object sender, EventArgs e)
{ //單擊關閉按鈕關閉該文檔
if (this.currentForm != null)
{
this.currentForm.Close();
}
}
#endregion
#region 窗體和文本框接受拖進來的數據的事件處理
private void MainForm_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Link;
else
e.Effect = DragDropEffects.None;
}
public void MainForm_DragDrop(object sender, DragEventArgs e)
{
// 創建一個子窗口對象,用來實現打開一個文檔,并設置該子窗口為活動窗口
childForm childForm = new childForm(this);
childForm.filePath = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString(); ;
FileInfo finfo = new FileInfo(childForm.filePath);
childForm.fileName = finfo.Name;
childForm.fileType = finfo.Extension;
childForm.isNewDoc = false;
if (finfo.Extension == ".rtf")
{
childForm.richTextBox1.LoadFile(childForm.filePath, RichTextBoxStreamType.RichText);
childForm.Icon = Properties.Resources.RtfIcon;
}
else if (finfo.Extension == ".txt")
{
childForm.richTextBox1.LoadFile(childForm.filePath, RichTextBoxStreamType.PlainText);
childForm.Icon = Properties.Resources.TxtIcon;
}
else
{
MessageBox.Show("不能打開此格式的文件,請檢查后再試!", "Notepad", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
childForm.Name = childForm.fileName;
childForm.Text = childForm.fileName;
childForm.MdiParent = this;
childForm.Show();
this.currentForm = childForm; //設置當前子窗口為活動窗口
this.NewTabPage(childForm.fileName);//新建標簽頁
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -