SuperDesign/Source/RySmartEditor/Controls/Highlight/ContextMenuStripHighlightText2.cs
zilinsoft 5a5faaf5dc ## 📅2025-07-16 星期三更新
### RySmartEditor    V1.0.2507.1601
- *.[新增]新增文件内容索引搜索。
- *.[新增]新增打开文件自动定位到指定行的功能。
### SuperDesign    V3.0.2507.1601
#### 网页抓取工具
- *.[修复]修复历史记录无法记录的BUG。
#### 编码解码
- *.[新增]新增svg图片代码转Geometry代码的功能。
#### 项目功能->项目管理
- *.[新增]互斥运行标准改为以毕方文件夹为准,而不是以项目文件为准。
- *.[新增]支持同个毕方项目可以不用重启来快捷切换不同子项目。
- *.[新增]支持发布时和打包时自动编译功能。
- *.[修复]修复项目输出路径为相对路径时,更新引用dll可能不成功的BUG。
2025-07-16 09:08:09 +08:00

155 lines
6.0 KiB
C#

using ryCommon;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace ryControls
{
public partial class ContextMenuStripHighlightText2 : ContextMenuStrip
{
public ContextMenuStripHighlightText2()
{
InitializeComponent();
AddMenu("撤销", "undo").Click += Undo_Click;
AddMenu("重做", "redo").Click += Redo_Click;
AddSeparatorMenu();
AddMenu("剪切", "cut").Click += Cut_Click;
AddMenu("复制", "copy").Click += Copy_Click;
AddMenu("粘贴", "paste").Click += Paste_Click;
AddMenu("删除", "del").Click += Del_Click;
AddMenu("全选", "selectall").Click += SelectAll_Click;
AddMenu("查找", "find").Click += Find_Click;
AddSeparatorMenu();
AddMenu("用百度搜索选中内容", "bdsearch").Click += BDSearch_Click;
}
private void BDSearch_Click(object sender, EventArgs e)
{
if (base.SourceControl is ScintillaNETV2.Scintilla editor)
{
RyFiles.OpenUrl("https://www.baidu.com/s?wd=" +RyWeb.WebDecode.UrlEncode(editor.SelectedText));
}
}
private void Find_Click(object sender, EventArgs e)
{
if(base.SourceControl is ScintillaNETV2.Scintilla editor)
{
if(editor.Parent is HighlightEditor rich_txt)
{
rich_txt.ShowFind();
}
}
}
private void SelectAll_Click(object sender, EventArgs e)
{
if (!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
rich_txt.SelectAll();
//Thread th = new Thread(sendkey);
//th.Start();
//void sendkey()
//{
// Thread.Sleep(100);
// this.Invoke(new Action(() =>
// {
// SendKeys.SendWait("^a");
// }));
//}
}
private void Undo_Click(object sender, EventArgs e)
{
if(!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
rich_txt.Undo();
}
private void Redo_Click(object sender, EventArgs e)
{
if (!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
rich_txt.Redo();
}
private void Cut_Click(object sender, EventArgs e)
{
if (!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
rich_txt.Cut();
}
private void Copy_Click(object sender, EventArgs e)
{
if (!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
//var ss = rich_txt.SelectedText;
rich_txt.Copy();
}
private void Paste_Click(object sender, EventArgs e)
{
if (!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
rich_txt.Paste();
}
private void Del_Click(object sender, EventArgs e)
{
if (!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
rich_txt.DeleteRange(rich_txt.SelectionStart,rich_txt.SelectedText.Length);
}
public ToolStripSeparator AddSeparatorMenu()
{
ToolStripSeparator item = new ToolStripSeparator();
base.Items.Add(item);
return item;
}
public ToolStripMenuItem AddMenu(string name, string tag)
{
ToolStripMenuItem item = new ToolStripMenuItem(name)
{
Tag = tag
};
base.Items.Add(item);
return item;
}
private void ContextMenuStripRichText_Opening(object sender, CancelEventArgs e)
{
if (!(base.SourceControl is ScintillaNETV2.Scintilla)) { return; }
var rich_txt = (ScintillaNETV2.Scintilla)base.SourceControl;
for (int i = 0; i < base.Items.Count; i++)
{
var item = base.Items[i];
if (item.Tag == null) { continue; }
switch(item.Tag.ToString())
{
case "undo":
item.Enabled = rich_txt.CanUndo && !rich_txt.ReadOnly;
break;
case "redo":
item.Enabled = rich_txt.CanRedo && !rich_txt.ReadOnly;
break;
case "cut":
item.Enabled = (rich_txt.SelectedText != "" && !rich_txt.ReadOnly);
break;
case "copy":
item.Enabled = rich_txt.SelectedText != "";
break;
case "paste":
item.Enabled = !rich_txt.ReadOnly;
break;
case "del":
item.Enabled =(rich_txt.SelectedText != "" && !rich_txt.ReadOnly);
break;
case "bdsearch":
item.Enabled = (rich_txt.SelectedText != "" && rich_txt.SelectedText.IndexOfEx("\n")<0 && rich_txt.SelectedText.Length<50);
break;
case "selectall":
item.Enabled = rich_txt.SelectedText != rich_txt.Text;
break;
}
}
}
}
}