Delete handler subscriptions from controls (memory leak if not done???), ver. 2.18.1298
This commit is contained in:
parent
c3d5e157ec
commit
ff3118068d
@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("2.18.1297.0")]
|
||||
[assembly: AssemblyFileVersion("2.18.1297.0")]
|
||||
[assembly: AssemblyVersion("2.18.1298.0")]
|
||||
[assembly: AssemblyFileVersion("2.18.1298.0")]
|
||||
|
||||
@ -418,6 +418,7 @@ namespace TBF.Screens
|
||||
if ((results == null) || (results.WMPositionsCount == 0))
|
||||
{
|
||||
/// There are no water meters at all
|
||||
DeleteHandlers();
|
||||
flowLayoutPanel.Controls.Clear();
|
||||
wmRsltsCtrl = new OneWMResultsRowsCtrl[0];
|
||||
firstEnabledControl = null;
|
||||
@ -465,6 +466,7 @@ namespace TBF.Screens
|
||||
/// Create controls and fill the FlowLayoutPanel
|
||||
///
|
||||
flowLayoutPanel.SuspendLayout();
|
||||
DeleteHandlers();
|
||||
flowLayoutPanel.Controls.Clear();
|
||||
flowLayoutPanel.WrapContents = true;
|
||||
flowLayoutPanel.AutoScroll = true;
|
||||
@ -485,17 +487,7 @@ namespace TBF.Screens
|
||||
wmRsltsCtrl[ix].Width = oneWidth;
|
||||
wmRsltsCtrl[ix].Height = oneHeight;
|
||||
wmRsltsCtrl[ix].Update(currentItems);
|
||||
wmRsltsCtrl[ix].WMResultsClickedHandler += delegate(object s, Results.Forms.WaterMeterEventArgs args)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new EventHandler<Results.Forms.WaterMeterEventArgs>(OnDoubleClick), s, args);
|
||||
}
|
||||
else
|
||||
{
|
||||
OnDoubleClick(s, args);
|
||||
}
|
||||
};
|
||||
wmRsltsCtrl[ix].WMResultsClickedHandler += HandleDoubleClick;
|
||||
|
||||
flowLayoutPanel.Controls.Add(wmRsltsCtrl[ix] as UserControl);
|
||||
if ((firstEnabledControl == null) && !results.WaterMeters[i].Disabled) firstEnabledControl = wmRsltsCtrl[ix];
|
||||
@ -509,6 +501,33 @@ namespace TBF.Screens
|
||||
flowLayoutPanel.ResumeLayout();
|
||||
}
|
||||
|
||||
void HandleDoubleClick(object s, WaterMeterEventArgs args)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new EventHandler<Results.Forms.WaterMeterEventArgs>(OnDoubleClick), s, args);
|
||||
}
|
||||
else
|
||||
{
|
||||
OnDoubleClick(s, args);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Delete handler subscriptions from controls (memory leak if not done???).
|
||||
/// To be done before flowLayoutPanel.Controls.Clear().
|
||||
/// </summary>
|
||||
void DeleteHandlers()
|
||||
{
|
||||
foreach (var ctrl in flowLayoutPanel.Controls)
|
||||
{
|
||||
if (ctrl is IOneWMResultsCtrl)
|
||||
{
|
||||
(ctrl as IOneWMResultsCtrl).WMResultsClickedHandler -= HandleDoubleClick;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void UpdateResults(Results.BatchResults batchResults)
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user