次のコードスニップは、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);
}
}
});
});
}
ExecuteSecureのコードは次のとおりです
private void ExecuteSecure(Action a)
{
if (InvokeRequired)
BeginInvoke(a);
else a();
}
基本的に、私は固定サイズのフォームとフォーム上のいくつかのグループボックスを持っていますが、どの時点でもそのうちの1つだけが表示されます。新しいGroupBoxを表示する必要がある場合は、DoSlide(GroupBox)を呼び出して、表示するグループボックスを指定します。次に、スライド(インクリメントまたはデクリメントされたbox.left)を表示する指定されたフォームを除いて、フォーム上のすべてのGroupBoxを場所(-Box.Width、27)に移動することになっています。