Ich habe eine C# WinForms App mit einem Toolstrip-Button und zwei MDI ChildForms namens "frmMultiCategoryProject"
und "frmTiebreaker"
. Im Ereignis Click()
der Tooltrip-Schaltfläche treten je nach der Eigenschaft Text der Tooltrip-Schaltfläche unterschiedliche Aktionen auf.C# WinForms System.InvalidCastException
Hier ist der Code:
private void tsbtnAddShowTiebreaker_Click(object sender, EventArgs e)
{
if (tsbtnAddShowTiebreaker.Text == "Add Tiebreaker" || tsbtnAddShowTiebreaker.Text == "Show Tiebreaker")
{
foreach (frmMultiCategoryProject frmamdic in this.MdiChildren)
{
frmamdic.SendToBack();
frmamdic.Hide();
frmamdic.Visible = false;
}
frmTiebreaker frmTB = new frmTiebreaker(Tiebreaker);
frmTB.MdiParent = this;
frmTB.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
frmTB.Dock = DockStyle.Fill;
frmTB.Show();
tsbtnCloseProject.Visible = true;
frmTB.BringToFront();
tsbtnAddShowTiebreaker.Text = "Hide Tiebreaker";
}
else if (tsbtnAddShowTiebreaker.Text == "Hide Tiebreaker")
{
string strMdiChildren = "";
foreach (frmTiebreaker frmTB in this.MdiChildren) // This is where the InvalidCastException occurs.
{
strMdiChildren += frmTB.Name.ToString() + "\r\n";
this.Tiebreaker = frmTB.Tiebreaker;
frmTB.Dispose();
}
foreach (frmMultiCategoryProject frmamdic in this.MdiChildren)
{
frmamdic.BringToFront();
frmamdic.Show();
}
tsbtnAddShowTiebreaker.Text = "Show Tiebreaker";
}
}
Und hier ist das Problem (frmMain.cs: Linie 2359 der mit dem Kommentar ist):
System.InvalidCastException was unhandled
HResult=-2147467262
Message=Unable to cast object of type 'Trivia_Author_v20.frmMultiCategoryProject' to type 'Trivia_Author_v20.frmTiebreaker'.
Source=Trivia Author v20
StackTrace:
at Trivia_Author_v20.frmMain.tsbtnAddShowTBIsClicked() in c:\Users\Reuben\Documents\Visual Studio 2013\TRIVIA AUTHOR SUITE V20 PROJECTS 2\TAS v20 frmTB 2\Trivia Author v10 New Approach\frmMain.cs:line 2359
at Trivia_Author_v20.frmMain.tsbtnAddShowTiebreaker_Click(Object sender, EventArgs e) in c:\Users\Reuben\Documents\Visual Studio 2013\TRIVIA AUTHOR SUITE V20 PROJECTS 2\TAS v20 frmTB 2\Trivia Author v10 New Approach\frmMain.cs:line 2256
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Trivia_Author_v20.Program.Main(String[] args) in c:\Users\Reuben\Documents\Visual Studio 2013\TRIVIA AUTHOR SUITE V20 PROJECTS 2\TAS v20 frmTB 2\Trivia Author v10 New Approach\Program.cs:line 116
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel)
at System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()
at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData)
at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext)
at System.Activator.CreateInstance(ActivationContext activationContext)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
Warum kann mein Code nicht sagen, welche Art von der Form, mit der es sich in jedem Moment beschäftigt?
Vielen Dank, SLaks! Diese Frage und meine Gebete wurden beantwortet! – manicdrummer