C# 点击一个按钮新建一个窗体 但又不关闭原来的窗体

时间:2022-08-30 22:36:36
C# 新建一个窗体Form1 放一个button1,点击button1,弹出新窗体Form2,但Form1又不关闭

42 个解决方案

#1


Form2 form2=new Form2();
form2.showdialog();

#2


(new Form2()).Show(this);

#3



            Form2 f2 = new Form2();
            //f2.Show();//显示
            //f2.ShowDialog();//模态显示


默认情况Form1都是不会关闭的。

#4


我见过 问打开一个窗体关闭原来窗体的 还真没有见过你这样问的
new Form2().Show();

#5


这是啥问题哦

#6


C# 点击一个按钮新建一个窗体 但又不关闭原来的窗体

#7


到底是要form1关闭还是不关闭?
如果是想form1在点击button1后弹出form2并且关闭form1。可以在按钮事件里面show完form2后关闭form1,如果form1是程序主窗体的话就不能关闭,可以用form1.Visible= false;

#8


form1不关闭!

#9


我将楼上所有代码都试过了,根本行不通。我只是想在form1上放一个button1,单击后弹出另外一个窗体form2,很难理解吗?

#10


呵呵 这贴*了  lz 知道什么是 事件 么你btn的事件加了没?

#11


这不是很简单么

#12


啥都不懂就别来问问题,这是CSDN,不是智障儿童救助中心。

#13


如果是winfrom的直接show出来都不会关闭父窗体的。。

#14


我怀疑楼主没有构造一个FORM2,所以他试了楼上的代码都没用。。。。

#15


winform下面你直接show就会弹出新窗体的。

#16


把form1隐藏就可以了嘛

#17


引用 9 楼  的回复:
我将楼上所有代码都试过了,根本行不通。我只是想在form1上放一个button1,单击后弹出另外一个窗体form2,很难理解吗?


是你自己不知道你在问什么,只要自己不关闭form1,你新弹出窗口,form1根本不会关闭,所以你没有问的必要。。。

#18


- -莫非想动态的show出Form2?
Form form2 = new Form();
form2.Show();

#19


C# 点击一个按钮新建一个窗体 但又不关闭原来的窗体

估计是2次修改,看不懂别人的code

说对了,请鼓掌

#20


protected void button1_Click(object sender ,EventArgs e)
{
   Form2 form2=new Form2();
   form2.Showdialog(); 
   或
   form2.Show();

   //this.Hide();

}

#21


好简单的问题,这是我3年前不懂事学的内容

#22


这话说的对,赞一个
引用 17 楼  的回复:
引用 9 楼  的回复:
我将楼上所有代码都试过了,根本行不通。我只是想在form1上放一个button1,单击后弹出另外一个窗体form2,很难理解吗?


是你自己不知道你在问什么,只要自己不关闭form1,你新弹出窗口,form1根本不会关闭,所以你没有问的必要。。。

#23


引用 12 楼  的回复:
啥都不懂就别来问问题,这是CSDN,不是智障儿童救助中心。


CSDN就不允许菜鸟发问了? 我们菜鸟只能回答这些问题了。没人问那我只能看了。。

#24


这种贴子要顶啊!

#25


Form form2 = new Form();
form2.Show();
这种帖子要顶啊,
接分啊

#26


好吧 我开始还以为楼主的btn1不在from1上 。
看了半天,发现。。。没什么发现。
form1 你不关 它自己是不会关的

#27


Form2 f2=new Form2();
this.Visible=false;
f2.Show();

#28


给button1写一个事件响应程序,在button1的properties里,设置event里面的click事件为你写的那个事件名字就可以了(我这里用的是button1_click)。我很菜,刚开始学C#,希望能帮到楼主 
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_click(object sender, EventArgs ea)
        {
            Form form2 = new Form();
            form2.Show();
        }
    }

#29


顺便再补充个菜鸟回复。。。在Form1上加按钮只需在Form1.cs[Design]里面,从左边的工具栏里拖放一个按钮到Form1的界面上就可以了。。。按钮的各种属性都可以右键点击,选择Properties,在里面各种设置。。。。各位大大不要喷我回答的低级啊。。。我是新人、、、

#30


还有这样的?不都是的吗?

#31


楼主是要动态建立窗体么

#32


元芳,你怎么看???

#33


引用 12 楼  的回复:
啥都不懂就别来问问题,这是CSDN,不是智障儿童救助中心。

我发现你是不是在CSDN待久了待出优越感啦  人家不懂就问很正常 我看了你回复的许多帖子  回答技术的很少 就爱喷人  就算你技术牛B  我不相信你生下来就牛B的  不也是慢慢学了 人家就是不懂才问啊  懂还问个屁啊  你要嫌人家问的水平没技术你就别回就是咯 

#34


引用 33 楼  的回复:
引用 12 楼  的回复:

