功能说明:
实现了一个简单的记事本功能,具有选择字体等基本编辑功能,并支持markdown语法,可以实时渲染markdown格式的文本。还具有网页访问功能,可以让用户输入网址并访问网页。这样用户可以通过同一个应用程序方便地进行文本编辑和浏览网页。
设计流程:
关键源码展示:
渲染richtextbox的文字为markdown效果并显示在webbrowser:
// 使用 MarkdownSharp 库将 RichTextBox 中的 Markdown 转换为 HTML
MarkdownSharp.Markdown markdown = new MarkdownSharp.Markdown();
string html = markdown.Transform(rtxtNotepad.Text);
// 在 WebBrowser 控件中显示 HTML
webBrowser1.DocumentText = html;
获取textbox的文本内容,并以url形式解析链接,显示在webbrowser控件
webBrowser1.Navigate(textBox1.Text);
保存文件:
if (b == true && rtxtNotepad.Modified == true)
{
rtxtNotepad.SaveFile(odlgNotepad.FileName);
s = true;
}
else if (b == false && rtxtNotepad.Text.Trim() != "" &&
sdlgNotepad.ShowDialog() == DialogResult.OK)
{
rtxtNotepad.SaveFile(sdlgNotepad.FileName);//保存语句
s = true;
b = true;
odlgNotepad.FileName = sdlgNotepad.FileName;
打开新的文件,若此时没保存此文件,则弹出提示:
if (b == true || rtxtNotepad.Text.Trim() != "")
{
if (s == false)
{
string result;
result = MessageBox.Show("文件尚未保存,是否保存?",
"保存文件", MessageBoxButtons.YesNoCancel).ToString();
switch (result)
{
case "Yes":
if (b == true)
{
rtxtNotepad.SaveFile(odlgNotepad.FileName);
}
else if (sdlgNotepad.ShowDialog() == DialogResult.OK)
{
rtxtNotepad.SaveFile(sdlgNotepad.FileName);
}
s = true;
break;
case "No":
b = false;
rtxtNotepad.Text = "";
break;
}
}
}
odlgNotepad.RestoreDirectory = true;
if ((odlgNotepad.ShowDialog() == DialogResult.OK) && odlgNotepad.FileName != "")
{
rtxtNotepad.LoadFile(odlgNotepad.FileName);//打开代码语句
b = true;
}
s = true;
总结:
一、Windows的窗体开发,与安卓开发的不同是:安卓的界面构建是通过语句生成界面,而Windows界面开发是通过拖拽控件,设置控件属性,来实现页面效果,并生成相关界面设计代码;同时,Windows的控件点击效果等等交互,是自动生成一个相关函数,开发人员在函数内写代码, 这样维护代码更加直观简单(点击控件进去维护就好了),但可能带来代码架构逻辑不明相关的问题
相同的是,他们都是通过一个特定的控件id值获取控件,并利用各类基本方法实现复杂的效果,如果学过安卓或是Windows,上手另外一个并不会太难。
二、此次我还要学到的就是不管在Windows还是安卓,合理使用第三方库都是开发人员要必备的技能,Windows的第三方库由nuget里面,对开发人员很方便,安卓是利用gradle。此次用到的webbrowser库,就可以提供丰富的功能(渲染markdown语法,显示网页),并且提供了简单的接口来调用。
实现效果截图:
源码开源地址:
xiamuaila/WindowsNotePadSuportMarkDown (github.com)