From 808ab532c95ec64007459ef8bb0feb0d2c8b88ca Mon Sep 17 00:00:00 2001 From: Markus Hofknecht Date: Sat, 10 Oct 2020 09:47:30 +0200 Subject: [PATCH] [BUG] Fix DataGridView Default Error is shown + NullReferenceException (#139), version 1.0.16.2 --- Business/Menus.cs | 53 +++++++++++++++++++++++++------------- Properties/AssemblyInfo.cs | 4 +-- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/Business/Menus.cs b/Business/Menus.cs index b1f8f8a..34c0c83 100644 --- a/Business/Menus.cs +++ b/Business/Menus.cs @@ -37,6 +37,7 @@ namespace SystemTrayMenu.Business private RowData loadingRowData = null; private bool showingMessageBox = false; private TaskbarPosition taskbarPosition = new WindowsTaskbar().Position; + private bool searchTextChanging = false; public Menus() { @@ -484,25 +485,28 @@ namespace SystemTrayMenu.Business menuToDispose.CmdKeyProcessed -= keyboardInput.CmdKeyProcessed; menuToDispose.SearchTextChanging -= keyboardInput.SearchTextChanging; menuToDispose.SearchTextChanged -= Menu_SearchTextChanged; - DataGridView dgv = menuToDispose.GetDataGridView(); - dgv.CellMouseEnter -= dgvMouseRow.CellMouseEnter; - dgv.CellMouseLeave -= dgvMouseRow.CellMouseLeave; - dgv.MouseLeave -= dgvMouseRow.MouseLeave; - dgv.MouseMove -= waitToOpenMenu.MouseMove; - dgv.MouseDown -= Dgv_MouseDown; - dgv.MouseDoubleClick -= Dgv_MouseDoubleClick; - dgv.SelectionChanged -= Dgv_SelectionChanged; - dgv.RowPostPaint -= Dgv_RowPostPaint; - dgv.ClearSelection(); - - foreach (DataGridViewRow row in dgv.Rows) + DataGridView dgv = menuToDispose?.GetDataGridView(); + if (dgv != null) { - RowData rowData = (RowData)row.Cells[2].Value; - rowData.Dispose(); - DisposeMenu(rowData.SubMenu); + dgv.CellMouseEnter -= dgvMouseRow.CellMouseEnter; + dgv.CellMouseLeave -= dgvMouseRow.CellMouseLeave; + dgv.MouseLeave -= dgvMouseRow.MouseLeave; + dgv.MouseMove -= waitToOpenMenu.MouseMove; + dgv.MouseDown -= Dgv_MouseDown; + dgv.MouseDoubleClick -= Dgv_MouseDoubleClick; + dgv.SelectionChanged -= Dgv_SelectionChanged; + dgv.RowPostPaint -= Dgv_RowPostPaint; + dgv.ClearSelection(); + + foreach (DataGridViewRow row in dgv.Rows) + { + RowData rowData = (RowData)row.Cells[2].Value; + rowData?.Dispose(); + DisposeMenu(rowData.SubMenu); + } } - menuToDispose.Dispose(); + menuToDispose?.Dispose(); } } @@ -613,7 +617,7 @@ namespace SystemTrayMenu.Business menu.MouseEnter += waitLeave.Stop; menu.KeyPress += keyboardInput.KeyPress; menu.CmdKeyProcessed += keyboardInput.CmdKeyProcessed; - menu.SearchTextChanging += keyboardInput.SearchTextChanging; + menu.SearchTextChanging += Menu_SearchTextChanging; menu.SearchTextChanged += Menu_SearchTextChanged; menu.Deactivate += Deactivate; void Deactivate(object sender, EventArgs e) @@ -719,6 +723,7 @@ namespace SystemTrayMenu.Business private void RefreshSelection(DataGridView dgv) { + dgv.SelectionChanged -= Dgv_SelectionChanged; foreach (DataGridViewRow row in dgv.Rows) { RowData rowData = (RowData)row.Cells[2].Value; @@ -752,7 +757,12 @@ namespace SystemTrayMenu.Business } } - dgv.Refresh(); + dgv.SelectionChanged += Dgv_SelectionChanged; + + if (!searchTextChanging) + { + dgv.Refresh(); + } } private void Dgv_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) @@ -921,10 +931,17 @@ namespace SystemTrayMenu.Business } } + private void Menu_SearchTextChanging() + { + searchTextChanging = true; + keyboardInput.SearchTextChanging(); + } + private void Menu_SearchTextChanged(object sender, EventArgs e) { keyboardInput.SearchTextChanged(sender, e); AdjustMenusSizeAndLocation(); + searchTextChanging = false; } } } diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index 1304cf4..f986d85 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -39,5 +39,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.16.1")] -[assembly: AssemblyFileVersion("1.0.16.1")] +[assembly: AssemblyVersion("1.0.16.2")] +[assembly: AssemblyFileVersion("1.0.16.2")]