private void PanelForm_VisibleChanged(object aSender, EventArgs aEventArgs) { if (Visible) { mPanel = mSimObject.getPanel(mPanelName); var lControl = mPanel.UserControl; Controls.Add(lControl); ClientSize = new Size(lControl.Width, lControl.Height); mSimObject.ChangedValues += new EventHandler(onValueChanged); mSimObject.ChangedProperties += new EventHandler(onPropertiesChanged); mPanel.updateValues(); mPanel.updateProperties(); var lPoint = Cursor.Position; int lX = lPoint.X - Width / 2; int lY = lPoint.Y - Height / 2; int lMax = SystemInformation.VirtualScreen.Width - Width; if (lX > lMax) { lX = lMax; } else if (lX < 0) { lX = 0; } lMax = SystemInformation.VirtualScreen.Height - Height; if (lY > lMax) { lY = lMax; } else if (lY < 0) { lY = 0; } SetDesktopLocation(lX, lY); } else { mSimObject.ChangedValues -= onValueChanged; mSimObject.ChangedProperties -= onPropertiesChanged; Controls.Remove(mPanel.UserControl); mPanel.Dispose(); } }