private void ultraToolbarsManager1_ToolClick(object sender,
Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
{
// どのツールがクリックされたかを調べます。
switch (e.Tool.Key)
{
case "New":
{
// New ツールのイメージとタグを変更して、最後に選択された項目が
// RTF ドキュメントだったことを示します。
this.ultraToolbarsManager1.Tools["New"].SharedProps.AppearancesSmall.Appearance.Image =
e.Tool.SharedProps.AppearancesSmall.Appearance.Image;
this.ultraToolbarsManager1.Tools["New"].SharedProps.Tag = "New RTF Document";
// 新しい RTF ドキュメントを作成します。
NewRTFDocument();
break;
}
case "MRUList":
{
// ユーザーが MRU リスト ツールの項目をクリックしました。
Infragistics.Win.UltraWinToolbars.ListTool aListTool;
Infragistics.Win.UltraWinToolbars.ListToolItem aListToolItem;
// e.Tool(これは ToolBase)も List にキャストし、ツール固有のプロパティに
// アクセスできるようにします。
aListTool = (Infragistics.Win.UltraWinToolbars.ListTool)e.Tool;
// クリックされた ListToolItem を取得します。
aListToolItem = aListTool.SelectedItem;
// ListToolItem に基づいて文書を開きます。
// ListToolItem の Key は、ロードするドキュメントのファイル名です。
OpenDocument(aListToolItem.Key);
break;
}
}
}
private void NewRTFDocument()
{
frmRTFDocument frm = new frmRTFDocument();
LastDocumentNumber += 1;
frm.MdiParent = this;
frm.Text = "New RTF Document " + LastDocumentNumber;
frm.Show();
}
private void OpenDocument(string FileName)
{
Open(FileName, false);
}
private void Open(string FileName, bool PromptToReOpen)
{
Form ExistingChildForm;
ExistingChildForm = GetExistingChildForm(FileName);
if (!(ExistingChildForm == null))
{
DialogResult dlResult;
if (PromptToReOpen)
{
dlResult = MessageBox.Show("This file is already open. Do you want to reload it?",
"Confirm?", MessageBoxButtons.YesNo, MessageBoxIcon.Question );
if (dlResult == DialogResult.Yes)
{
ExistingChildForm.Close();
}
else
{
return;
}
}
else
{
ExistingChildForm.Focus();
return;
}
}
System.IO.FileInfo File;
File = new System.IO.FileInfo(FileName);
switch (File.Extension.ToLower())
{
case ".rtf":
frmRTFDocument frmRTF = new frmRTFDocument();
frmRTF.MdiParent = this;
frmRTF.Text = FileName;
frmRTF.richTextBox1.LoadFile(FileName);
frmRTF.HasFileName = true;
frmRTF.Show();
break;
}
}
// ドキュメントのファイル名に基づき既存のフォームの取得を試みます。
// これは同じドキュメントを 2 度開くことを防止するために使用されます。
private Form GetExistingChildForm(string FileName)
{
foreach (Form ChildForm in this.MdiChildren)
{
if (ChildForm.Text == FileName)
{
return ChildForm;
}
}
return null;
}
private void AddanMRUListtoaMenu_Load(object sender, System.EventArgs e)
{
// 最後に保存されたツールバー レイアウトをロードします。
LoadToolbarLayout();
}
private void AddanMRUListtoaMenu_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
// ツールバー レイアウトを保存します。
SaveToolbarLayout();
}
private void LoadToolbarLayout()
{
System.IO.FileStream fs = null;
if (!System.IO.File.Exists(GetAppPath() + "\\ToolbarLayout.dat"))
return;
try
{
fs = new System.IO.FileStream(GetAppPath() + "\\ToolbarLayoutMRU.dat", System.IO.FileMode.Open);
fs.Seek(0, System.IO.SeekOrigin.Begin);
this.ultraToolbarsManager1.LoadFromBinary(fs);
}
finally
{
if (!(fs == null))
{
fs.Close();
}
}
}
private string GetAppPath()
{
System.IO.DirectoryInfo f = new System.IO.DirectoryInfo(Application.ExecutablePath);
return f.Parent.FullName;
}
private void SaveToolbarLayout()
{
System.IO.FileStream fs = new System.IO.FileStream(GetAppPath() + "\\ToolbarLayoutMRU.dat",
System.IO.FileMode.OpenOrCreate);
fs.Seek(0, System.IO.SeekOrigin.Begin);
this.ultraToolbarsManager1.SaveAsBinary(fs, true);
fs.Close();
}