我有一个包含需要清除的复选框的组框,但是将触发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个复选框来更改状态,这将是一项艰巨的工作。
任何帮助将不胜感激。