啥都不懂就别来问问题,这是CSDN,不是智障儿童救助中心。

我发现你是不是在CSDN待久了待出优越感啦  人家不懂就问很正常 我看了你回复的许多帖子  回答技术的很少 就爱喷人  就算你技术牛B  我不相信你生下来就牛B的  不也是慢慢学了 人家就是不懂才问啊  懂还问个屁啊  你要嫌人家问的水平没技术你就别回就是咯

先学会问问题再来问问题,自己问的是什么的东西自己都不知道就发帖来求助,除了耽误双方的时间没有任何实际意义。发帖人既得不到帮助,回贴人也没什么成就感。
有兴趣的话看看如下内容
http://www.beiww.com/doc/oss/smart-questions.html

#35




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using System.IO;
using System.Runtime.Serialization;

namespace 将数组转成xml读取
{
    class Program
    {
        static void Main(string[] args)
        {
            Person[] o = Init().ToArray();
            ///
            /// 此处可理解成:
            /// 要转化的对象是什么类型,以转化格式的时候按此类型格式进行转化
            Type type = o.GetType();

            //string a = type.FullName;
            string path = Directory.GetCurrentDirectory()+@"\test.xml";
            WriteXmlSerializer(type, o,path);
            ReadeXmlSerializer(type,path);


        }
        /// <summary>
        /// 读取XML,并将其转化成数组
        /// </summary>
        /// <param name="type"></param>
        private static void ReadeXmlSerializer(Type type,string path)
        {
            string temp = "";
            Person[] o = new Person[10];
            //模拟读取数据库数据
            FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
            StreamReader sr = new StreamReader(fs, Encoding.UTF8);
            temp = sr.ReadToEnd();

            //将xml转成object[]
            XmlSerializer xml = new XmlSerializer(type);
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(temp)))
            {
                try
                {
                    o = (Person[])xml.Deserialize(ms);
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }
        /// <summary>
        /// 将数组转化成XML,
        /// </summary>
        /// <param name="type"></param>
        /// <param name="o"></param>
        private static void WriteXmlSerializer(Type type, Person[] o, string path)
        {
            string temp = "";
            DataContractSerializer dcs = new DataContractSerializer(type);
            using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
            {
                using (System.Xml.XmlWriter xw = System.Xml.XmlWriter.Create(ms))
                {
                    dcs.WriteObject(xw,o);
                }
                ms.Position = 0;
                temp = System.Xml.Linq.XElement.Load(ms).ToString();
            }
        }
        /// <summary>
        /// 初使化学生集合
        /// </summary>
        /// <returns></returns>
        private static List<Person> Init()
        {
            List<Person> students = new List<Person>();

            Student s0 = new Student { id = 1, name = "张三", sex = false, age = 12, address = "aaaaa" };
            Student s1 = new Student { id = 2, name = "李四", sex = true, age = 22, address = "bbbbbb" };
            Student s2 = new Student { id = 8, name = "王五", sex = false, age = 16, address = "cccc" };
            Student s3 = new Student { id = 14, name = "赵六", sex = true, age = 14, address = "ddddd" };
            Student s4 = new Student { id = 6, name = "二麻子", sex = true, age = 32, address = "eeeee" };
            Student s5 = new Student { id = 3, name = "w", sex = false, age = 26, address = "gggggg" };
            Student s6 = new Student { id = 10, name = "fgg", sex = false, age = 22, address = "jjjjj" };
            Student s7 = new Student { id = 4, name = "qq", sex = true, age = 23, address = "wwwww" };

            Teacher t1 = new Teacher() { Id = 1, Name = "aaa", Sex = false };
            Teacher t2 = new Teacher() { Id = 2, Name = "bbb", Sex = true };
            Teacher t3 = new Teacher() { Id = 3, Name = "ccc", Sex = true };
         
            students.Add(s0);
            students.Add(s1);
            students.Add(s2);
            students.Add(s3);
            students.Add(s4);
            students.Add(s5);
            students.Add(s6);
            students.Add(s7);

            students.Add(t1);
            students.Add(t2);
            students.Add(t3);
            return students;
        }        


#36


不好意思 贴错了。。。

#37


这个问题,牛,按钮click事件里家form2.show()不久行了

#38


直接show()一下就行了,默认是不会关闭原窗体的。

#39


你是要关还是不关? 说清楚点啊

#40


如果在form1中 按下button按钮 出现form2窗体  
可以这样写
在form1中的page_load下
form2 frm = new form2();
frm.show();
或者frm.showdialog();

你还可以用父子窗体功能

#41


引用 40 楼 changtianyi 的回复:
如果在form1中 按下button按钮 出现form2窗体  
可以这样写
在form1中的page_load下
form2 frm = new form2();
frm.show();
或者frm.showdialog();

你还可以用父子窗体功能



是在button1_click下写的上些代码  这样一点按钮就行了

#42


该回复于2015-01-07 12:51:02被管理员删除

#1


Form2 form2=new Form2();
form2.showdialog();

#2


(new Form2()).Show(this);

#3



            Form2 f2 = new Form2();
            //f2.Show();//显示
            //f2.ShowDialog();//模态显示


默认情况Form1都是不会关闭的。

#4


我见过 问打开一个窗体关闭原来窗体的 还真没有见过你这样问的
new Form2().Show();

#5


这是啥问题哦

#6


C# 点击一个按钮新建一个窗体 但又不关闭原来的窗体

#7


到底是要form1关闭还是不关闭?
如果是想form1在点击button1后弹出form2并且关闭form1。可以在按钮事件里面show完form2后关闭form1,如果form1是程序主窗体的话就不能关闭,可以用form1.Visible= false;

#8


form1不关闭!

#9


我将楼上所有代码都试过了,根本行不通。我只是想在form1上放一个button1,单击后弹出另外一个窗体form2,很难理解吗?

#10


呵呵 这贴*了  lz 知道什么是 事件 么你btn的事件加了没?

#11


这不是很简单么

#12


啥都不懂就别来问问题,这是CSDN,不是智障儿童救助中心。

#13


如果是winfrom的直接show出来都不会关闭父窗体的。。

#14


我怀疑楼主没有构造一个FORM2,所以他试了楼上的代码都没用。。。。

#15


winform下面你直接show就会弹出新窗体的。

#16


把form1隐藏就可以了嘛

#17


引用 9 楼  的回复:
我将楼上所有代码都试过了,根本行不通。我只是想在form1上放一个button1,单击后弹出另外一个窗体form2,很难理解吗?


是你自己不知道你在问什么,只要自己不关闭form1,你新弹出窗口,form1根本不会关闭,所以你没有问的必要。。。

#18


- -莫非想动态的show出Form2?
Form form2 = new Form();
form2.Show();

#19


C# 点击一个按钮新建一个窗体 但又不关闭原来的窗体

估计是2次修改,看不懂别人的code

说对了,请鼓掌

#20


protected void button1_Click(object sender ,EventArgs e)
{
   Form2 form2=new Form2();
   form2.Showdialog(); 
   或
   form2.Show();

   //this.Hide();

}

#21


好简单的问题,这是我3年前不懂事学的内容

#22


这话说的对,赞一个
引用 17 楼  的回复:
引用 9 楼  的回复:
我将楼上所有代码都试过了,根本行不通。我只是想在form1上放一个button1,单击后弹出另外一个窗体form2,很难理解吗?


是你自己不知道你在问什么,只要自己不关闭form1,你新弹出窗口,form1根本不会关闭,所以你没有问的必要。。。

#23


引用 12 楼  的回复:
啥都不懂就别来问问题,这是CSDN,不是智障儿童救助中心。


CSDN就不允许菜鸟发问了? 我们菜鸟只能回答这些问题了。没人问那我只能看了。。

#24


这种贴子要顶啊!

#25


Form form2 = new Form();
form2.Show();
这种帖子要顶啊,
接分啊

#26


好吧 我开始还以为楼主的btn1不在from1上 。
看了半天,发现。。。没什么发现。
form1 你不关 它自己是不会关的

#27


Form2 f2=new Form2();
this.Visible=false;
f2.Show();

#28


给button1写一个事件响应程序,在button1的properties里,设置event里面的click事件为你写的那个事件名字就可以了(我这里用的是button1_click)。我很菜,刚开始学C#,希望能帮到楼主 
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_click(object sender, EventArgs ea)
        {
            Form form2 = new Form();
            form2.Show();
        }
    }

#29


顺便再补充个菜鸟回复。。。在Form1上加按钮只需在Form1.cs[Design]里面,从左边的工具栏里拖放一个按钮到Form1的界面上就可以了。。。按钮的各种属性都可以右键点击,选择Properties,在里面各种设置。。。。各位大大不要喷我回答的低级啊。。。我是新人、、、

#30


还有这样的?不都是的吗?

#31


楼主是要动态建立窗体么

#32


元芳,你怎么看???

#33


引用 12 楼  的回复:
啥都不懂就别来问问题,这是CSDN,不是智障儿童救助中心。

我发现你是不是在CSDN待久了待出优越感啦  人家不懂就问很正常 我看了你回复的许多帖子  回答技术的很少 就爱喷人  就算你技术牛B  我不相信你生下来就牛B的  不也是慢慢学了 人家就是不懂才问啊  懂还问个屁啊  你要嫌人家问的水平没技术你就别回就是咯 

#34


引用 33 楼  的回复:
引用 12 楼  的回复:

啥都不懂就别来问问题,这是CSDN,不是智障儿童救助中心。

我发现你是不是在CSDN待久了待出优越感啦  人家不懂就问很正常 我看了你回复的许多帖子  回答技术的很少 就爱喷人  就算你技术牛B  我不相信你生下来就牛B的  不也是慢慢学了 人家就是不懂才问啊  懂还问个屁啊  你要嫌人家问的水平没技术你就别回就是咯

先学会问问题再来问问题,自己问的是什么的东西自己都不知道就发帖来求助,除了耽误双方的时间没有任何实际意义。发帖人既得不到帮助,回贴人也没什么成就感。
有兴趣的话看看如下内容
http://www.beiww.com/doc/oss/smart-questions.html

#35




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using System.IO;
using System.Runtime.Serialization;

namespace 将数组转成xml读取
{
    class Program
    {
        static void Main(string[] args)
        {
            Person[] o = Init().ToArray();
            ///
            /// 此处可理解成:
            /// 要转化的对象是什么类型,以转化格式的时候按此类型格式进行转化
            Type type = o.GetType();

            //string a = type.FullName;
            string path = Directory.GetCurrentDirectory()+@"\test.xml";
            WriteXmlSerializer(type, o,path);
            ReadeXmlSerializer(type,path);


        }
        /// <summary>
        /// 读取XML,并将其转化成数组
        /// </summary>
        /// <param name="type"></param>
        private static void ReadeXmlSerializer(Type type,string path)
        {
            string temp = "";
            Person[] o = new Person[10];
            //模拟读取数据库数据
            FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
            StreamReader sr = new StreamReader(fs, Encoding.UTF8);
            temp = sr.ReadToEnd();

            //将xml转成object[]
            XmlSerializer xml = new XmlSerializer(type);
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(temp)))
            {
                try
                {
                    o = (Person[])xml.Deserialize(ms);
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }
        /// <summary>
        /// 将数组转化成XML,
        /// </summary>
        /// <param name="type"></param>
        /// <param name="o"></param>
        private static void WriteXmlSerializer(Type type, Person[] o, string path)
        {
            string temp = "";
            DataContractSerializer dcs = new DataContractSerializer(type);
            using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
            {
                using (System.Xml.XmlWriter xw = System.Xml.XmlWriter.Create(ms))
                {
                    dcs.WriteObject(xw,o);
                }
                ms.Position = 0;
                temp = System.Xml.Linq.XElement.Load(ms).ToString();
            }
        }
        /// <summary>
        /// 初使化学生集合
        /// </summary>
        /// <returns></returns>
        private static List<Person> Init()
        {
            List<Person> students = new List<Person>();

            Student s0 = new Student { id = 1, name = "张三", sex = false, age = 12, address = "aaaaa" };
            Student s1 = new Student { id = 2, name = "李四", sex = true, age = 22, address = "bbbbbb" };
            Student s2 = new Student { id = 8, name = "王五", sex = false, age = 16, address = "cccc" };
            Student s3 = new Student { id = 14, name = "赵六", sex = true, age = 14, address = "ddddd" };
            Student s4 = new Student { id = 6, name = "二麻子", sex = true, age = 32, address = "eeeee" };
            Student s5 = new Student { id = 3, name = "w", sex = false, age = 26, address = "gggggg" };
            Student s6 = new Student { id = 10, name = "fgg", sex = false, age = 22, address = "jjjjj" };
            Student s7 = new Student { id = 4, name = "qq", sex = true, age = 23, address = "wwwww" };

            Teacher t1 = new Teacher() { Id = 1, Name = "aaa", Sex = false };
            Teacher t2 = new Teacher() { Id = 2, Name = "bbb", Sex = true };
            Teacher t3 = new Teacher() { Id = 3, Name = "ccc", Sex = true };
         
            students.Add(s0);
            students.Add(s1);
            students.Add(s2);
            students.Add(s3);
            students.Add(s4);
            students.Add(s5);
            students.Add(s6);
            students.Add(s7);

            students.Add(t1);
            students.Add(t2);
            students.Add(t3);
            return students;
        }        


#36


不好意思 贴错了。。。

#37


这个问题,牛,按钮click事件里家form2.show()不久行了

#38


直接show()一下就行了,默认是不会关闭原窗体的。

#39


你是要关还是不关? 说清楚点啊

#40


如果在form1中 按下button按钮 出现form2窗体  
可以这样写
在form1中的page_load下
form2 frm = new form2();
frm.show();
或者frm.showdialog();

你还可以用父子窗体功能

#41


引用 40 楼 changtianyi 的回复:
如果在form1中 按下button按钮 出现form2窗体  
可以这样写
在form1中的page_load下
form2 frm = new form2();
frm.show();
或者frm.showdialog();

你还可以用父子窗体功能



是在button1_click下写的上些代码  这样一点按钮就行了

#42


该回复于2015-01-07 12:51:02被管理员删除