半全局处理程序删除

时间:2018-07-24 14:38:40

标签: vb.net

我有一个包含需要清除的复选框的组框,但是将触发checkbox.checkedchanged事件(应如此),因此我必须重新考虑相关的处理程序。我的代码看起来好像可以改进,但是我尝试的每种方式都会出错。有没有一种巧妙的方法可以一次性删除添加的多个事件处理程序?      Private Sub resetAllControls(ByVal容器作为控件)

    [DllImport("User32.dll")]
    private static extern bool SetCursorPos(int X, int Y);
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        var left = Convert.ToInt32(GetActualLeft() + this.ActualWidth / 2);
        var top = Convert.ToInt32(GetActuaTop() + this.ActualHeight / 2);
        SetCursorPos(left, top);
    }

    double GetActualLeft()
    {
        if (this.WindowState == WindowState.Maximized)
        {
            var leftField = typeof(Window).GetField("_actualLeft", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
            return (double)leftField.GetValue(this);
        }
        else
            return this.Left;
    }

    double GetActuaTop()
    {
        if (this.WindowState == WindowState.Maximized)
        {
            var topField = typeof(Window).GetField("_actualTop", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
            return (double)topField.GetValue(this);
        }
        else
            return this.Top;
    }

我试图详细说明DirectCast方法以及我用来隐藏主窗体上标签的最后一部分的某些变体,但这似乎不适用于removehandler方法。有办法吗?

如果有20个复选框来更改状态,这将是一项艰巨的工作。

任何帮助将不胜感激。

0 个答案:

没有答案