Files
DDUtility/DDUtilityApp/LOGPARSER/FrmFindDialog.cs
2025-02-03 11:02:48 +09:00

137 lines
3.7 KiB
C#

using JWH;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DDUtilityApp.LOGPARSER
{
public partial class FrmFindDialog : Form
{
public event EventHandler FInd;
public Control Control { get; set; } = null;
public string SelectedText
{
get { return this.cboxFind.Text; }
set { this.cboxFind.Text = value; }
}
public FrmFindDialog()
{
InitializeComponent();
this.SetLayout();
this.SetEventHandler();
}
public FrmFindDialog(TextBox textBox) : this()
{
this.Control = textBox;
}
private void SetLayout()
{
this.Text = "Find Dialog";
this.MaximizeBox = false;
this.MinimizeBox = false;
}
private void SetEventHandler()
{
this.btnNext.Click += BtnNext_Click;
this.btnPrevious.Click += BtnPrevious_Click;
this.btnClose.Click += BtnClose_Click;
}
private void BtnNext_Click(object sender, EventArgs e)
{
try
{
TextBox control = this.Control as TextBox;
int start = control.SelectionStart + control.SelectionLength;
int index = control.Text.IndexOf(this.cboxFind.Text, start);
if (index < 0) return;
control.SelectionStart = index;
control.SelectionLength = this.cboxFind.Text.Length;
control.ScrollToCaret();
if (this.FInd != null) this.FInd(this, new EventArgs());
this.ComboBox_ItemAppend();
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void BtnPrevious_Click(object sender, EventArgs e)
{
try
{
TextBox control = this.Control as TextBox;
int end = control.SelectionStart;
int index = control.Text.LastIndexOf(this.cboxFind.Text, end);
if (index < 0) return;
control.SelectionStart = index;
control.SelectionLength = this.cboxFind.Text.Length;
control.ScrollToCaret();
if (this.FInd != null) this.FInd(this, new EventArgs());
this.ComboBox_ItemAppend();
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
private void BtnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void ComboBox_ItemAppend()
{
try
{
string value = this.cboxFind.Text;
if (string.IsNullOrWhiteSpace(value)) return;
this.cboxFind.Items.Remove(value);
this.cboxFind.Items.Insert(0, value);
this.cboxFind.Text = value;
}
catch (Exception ex)
{
XLogger.Instance.Fatal(ex);
}
}
public void Next(string selectedText = "")
{
if (!string.IsNullOrWhiteSpace(selectedText)) this.cboxFind.Text = selectedText;
this.BtnNext_Click(this.btnNext, new EventArgs());
}
public void Pervious(string selectedText = "")
{
if (!string.IsNullOrWhiteSpace(selectedText)) this.cboxFind.Text = selectedText;
this.BtnPrevious_Click(this.btnNext, new EventArgs());
}
}
}