C#点击button如何弹出里一个窗体

用这个代码privatevoidbutton5_Click(objectsender,EventArgse){Form1myForm=newForm4();myForm.... 用这个代码
private void button5_Click(object sender, EventArgs e)
{
Form1 myForm = new Form4();
myForm.ShowDialog();
}
提示错误

无法将类型“中国历史数据库.Form4”隐式转换为“中国历史数据库.Form1”
展开
 我来答
乐海白35
推荐于2019-10-07 · TA获得超过284个赞
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

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#类型转换



大野瘦子
高粉答主

推荐于2019-10-06 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:33.1万
展开全部

弹出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:代表程序非正常退出。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
妖蚊舞双拳
推荐于2017-11-24
知道答主
回答量:10
采纳率:0%
帮助的人:2.7万
展开全部
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();
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
surplushaode
2011-05-27 · TA获得超过2055个赞
知道大有可为答主
回答量:2510
采纳率:0%
帮助的人:2368万
展开全部
你弹出另外一个窗体,至少你也要等号前后的类型一致啊。。
你后面的ShowDialog();就已经是弹出一个窗体了。。还可以用show弹出窗体的。。只不过第一个是模式对话框,后面一个是非模式对话框的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jzlxiaohei
2011-05-27
知道答主
回答量:9
采纳率:0%
帮助的人:9万
展开全部
Form1 和Form4 不是同一类型,不能这样写
Form1 myForm = new Form1();

Form4 myForm = new Form4();
追问
可是我的确想弹出另外一个窗体怎么办呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式