gpt4 book ai didi

c# - 这是如何抛出 InvalidCastException

转载 作者:太空宇宙 更新时间:2023-11-03 17:10:29 26 4
gpt4 key购买 nike

以下代码片段在 foreach 循环中抛出 InvalidCastException :

Unable to cast object of type 'System.Windows.Forms.StatusStrip' to type '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 移动到位置 (-Box.Width,27),除了指定的窗体将滑动(递增或递减的 box.left)进入 View 。

最佳答案

你想用

this.Controls.OfType<GroupBox>()

在你的 foreach 中。 This.Controls 返回所有控件,而不仅仅是 GroupBoxes。 OfType<T>扩展方法将集合过滤为您指定的类型。

关于c# - 这是如何抛出 InvalidCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13592546/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com