Wjd*_*is5 1 .net c# anonymous-methods
以下代码片段在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);
}
}
});
});
}
Run Code Online (Sandbox Code Playgroud)
这是Execute Secure的代码
private void ExecuteSecure(Action a)
{
if (InvokeRequired)
BeginInvoke(a);
else a();
}
Run Code Online (Sandbox Code Playgroud)
基本上我有一个固定大小的表单和表单上的几个组框,其中只有一个在任何给定点可见.当我们需要创建一个新的GroupBox时,我们调用DoSlide(GroupBox)并指定我们想要显示的组框.然后它应该将窗体上的每个GroupBox移动到位置(-Box.Width,27),除了指定的窗体(滑动(递增或递减box.left)到视图中).
Joh*_*aft 11
你想用
this.Controls.OfType<GroupBox>()
Run Code Online (Sandbox Code Playgroud)
在你的foreach.This.Controls返回所有控件,而不仅仅是GroupBoxes.该OfType<T>扩展方法过滤收集到您指定的类型.
| 归档时间: |
|
| 查看次数: |
507 次 |
| 最近记录: |