实例介绍
【实例截图】
【核心代码】
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace LitCAD.Windows
{
public partial class MainWin : Form
{
private MainWin()
{
InitializeComponent();
SetupToolStripUI();
string[] args = Environment.GetCommandLineArgs();
if (args.Length == 2)
{
OpenFile(args[1]);
}
else
{
NewFile();
}
Application.Idle = this.OnIdle;
}
/// <summary>
/// 单例
/// </summary>
private static MainWin _instance = null;
public static MainWin Instance
{
get
{
if (_instance == null)
{
_instance = new MainWin();
}
return _instance;
}
}
private ToolStripMgr _toolStripMgr = new ToolStripMgr();
/// <summary>
/// 设置菜单、工具条、状态条
/// </summary>
private void SetupToolStripUI()
{
// 主菜单
MenuStrip menuMain = SetupMainMenu();
this.MainMenuStrip = menuMain;
// 工具条
List<ToolStrip> toolStripList = SetupToolbar();
// Top Panel
ToolStripPanel topPanel = _toolStripMgr.GetToolStripPanle(DockStyle.Top, true);
this.Controls.Add(topPanel);
// 将主菜单和工具条添加到 Top Panel
for (int i = toolStripList.Count - 1; i >= 0; --i)
{
topPanel.Join(toolStripList[i]);
}
topPanel.Join(menuMain);
}
/// <summary>
/// 设置主菜单
/// </summary>
private MenuStrip SetupMainMenu()
{
MenuStrip menuMain = _toolStripMgr.GetMenuStrip("Main", true);
SetupMainMenu_File(menuMain);
return menuMain;
}
/// <summary>
/// 文件菜单
/// </summary>
private void SetupMainMenu_File(MenuStrip menuMain)
{
ToolStripMenuItem menuFile = new ToolStripMenuItem();
menuFile.Text = "文件";
menuMain.Items.Add(menuFile);
// 新建
ToolStripMenuItem _new = _toolStripMgr.NewMenuItem(
"file_new",
"新建...",
Resource1.file_new.ToBitmap(),
this.OnFileNew);
menuFile.DropDownItems.Add(_new);
// 打开
ToolStripMenuItem open = _toolStripMgr.NewMenuItem(
"file_open",
"打开...",
Resource1.file_open.ToBitmap(),
this.OnFileOpen);
menuFile.DropDownItems.Add(open);
// 保存
ToolStripMenuItem save = _toolStripMgr.NewMenuItem(
"file_save",
"保存",
Resource1.file_save.ToBitmap(),
this.OnFileSave);
menuFile.DropDownItems.Add(save);
// 另存为
ToolStripMenuItem saveas = _toolStripMgr.NewMenuItem(
"file_saveas",
"另存为...",
Resource1.file_saveas.ToBitmap(),
this.OnFileSaveAs);
menuFile.DropDownItems.Add(saveas);
}
/// <summary>
/// 设置工具条
/// </summary>
private List<ToolStrip> SetupToolbar()
{
List<ToolStrip> toolStripList = new List<ToolStrip>();
// 文件
ToolStrip fileToolstrip = SetupToolbar_File();
toolStripList.Add(fileToolstrip);
// 编辑
ToolStrip editToolstrip = SetupToolbar_Edit();
toolStripList.Add(editToolstrip);
// 绘制
ToolStrip drawToolstrip = SetupToolbar_Draw();
toolStripList.Add(drawToolstrip);
// 修改
ToolStrip modifyToolstrip = SetupToolbar_Modify();
toolStripList.Add(modifyToolstrip);
// 图层
ToolStrip layerToolstrip = SetupToolbar_Layer();
toolStripList.Add(layerToolstrip);
// 特性
ToolStrip propertyToolstrip = SetupToolbar_Property();
toolStripList.Add(propertyToolstrip);
return toolStripList;
}
/// <summary>
/// 工具条: 文件
/// </summary>
private ToolStrip SetupToolbar_File()
{
ToolStrip fileToolstrip = _toolStripMgr.GetToolStrip("File", true);
// 新建
ToolStripButton _new = _toolStripMgr.NewToolStripButton("file_new");
_new.Text = "";
fileToolstrip.Items.Add(_new);
// 打开
ToolStripButton open = _toolStripMgr.NewToolStripButton("file_open");
open.Text = "";
fileToolstrip.Items.Add(open);
// 保存
ToolStripButton save = _toolStripMgr.NewToolStripButton("file_save");
save.Text = "";
fileToolstrip.Items.Add(save);
// 另存为
ToolStripButton saveas = _toolStripMgr.NewToolStripButton("file_saveas");
saveas.Text = "";
fileToolstrip.Items.Add(saveas);
return fileToolstrip;
}
/// <summary>
/// 工具条: 编辑
/// </summary>
private ToolStrip SetupToolbar_Edit()
{
ToolStrip editToolstrip = _toolStripMgr.GetToolStrip("Edit", true);
return editToolstrip;
}
/// <summary>
/// 工具条: 绘制
/// </summary>
private ToolStrip SetupToolbar_Draw()
{
ToolStrip drawToolstrip = _toolStripMgr.GetToolStrip("Draw", true);
return drawToolstrip;
}
/// <summary>
/// 工具条: 修改
/// </summary>
private ToolStrip SetupToolbar_Modify()
{
ToolStrip modifyToolstrip = _toolStripMgr.GetToolStrip("Modify", true);
return modifyToolstrip;
}
/// <summary>
/// 工具条: 图层
/// </summary>
private ToolStrip SetupToolbar_Layer()
{
ToolStrip layerToolstrip = _toolStripMgr.GetToolStrip("Layer", true);
return layerToolstrip;
}
/// <summary>
/// 工具条: 特性
/// </summary>
private ToolStrip SetupToolbar_Property()
{
ToolStrip propertyToolstrip = _toolStripMgr.GetToolStrip("Property", true);
return propertyToolstrip;
}
/// <summary>
/// 新建菜单项
/// </summary>
private ToolStripMenuItem NewMenuItem(
string text,
Image image,
EventHandler eventHandler)
{
ToolStripMenuItem menuItem = new ToolStripMenuItem();
menuItem.Text = text;
menuItem.Image = image;
menuItem.Click = eventHandler;
return menuItem;
}
/// <summary>
/// 新建文件
/// </summary>
private void OnFileNew(object sender, EventArgs e)
{
NewFile();
}
private void NewFile()
{
DocumentForm docForm = new DocumentForm();
docForm.Text = GetNextNewFileName();
docForm.MdiParent = this;
docForm.WindowState = FormWindowState.Maximized;
docForm.Show();
}
private string GetNextNewFileName()
{
string strBase = "new";
uint id = 1;
foreach (Form form in this.MdiChildren)
{
DocumentForm docForm = form as DocumentForm;
if (docForm == null)
{
continue;
}
string fileName = "";
LitCAD.DatabaseServices.Database db = docForm.document.database;
if (db.fileName != null)
{
fileName = System.IO.Path.GetFileNameWithoutExtension(db.fileName);
}
else
{
fileName = docForm.Text;
}
fileName = fileName.ToLower();
if (fileName.IndexOf(strBase) == 0)
{
fileName = fileName.Substring(strBase.Length);
uint number = 0;
if (uint.TryParse(fileName, out number))
{
if (number >= id)
{
id = number 1;
}
}
}
}
return string.Format("{0}{1}", strBase, id);
}
/// <summary>
/// 打开文件
/// </summary>
private void OnFileOpen(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "LitCAD文件(*.litcad)|*.litcad";
ofd.ValidateNames = true;
ofd.CheckPathExists = true;
ofd.CheckFileExists = true;
if (ofd.ShowDialog() == DialogResult.OK)
{
string strFileFullPath = ofd.FileName;
OpenFile(strFileFullPath);
}
}
private void OpenFile(string fileFullPath)
{
// 检查是否已经打开
string fileFullPathLower = fileFullPath.ToLower();
foreach (Form form in this.MdiChildren)
{
DocumentForm childDocForm = form as DocumentForm;
if (childDocForm == null)
{
continue;
}
string strDocPath = childDocForm.fileFullPath.ToLower();
if (fileFullPathLower == strDocPath)
{
childDocForm.Activate();
return;
}
}
// 打开文件
DocumentForm docForm = new DocumentForm();
if (fileFullPath != null
&& System.IO.File.Exists(fileFullPath))
{
docForm.Open(fileFullPath);
}
docForm.MdiParent = this;
docForm.WindowState = FormWindowState.Maximized;
docForm.Show();
}
/// <summary>
/// 保存文件
/// </summary>
private void OnFileSave(object sender, EventArgs e)
{
DocumentForm activeDocForm = this.ActiveMdiChild as DocumentForm;
if (activeDocForm == null)
{
return;
}
LitCAD.DatabaseServices.Database db = activeDocForm.document.database;
if (db.fileName == null)
{
SaveFileDialog savedialog = new SaveFileDialog();
savedialog.Title = "保存";
savedialog.Filter = "LitCAD文件(*.litcad)|*.litcad";
savedialog.FilterIndex = 0;
savedialog.RestoreDirectory = true;
savedialog.CheckPathExists = true;
savedialog.FileName = activeDocForm.Text;
if (savedialog.ShowDialog() == DialogResult.OK)
{
string fileFullPath = savedialog.FileName;
activeDocForm.SaveAs(fileFullPath, true);
}
}
else
{
activeDocForm.Save();
}
}
/// <summary>
/// 文件另存为
/// </summary>
private void OnFileSaveAs(object sender, EventArgs e)
{
DocumentForm activeDocForm = this.ActiveMdiChild as DocumentForm;
if (activeDocForm == null)
{
return;
}
SaveFileDialog savedialog = new SaveFileDialog();
savedialog.Title = "另存为";
savedialog.Filter = "LitCAD文件(*.litcad)|*.litcad";
savedialog.FilterIndex = 0;
savedialog.RestoreDirectory = true;
savedialog.CheckPathExists = true;
savedialog.FileName = "";
if (savedialog.ShowDialog() == DialogResult.OK)
{
string fileFullPath = savedialog.FileName;
activeDocForm.SaveAs(fileFullPath);
}
}
/// <summary>
/// 子窗体激活事件
/// </summary>
protected override void OnMdiChildActivate(EventArgs e)
{
base.OnMdiChildActivate(e);
DocumentForm activeDocForm = this.ActiveMdiChild as DocumentForm;
foreach (Control ctrl in Controls)
{
if (ctrl is ToolStripPanel)
((ToolStripPanel)ctrl).SuspendLayout();
}
if (activeDocForm != null)
{
ToolStripManager.RevertMerge(_toolStripMgr.GetToolStrip("Edit"));
ToolStripManager.Merge(activeDocForm.toolstripMgr.GetToolStrip("Edit"), _toolStripMgr.GetToolStrip("Edit"));
ToolStripManager.RevertMerge(_toolStripMgr.GetToolStrip("Draw"));
ToolStripManager.Merge(activeDocForm.toolstripMgr.GetToolStrip("Draw"), _toolStripMgr.GetToolStrip("Draw"));
ToolStripManager.RevertMerge(_toolStripMgr.GetToolStrip("Modify"));
ToolStripManager.Merge(activeDocForm.toolstripMgr.GetToolStrip("Modify"), _toolStripMgr.GetToolStrip("Modify"));
ToolStripManager.RevertMerge(_toolStripMgr.GetToolStrip("Layer"));
ToolStripManager.Merge(activeDocForm.toolstripMgr.GetToolStrip("Layer"), _toolStripMgr.GetToolStrip("Layer"));
ToolStripManager.RevertMerge(_toolStripMgr.GetToolStrip("Property"));
ToolStripManager.Merge(activeDocForm.toolstripMgr.GetToolStrip("Property"), _toolStripMgr.GetToolStrip("Property"));
}
foreach (Control ctrl in Controls)
{
if (ctrl is ToolStripPanel)
((ToolStripPanel)ctrl).ResumeLayout();
}
}
/// <summary>
/// 空闲事件
/// </summary>
private void OnIdle(object sender, EventArgs e)
{
DocumentForm currActiveDocForm = this.ActiveMdiChild as DocumentForm;
if (currActiveDocForm != null)
{
currActiveDocForm.UpdateUI();
}
}
}
}
标签: cad
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
支持(0) 盖楼(回复)