1、问题出在这个赋值语句上面:
Form1 myForm = new Form4();
myForm是Form1类型的变量,给它赋值一个Form4类型的实例,又没有相应类型转换操作,就会出现“无法隐式转换类的错误”。
改正的方法:
Form1 myForm = new Form1();
或
Form4 myForm = new Form4();
2、C#类型转换:
C#不同类型变量之间不充许直接赋值,但是可以通过类型转换来解决这一问题。
如字符串赋值给整型变量的类型转换:
int num = int.Parse("123"); int num1 = Convert.ToInt32("234");
题中如果Form1和Form4是各自独立的类型,那么按上面改正即可。
特例是如果Form1是Form4的父类,这种情况可以通过强制类型转换来解决问题。
Form1 myForm = (Form1) new Form4();
扩展资料:
在 C# 中,可以执行以下几种类型的转换:
1、隐式转换:由于该转换是一种类型安全的转换,不会导致数据丢失,因此不需要任何特殊的语法。 示例包括从较小整数类型到较大整数类型的转换以及从派生类到基类的转换。
2、显式转换(强制转换):显式转换需要强制转换运算符。 在转换中可能丢失信息时或在出于其他原因转换可能不成功时,必须进行强制转换。 典型的示例包括从数值到精度较低或范围较小的类型的转换和从基类实例到派生类的转换。
3、用户定义的转换:可以定义一些特殊的方法来执行用户定义的转换,使不具有基类和派生类关系的自定义类型之间可以显式和隐式转换。 有关详细信息,请参阅转换运算符。
4、使用帮助程序类进行转换:若要在非兼容类型之间转换(例如整数和 System.DateTime 对象之间,或十六进制字符串和字节数组之间),可使用 System.BitConverter 类、System.Convert 类和内置数值类型的 Parse 方法(例如 Int32.Parse)。
参考资料:
microsoft.Docs C#类型转换
弹出Form1:
private void button5_Click(object sender, EventArgs e)
{
Form1 myForm = new Form1()
myForm.ShowDialog();
}
弹出Form4:
private void button5_Click(object sender, EventArgs e)
{
Form4 myForm = new Form4();
myForm.ShowDialog();
}
有弹出就有关闭,想要关闭窗体的话可以这样
1、close():指仅关闭当前窗体,如果不是主窗体(包含主线程的窗体,并非MDI窗体)的话,是无法退出整个程序的。如果有托管线程也无法退出。
此方法会调用 dispose() 方法,所以它会自动的帮我们释放内存,除了该窗体是多文档应用程序(MDI)的一部分并且此窗体不可见或此窗体是“模态”窗体。
close() 方法执行的时候会触发两个事件:
Form_Closing 和 Form_Closeed 事件,Form_Closing 是在窗体关闭时执行,Form_Closed 是在窗体关闭之后执行,所以如果想取消关闭窗体,可以在 Form_Closing 事件里取消。
2、Application.Exit(): 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出。
3、Application.ExitThread(): 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题。
4、System.Environment.Exit(0); 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。 参数0:代表程序正常退出;参数1:代表程序非正常退出。
Form1和Form4是两个不同的窗体,不可以用Form4去创建Form1
代码:
弹出Form1:
private void button5_Click(object sender, EventArgs e)
{
Form1 myForm = new Form1();
myForm.ShowDialog();
}
弹出Form4:
private void button5_Click(object sender, EventArgs e)
{
Form4 myForm = new Form4();
myForm.ShowDialog();
}
你弹出另外一个窗体,至少你也要等号前后的类型一致啊。。
你后面的ShowDialog();就已经是弹出一个窗体了。。还可以用show弹出窗体的。。只不过第一个是模式对话框,后面一个是非模式对话框的。
Form1 和Form4 不是同一类型,不能这样写
Form1 myForm = new Form1();
或
Form4 myForm = new Form4();