VEPROMS_UI / remove BouncyCastle
This commit is contained in:
@@ -1,14 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
using System.IO;
|
||||
using Volian.Controls.Library;
|
||||
using DevComponents.DotNetBar;
|
||||
using JR.Utils.GUI.Forms;
|
||||
using System.Linq;
|
||||
using System.Data;
|
||||
using xls = Microsoft.Office.Interop.Excel;
|
||||
|
||||
@@ -16,52 +11,42 @@ namespace VEPROMS
|
||||
{
|
||||
public partial class frmGenTools : Form
|
||||
{
|
||||
private SessionInfo _MySessionInfo;
|
||||
public SessionInfo MySessionInfo
|
||||
{
|
||||
get { return _MySessionInfo; }
|
||||
set { _MySessionInfo = value; }
|
||||
}
|
||||
public SessionInfo MySessionInfo { get; set; }
|
||||
|
||||
public frmGenTools(SessionInfo sessionInfo, frmVEPROMS veProms)
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Keeping veProms for potential future use")]
|
||||
public frmGenTools(SessionInfo sessionInfo, frmVEPROMS veProms)
|
||||
{
|
||||
InitializeComponent();
|
||||
_MySessionInfo = sessionInfo;
|
||||
MySessionInfo = sessionInfo;
|
||||
|
||||
// When opening General tools Check tab will be default.
|
||||
this.sideNavItmCheck.Checked = true;
|
||||
sideNavItmCheck.Checked = true;
|
||||
|
||||
setupProgessSteps1(); // C2017-030 - new Tools user interface
|
||||
|
||||
}
|
||||
|
||||
private void frmGenTools_Load(object sender, EventArgs e)
|
||||
{
|
||||
IsClosing = false;//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
}
|
||||
private bool IsClosing = false;//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
private void frmGenTools_FormClosing(object sender, EventArgs e)
|
||||
{
|
||||
IsClosing = true;//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
}
|
||||
private void frmGenTools_Load(object sender, EventArgs e) => IsClosing = false;//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
private bool IsClosing = false;//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
private void frmGenTools_FormClosing(object sender, EventArgs e) => IsClosing = true;//B2017-221 Allow the batch dialog to close when waiting to process.
|
||||
|
||||
// C2017-030 - new Tools user interface
|
||||
// tool renamed to Identify Orphan Items
|
||||
private void IdentifyDisconnectedItems()
|
||||
// C2017-030 - new Tools user interface
|
||||
// tool renamed to Identify Orphan Items
|
||||
private void IdentifyDisconnectedItems()
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
txtProcess.AppendText("Identifing Orphan Items");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText($"Started: {pStart:MM/dd/yyyy @ HH:mm}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
int rowCount = ESP_IdentifyDisconnectedItems.Execute("vesp_GetDisconnectedItemsCount");
|
||||
txtProcess.AppendText(string.Format("Orphan Items Count: {0}", rowCount));
|
||||
txtProcess.AppendText($"Orphan Items Count: {rowCount}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
if (rowCount > 0)
|
||||
{
|
||||
txtResults.AppendText(string.Format("The database contains {0} Orphan items.", rowCount));
|
||||
txtResults.AppendText($"The database contains {rowCount} Orphan items.");
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText("These can be removed via the Remove Orphan Data Records in the Repair tools");
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
@@ -74,33 +59,33 @@ namespace VEPROMS
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
}
|
||||
DateTime pEnd = DateTime.Now;
|
||||
txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText($"Completed: {pEnd:MM/dd/yyyy @ HH:mm}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
this.Cursor = Cursors.Default;
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
// C2017-030 - new Tools user interface
|
||||
// is one of two tools run from Check Obsolete RO Data
|
||||
private void IdentifyUnusedRoFstsAndFigures()
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
txtProcess.AppendText("Identifing Unused RoFsts and Figures");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText($"Started: {pStart:MM/dd/yyyy @ HH:mm}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
int rowCountRoFst = ESP_GetUnusedRoFsts.Execute("vesp_GetUnusedRoFstsCount");
|
||||
int rowCountFigures = ESP_GetUnusedFigures.Execute("vesp_GetUnusedFiguresCount");
|
||||
txtProcess.AppendText(string.Format("Unused RoFsts Count: {0}, Unused Figures Count: {1}", rowCountRoFst, rowCountFigures));
|
||||
txtProcess.AppendText($"Unused RoFsts Count: {rowCountRoFst}, Unused Figures Count: {rowCountFigures}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
if (rowCountRoFst > 0 || rowCountFigures > 0)
|
||||
{
|
||||
txtResults.AppendText(string.Format("The database contains {0} unused RoFsts.", rowCountRoFst));
|
||||
txtResults.AppendText($"The database contains {rowCountRoFst} unused RoFsts.");
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(string.Format("The database contains {0} unused Figures items.", rowCountFigures));
|
||||
txtResults.AppendText($"The database contains {rowCountFigures} unused Figures items.");
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
}
|
||||
@@ -112,31 +97,31 @@ namespace VEPROMS
|
||||
}
|
||||
|
||||
DateTime pEnd = DateTime.Now;
|
||||
txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText($"Completed: {pEnd:MM/dd/yyyy @ HH:mm}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText($"Started: {pStart:MM/dd/yyyy @ HH:mm}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
this.Cursor = Cursors.Default;
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
// C2017-030 - new Tools user interface
|
||||
// is one of two tools run from Check Obsolete RO Data
|
||||
private void IdentifyROAssociations()
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
txtProcess.AppendText("Identifing Unused RO Associations");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText($"Started: {pStart:MM/dd/yyyy @ HH:mm}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
int rowCount = ESP_GetROAssoc.Execute("vesp_GetUnusedROAssociationsCount");
|
||||
txtProcess.AppendText(string.Format("Unused RO Associations Count: {0}", rowCount));
|
||||
txtProcess.AppendText($"Unused RO Associations Count: {rowCount}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
if (rowCount > 0)
|
||||
{
|
||||
txtResults.AppendText(string.Format("The database contains {0} unused RO Associations.", rowCount));
|
||||
txtResults.AppendText($"The database contains {rowCount} unused RO Associations.");
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
}
|
||||
@@ -147,26 +132,26 @@ namespace VEPROMS
|
||||
txtResults.AppendText(Environment.NewLine);
|
||||
}
|
||||
DateTime pEnd = DateTime.Now;
|
||||
txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText($"Completed: {pEnd:MM/dd/yyyy @ HH:mm}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
this.Cursor = Cursors.Default;
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
// C2017-030 - new Tools user interface
|
||||
// tool was renamed to Hidden Data Locations (on Check list)
|
||||
private void IdentifyNonEditableItems()
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
txtProcess.AppendText("Identifing Hidden Item Locations");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText($"Started: {pStart:MM/dd/yyyy @ HH:mm}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
List<ItemInfo> myItems = ESP_IdentifyNonEditableItems.Execute("vesp_GetNonEditableItems");
|
||||
txtProcess.AppendText(string.Format("Hidden Items Count: {0}", myItems.Count));
|
||||
txtProcess.AppendText($"Hidden Items Count: {myItems.Count}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
if (myItems.Count > 0)
|
||||
{
|
||||
@@ -190,52 +175,46 @@ namespace VEPROMS
|
||||
//clear the list since no longer using it
|
||||
myItems.Clear();
|
||||
DateTime pEnd = DateTime.Now;
|
||||
txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText($"Completed: {pEnd:MM/dd/yyyy @ HH:mm}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
this.Cursor = Cursors.Default;
|
||||
Cursor = Cursors.Default;
|
||||
}
|
||||
|
||||
// C2017-030 - new Tools user interface
|
||||
// tool was renamed to Show Users
|
||||
private void GetDatabaseSessions()
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
txtProcess.AppendText("Show Users in PROMS");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText($"Started: {pStart:MM/dd/yyyy @ HH:mm}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
txtResults.Clear();
|
||||
txtResults.AppendText(ESP_GetDatabaseSessions.Execute("vesp_GetDatabaseSessions"));
|
||||
DateTime pEnd = DateTime.Now;
|
||||
txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText($"Completed: {pEnd:MM/dd/yyyy @ HH:mm}");
|
||||
Application.DoEvents();
|
||||
this.Cursor = Cursors.Default;
|
||||
Cursor = Cursors.Default;
|
||||
MessageBox.Show("Show Users Completed", "Show Users");
|
||||
}
|
||||
|
||||
public List<string> roFstInfo_ROTableUpdate(object sender, ROFstInfoROTableUpdateEventArgs args)
|
||||
{
|
||||
return VlnFlexGrid.ROTableUpdate(sender, args);
|
||||
}
|
||||
private void btnClear_Click(object sender, EventArgs e) => txtResults.Clear();
|
||||
|
||||
private void btnClear_Click(object sender, EventArgs e)
|
||||
private void btnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
txtResults.Clear();
|
||||
}
|
||||
|
||||
private void btnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog();
|
||||
sfd.DefaultExt = "txt";
|
||||
sfd.AddExtension = true;
|
||||
sfd.Filter = "Text Files (*.txt)|*.txt";
|
||||
sfd.FileName = string.Format("BatchRefreshResults_{0}", DateTime.Now.ToString("yyyyMMdd_HHmm"));
|
||||
sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS";
|
||||
DialogResult dr = sfd.ShowDialog();
|
||||
SaveFileDialog sfd = new SaveFileDialog
|
||||
{
|
||||
DefaultExt = "txt",
|
||||
AddExtension = true,
|
||||
Filter = "Text Files (*.txt)|*.txt",
|
||||
FileName = $"BatchRefreshResults_{DateTime.Now:yyyyMMdd_HHmm}",
|
||||
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS"
|
||||
};
|
||||
DialogResult dr = sfd.ShowDialog();
|
||||
|
||||
if (dr == DialogResult.OK)
|
||||
{
|
||||
@@ -257,13 +236,10 @@ namespace VEPROMS
|
||||
}
|
||||
}
|
||||
|
||||
private void chkLater_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
pnlLater.Enabled = chkLater.Checked;
|
||||
}
|
||||
private void chkLater_CheckedChanged(object sender, EventArgs e) => pnlLater.Enabled = chkLater.Checked;
|
||||
|
||||
// C2017-030 new Tools user interface
|
||||
private void sideNavItmCheck_Click(object sender, EventArgs e)
|
||||
// C2017-030 new Tools user interface
|
||||
private void sideNavItmCheck_Click(object sender, EventArgs e)
|
||||
{
|
||||
GenToolType = E_GenToolType.Check;
|
||||
lblAdmToolProgressType.Text = "Checking:";
|
||||
@@ -284,16 +260,13 @@ namespace VEPROMS
|
||||
setupProgessSteps1();
|
||||
}
|
||||
|
||||
// C2017-030 new Tools user interface
|
||||
private void sideNavItmExit_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
// C2017-030 new Tools user interface
|
||||
private void sideNavItmExit_Click(object sender, EventArgs e) => Close();
|
||||
|
||||
#region On/Off Swiches
|
||||
#region On/Off Swiches
|
||||
|
||||
// C2017-030 new Tools user interface
|
||||
private enum E_GenToolType : int
|
||||
// C2017-030 new Tools user interface
|
||||
private enum E_GenToolType : int
|
||||
{
|
||||
Check = 0,
|
||||
Users = 3,
|
||||
@@ -301,9 +274,9 @@ namespace VEPROMS
|
||||
};
|
||||
private E_GenToolType GenToolType = 0;
|
||||
|
||||
DevComponents.DotNetBar.StepItem siOrphDatRecs = new DevComponents.DotNetBar.StepItem("siOrphDatRecs", "Orphan Data Records");
|
||||
DevComponents.DotNetBar.StepItem siHiddenDataLocs = new DevComponents.DotNetBar.StepItem("siHiddenDataLocs", "Hidden Data");
|
||||
DevComponents.DotNetBar.StepItem siObsoleteROData = new DevComponents.DotNetBar.StepItem("siObsoleteROData", "Obsolete RO Data");
|
||||
readonly DevComponents.DotNetBar.StepItem siOrphDatRecs = new DevComponents.DotNetBar.StepItem("siOrphDatRecs", "Orphan Data Records");
|
||||
readonly DevComponents.DotNetBar.StepItem siHiddenDataLocs = new DevComponents.DotNetBar.StepItem("siHiddenDataLocs", "Hidden Data");
|
||||
readonly DevComponents.DotNetBar.StepItem siObsoleteROData = new DevComponents.DotNetBar.StepItem("siObsoleteROData", "Obsolete RO Data");
|
||||
|
||||
// this will update/rebuild the progress bar in the bottom panel of Tools
|
||||
private void setupProgessSteps1()
|
||||
@@ -332,22 +305,16 @@ namespace VEPROMS
|
||||
}
|
||||
}
|
||||
|
||||
// used for all of the Switch buttons (ON/OFF buttons)
|
||||
private void swCk_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
setupProgessSteps1();
|
||||
}
|
||||
// used for all of the Switch buttons (ON/OFF buttons)
|
||||
private void swCk_ValueChanged(object sender, EventArgs e) => setupProgessSteps1();
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
// C2017-030 New Tools user interface
|
||||
// functions to handle the progress bar in the bottom panel of Tools
|
||||
private void StepProgress(int prgStpIdx, int val)
|
||||
{
|
||||
((DevComponents.DotNetBar.StepItem)progressSteps1.Items[prgStpIdx]).Value = val;
|
||||
}
|
||||
// C2017-030 New Tools user interface
|
||||
// functions to handle the progress bar in the bottom panel of Tools
|
||||
private void StepProgress(int prgStpIdx, int val) => ((DevComponents.DotNetBar.StepItem)progressSteps1.Items[prgStpIdx]).Value = val;
|
||||
|
||||
private void ClearStepProgress()
|
||||
private void ClearStepProgress()
|
||||
{
|
||||
for (int i = 0; i < progressSteps1.Items.Count; i++)
|
||||
{
|
||||
@@ -362,7 +329,7 @@ namespace VEPROMS
|
||||
{
|
||||
if (chkLater.Checked)
|
||||
{
|
||||
long later = long.Parse(dtpDate.Value.ToString("yyyyMMdd") + dtpTime.Value.ToString("HHmm"));
|
||||
long later = long.Parse($"{dtpDate.Value:yyyyMMdd}{dtpTime.Value:HHmm}");
|
||||
long now = long.Parse(DateTime.Now.ToString("yyyyMMddHHmm"));
|
||||
|
||||
while (now < later)
|
||||
@@ -435,10 +402,12 @@ namespace VEPROMS
|
||||
{
|
||||
if (string.IsNullOrEmpty(UACfilename))
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog();
|
||||
sfd.Filter = "Excel XLS (*.xlsx)|*.xlsx";
|
||||
sfd.FileName = "UACReport.xlsx";
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
SaveFileDialog sfd = new SaveFileDialog
|
||||
{
|
||||
Filter = "Excel XLS (*.xlsx)|*.xlsx",
|
||||
FileName = "UACReport.xlsx"
|
||||
};
|
||||
if (sfd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
UACfilename = sfd.FileName;
|
||||
}
|
||||
@@ -462,11 +431,11 @@ namespace VEPROMS
|
||||
//Get Datatable of results then loop through outputting into excel
|
||||
private void Generate_UAC_Report(string filename)
|
||||
{
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
Cursor = Cursors.WaitCursor;
|
||||
DateTime pStart = DateTime.Now;
|
||||
txtProcess.AppendText("Generate User Access Control Report in PROMS");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
txtProcess.AppendText(string.Format("Started: {0}", pStart.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText($"Started: {pStart:MM/dd/yyyy @ HH:mm}");
|
||||
txtProcess.AppendText(Environment.NewLine);
|
||||
Application.DoEvents();
|
||||
txtResults.Clear();
|
||||
@@ -525,9 +494,9 @@ namespace VEPROMS
|
||||
}
|
||||
|
||||
DateTime pEnd = DateTime.Now;
|
||||
txtProcess.AppendText(string.Format("Completed: {0}", pEnd.ToString("MM/dd/yyyy @ HH:mm")));
|
||||
txtProcess.AppendText($"Completed: {pEnd:MM/dd/yyyy @ HH:mm}");
|
||||
Application.DoEvents();
|
||||
this.Cursor = Cursors.Default;
|
||||
Cursor = Cursors.Default;
|
||||
MessageBox.Show("Generate User Access Control Report Completed", "User Access Control Report");
|
||||
|
||||
}
|
||||
@@ -544,7 +513,7 @@ namespace VEPROMS
|
||||
catch (Exception ex)
|
||||
{
|
||||
obj = null;
|
||||
MessageBox.Show("Exception Occurred while releasing object " + ex.ToString());
|
||||
MessageBox.Show($"Exception Occurred while releasing object {ex}");
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -552,18 +521,11 @@ namespace VEPROMS
|
||||
}
|
||||
}
|
||||
|
||||
//C2025-011 RO Update Tool Memory Enhancements
|
||||
private void txtProcess_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
//clears the stack to help with memory - should never need to undo text changes to this.
|
||||
txtProcess.ClearUndo();
|
||||
}
|
||||
|
||||
private void txtResults_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
//clears the stack to help with memory - should never need to undo text changes to this.
|
||||
txtResults.ClearUndo();
|
||||
}
|
||||
//C2025-011 RO Update Tool Memory Enhancements
|
||||
//clears the stack to help with memory - should never need to undo text changes to this.
|
||||
private void txtProcess_TextChanged(object sender, EventArgs e) => txtProcess.ClearUndo();
|
||||
//clears the stack to help with memory - should never need to undo text changes to this.
|
||||
private void txtResults_TextChanged(object sender, EventArgs e) => txtResults.ClearUndo();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user