添加选择功能

This commit is contained in:
LittleBoy 2023-12-12 17:33:53 +08:00
parent 9b55e8b683
commit a4bdf235ce
6 changed files with 34 additions and 14 deletions

Binary file not shown.

View File

@ -9,22 +9,24 @@ namespace TestWordAddIn1
public partial class ProofreadItem : UserControl public partial class ProofreadItem : UserControl
{ {
private readonly Color BG_NORMAL = Color.WhiteSmoke; private readonly Color BG_NORMAL = Colors.FromHex("f9f8f8");
private readonly Color BG_HOVER = Color.AliceBlue; private readonly Color BG_HOVER = Colors.FromHex("b7dde8");
private readonly Color BG_ACTIVE = Color.AliceBlue; private readonly Color BG_ACTIVE = Colors.FromHex("b7dde8");
private DiffItem diffItem; private DiffItem diffItem;
private int currentStart; private int currentStart;
private Document document; private Microsoft.Office.Tools.Word.Document document;
private Bookmark bookmark; private Microsoft.Office.Tools.Word.Bookmark bookmark;
private bool processed = false; private bool processed = false;
public ProofreadItem() public ProofreadItem()
{ {
InitializeComponent(); InitializeComponent();
this.BackColor = BG_NORMAL; this.BackColor = BG_NORMAL;
this.document = Globals.ThisAddIn.Application.ActiveDocument; this.document = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument);
this.Click += ProofreadItem_Click1;
} }
private void ProofreadItem_MouseEnter(object sender, EventArgs e) private void ProofreadItem_MouseEnter(object sender, EventArgs e)
{ {
this.BackColor = BG_HOVER; this.BackColor = BG_HOVER;
@ -37,11 +39,6 @@ namespace TestWordAddIn1
Console.WriteLine("ProofreadItem_MouseLeave"); Console.WriteLine("ProofreadItem_MouseLeave");
} }
private void ProofreadItem_Click(object sender, EventArgs e)
{
this.BackColor = BG_ACTIVE;
Console.WriteLine("ProofreadItem_Click");
}
private void AddBookmark(Color color) private void AddBookmark(Color color)
{ {
int rangeStart = this.currentStart + this.diffItem.Start, int rangeStart = this.currentStart + this.diffItem.Start,
@ -49,13 +46,34 @@ namespace TestWordAddIn1
Range r = this.document.Range(rangeStart, rangeEnd); Range r = this.document.Range(rangeStart, rangeEnd);
this.bookmark = this.document.Bookmarks.Add("mark_" + this.diffItem.Id, r); this.bookmark = this.document.Controls.AddBookmark(r,"mark_" + this.diffItem.Id);
this.bookmark.Selected += Bookmark_Selected;
if (this.diffItem.Tag != "i") if (this.diffItem.Tag != "i")
{ {
r.Shading.BackgroundPatternColor = (WdColor)ColorTranslator.ToOle(color); r.Shading.BackgroundPatternColor = (WdColor)ColorTranslator.ToOle(color);
} }
} }
private void Bookmark_Selected(object sender, Microsoft.Office.Tools.Word.SelectionEventArgs e)
{
this.BackColor = BG_ACTIVE;
}
private void ProofreadItem_Click1(object sender, EventArgs e)
{
if(this.BackColor == BG_ACTIVE)
{
this.BackColor = BG_NORMAL;
return;
}
if (this.diffItem == null || this.bookmark == null
|| (this.diffItem.IsAccept == AcceptEnum.Accept && this.diffItem.Tag == "d"))
{
return;
}
this.bookmark.Select();
this.BackColor = BG_ACTIVE;
}
public void SetProofreadItem(DiffItem it, int start) public void SetProofreadItem(DiffItem it, int start)
{ {
this.diffItem = it; this.diffItem = it;
@ -120,7 +138,8 @@ namespace TestWordAddIn1
{ {
if (this.diffItem.IsAccept != AcceptEnum.Default) return; if (this.diffItem.IsAccept != AcceptEnum.Default) return;
this.diffItem.IsAccept = AcceptEnum.Ignore; this.diffItem.IsAccept = AcceptEnum.Ignore;
this.bookmark.Range.Shading.BackgroundPatternColor = WdColor.wdColorAutomatic; //this.bookmark.Range.Shading.BackgroundPatternColor = WdColor.wdColorAutomatic;
this.bookmark.Range.Shading.BackgroundPatternColorIndex = WdColorIndex.wdAuto;
MessageBox.Show("忽略" + this.currentStart + this.diffItem.Text); MessageBox.Show("忽略" + this.currentStart + this.diffItem.Text);
this.ProcessView(); this.ProcessView();
} }
@ -130,7 +149,8 @@ namespace TestWordAddIn1
if (this.diffItem.IsAccept != AcceptEnum.Default) return; if (this.diffItem.IsAccept != AcceptEnum.Default) return;
this.diffItem.IsAccept = AcceptEnum.Accept; this.diffItem.IsAccept = AcceptEnum.Accept;
var rng = this.bookmark.Range; var rng = this.bookmark.Range;
rng.Shading.BackgroundPatternColor = WdColor.wdColorAutomatic; //rng.Shading.BackgroundPatternColor = WdColor.wdColorAutomatic;
rng.Shading.BackgroundPatternColorIndex = WdColorIndex.wdAuto;
if (this.diffItem.Tag == "d") if (this.diffItem.Tag == "d")
{ {
rng.Delete(); rng.Delete();