以下代码片段在 foreach 循环中引发 InvalidCastException:
无法将“System.Windows.Forms.StatusStrip”类型的对象转换为“System.Windows.Forms.GroupBox”类型。
我只是不明白这是怎么可能的......然后我又是一个菜鸟,所以它可能很愚蠢。
private void doSlide(GroupBox MoveThis)
{
//location 12,27
var t = Task.Factory.StartNew(() =>
{
ExecuteSecure(() =>
{
foreach (GroupBox box in this.Controls)
{
if (box != MoveThis)
{
box.Left = (-1) * box.Width;
}
else
{
do
{
if (box.Left > 12)
box.Left--;
else
box.Left++;
}
while (box.Left != 12);
}
}
});
});
}
这是执行安全的代码
private void ExecuteSecure(Action a)
{
if (InvokeRequired)
BeginInvoke(a);
else a();
}
基本上我有一个固定大小的表单和几个组框,在任何给定点上只有一个是可见的。当我们需要使一个新的 GroupBox 可见时,我们调用 DoSlide(GroupBox) 并指定我们想要使其可见的 groupbox。然后应该将表单上的每个 GroupBox 移动到位置 (-Box.Width,27),但指定的表单除外,它会滑动(递增或递减 box.left)进入视图。