精华内容
下载资源
问答
  • C# winform窗体调用父窗体函数实现关闭该窗体打开一个窗体;在父窗体分From1内嵌一个panel1,在panel1里载入From2,点击在子窗体From2中的按钮,清除panel1里的From2,载入From3,点击在子窗体From3中的按钮...
  • WinForm 在子线程中打开一个新窗体

    千次阅读 2019-08-17 21:41:28
    项目中有个动作:打开一个窗体展示 FormToast toast = new FormToast(); toast.lblMsg.Text = str; toast.Show(); 大多数情况,直接在界面上(主线程)点击按钮的时候展示,没问题。 有些特殊情况,是在开的子...

    项目中有个动作:打开一个窗体展示

    FormToast toast = new FormToast();
    toast.lblMsg.Text = str;
    toast.Show();

    大多数情况,直接在界面上(主线程)点击按钮的时候展示,没问题。

    有些特殊情况,是在新开的子线程中要展示窗体,用上面的办法就不行了,窗体展示不全,像被挡住或卡住。

    网上找到了解决的办法:https://stackoverflow.com/questions/11995466/c-sharp-calling-form-show-from-another-thread

    本例的写法如下:

    public static void hint(Form parent, string str)
    {
        FormToast toast = new FormToast();
        parent.Invoke((MethodInvoker)delegate () {
            toast.lblMsg.Text = str;
            toast.Show();
        });
    }

    把当时的窗体(姑且称为“父窗体”)拿过来,使用invoke方法。

    问题解决。

    展开全文
  • 如果是启动窗体的话只有通过设置该窗体为隐藏,否则可以通过一下方法 在原窗体中:NewForm NewForm1= new NewForm(); //NewForm是已经建立好的一个窗体 NewForm1.Show(); this.Close();//this代表原来窗体 

    如果是启动窗体的话只有通过设置该窗体为隐藏,否则可以通过一下方法 

    在原窗体中:

    NewForm NewForm1=   new   NewForm();   //NewForm是已经建立好的一个类窗体
        
      NewForm1.Show();  
      this.Close();//this代表原来窗体 

    展开全文
  • C# Winform登录成功打开新窗体

    千次阅读 2012-05-15 11:02:21
    最近要做一个WinForm程序,需要想QQ那样登录成功后打开一个新窗体,同时关闭登录窗体。刚开始我是直接Form one=new Form();one.Show();this.Close();这样两个窗体都关闭了,因为是在主线程上面操作。(注意:如果是...

    最近要做一个WinForm程序,需要想QQ那样登录成功后打开一个新的窗体,同时关闭登录窗体。刚开始我是直接Form one=new Form();one.Show();this.Close();这样两个窗体都关闭了,因为是在主线程上面操作。(注意:如果是在其他线程上面使用该方法是可以实现的,但是在主线程无法实现).后来在网上差了资料,根据http://blog.csdn.net/knight94/article/details/652394这里的文章终于实现了我需要的功能。

    项目截图:

     

    UserInfo.cs代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace VideoWatch.AppCode
    {
        /// <summary>
        /// 用户登录信息
        /// </summary>
        public class UserInfo
        {
            private string strUserName;
            private string strPassword;
            /// <summary>
            /// 用户名称
            /// </summary>
            public string UserName
            {
                get { return strUserName; }
                set { strUserName = value; }
            }
            /// <summary>
            /// 用户密码
            /// </summary>
            public string Password
            {
                get { return strPassword; }
                set { strPassword = value; }
            }
            public UserInfo()
            {
                strUserName = "";
                strPassword = "";
            }
        }
    }


    LoginFrom.CS代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using VideoWatch.AppCode;
    
    namespace VideoWatch
    {
        public partial class LoginForm : Form
        {
            LoginForm loginForm = null;
    
            private int nLoginCount = 0;//登录次数
            private const int MAX_LOGIN_COUNT = 3;//限制只能登录三次
    
            private UserInfo uiLogin;//用户登录信息
    
            public LoginForm(ref UserInfo ui)
            {
                InitializeComponent();
                uiLogin = ui;
            }
    
            /// <summary>
            /// 登录程序
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnLogin_Click(object sender, EventArgs e)
            {
                if (txtUserName.Text == "Admin" && txtPassword.Text == "123456")
                {
                    // Save login user info
                    uiLogin.UserName = txtUserName.Text.Trim();
                    uiLogin.Password = txtPassword.Text.Trim();
    
                    // Set dialog result with OK
                    this.DialogResult = DialogResult.OK;
                }
                else
                {
                    // Wrong username or password
                    nLoginCount++;
                    if (nLoginCount == MAX_LOGIN_COUNT)
                        // Over 3 times
                        this.DialogResult = DialogResult.Cancel;
                    else
                    {
                        MessageBox.Show("Invalid user name and password!");
                        txtUserName.Focus();
                    }
                }
            }
    
            /// <summary>
            /// 退出程序
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnExit_Click(object sender, EventArgs e)
            {
                this.DialogResult = DialogResult.Cancel;
            }
    
            /// <summary>
            /// 窗体关闭
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void LoginForm_FormClosing(object sender, FormClosingEventArgs e)
            {
                // Check whether form is closed with dialog result
                if (this.DialogResult != DialogResult.Cancel &&
                    this.DialogResult != DialogResult.OK)
                    e.Cancel = true;
            }
    
        }
    }
    


    Program.cs代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows.Forms;
    using VideoWatch.AppCode;
    
    namespace VideoWatch
    {
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
    
                UserInfo ui = new UserInfo();//用户登录信息
                LoginForm myLogin = new LoginForm(ref ui);//加载登录窗体
                if (myLogin.ShowDialog() == DialogResult.OK)
                {
                    //Open your main form here
                    //MessageBox.Show("Logged in successfully!");
                    Application.Run(new MainForm());//如果登录成功则打开主窗体
                }
                else
                {
                    MessageBox.Show("Failed to logged in!");
                }
            }
        }
    }


    展开全文
  • 1、打开多个窗体 2、窗体之间的传值 ...3打开唯一窗体 ...Form1中btn1按钮点击show出Form2,当Form2...当Form2关闭后,再次点击btn1则会show出一个新的Form2; Form1: //创建一个全局集合,用来放置已经sho...

    1、打开多个窗体

     

     

     

     

    2、窗体之间的传值

     

     

     

     

     

    3打开唯一窗体

    Form1中btn1按钮点击show出Form2,当Form2处于开启状态时,再次点击btn1不会继续弹出窗体,而是将焦点定位至已开启的Form2上;
    当Form2关闭后,再次点击btn1则会show出一个新的Form2;

    Form1:

     //创建一个全局集合,用来放置已经show出的窗体对象
        List<Form> list = new List<Form>();
        
        //btn1点击事件:
        private void button1_Click(object sender, EventArgs e)
        {
            bool hasForm = false; //判断窗体是否已经弹出
            Form2 f2 = new Form2(); //实例化一个弹出窗体对象
            f2.Owner = this;     //将弹出对象的拥有者设置为当前窗体
            
            if (list.Count > 0) //如果集合中有元素
            {
                foreach (Form f in list) //遍历它们
                {
                    if (f.Name == f2.Name) //如果要弹出的窗体对象已经存在
                    {
                        hasForm = true; //表示已经弹出
                        f.Focus();     //焦点定位已经弹出的窗口
                    }
                }
            }
    
            if (hasForm) //当前已经有窗口弹出
            {
                f2.Close(); //把新实例化的窗体对象给释放掉
            }
            else //如果没有窗口弹出
            {
                list.Add(f2);  //将新窗体添加进集合
                f2.Show();  //弹出窗体
            }
        }

     

    此时窗体已经可以弹出唯一了,但是当窗体关闭后就无法再次弹出了;
    此时需要在Form1中写一个方法,并且在弹出窗口的FormClosing事件中调用这个方法;

    //Form1中的方法:
        public void _Remove(Form f)
        {
            if (list.Contains(f))
            {
                list.Remove(f);
            }
        }
        
        //弹出窗口Form2中调用:
        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (this.Owner is Form1)
            {
                (this.Owner as Form1)._Remove(this);
            }
        }

     

    转载于:https://www.cnblogs.com/Tanghongchang/p/6812479.html

    展开全文
  • 最近要做一个对接WebForm的柜台操作Winform的程序,在登陆窗体时因为要传递用户一些信息到后面窗体,所以试了下这个方法。 在入口方法中逻辑如下: Code///<summary>///应用程序的主入口点。///</...
  • WinForms 应用程序中想要后台打开一个新窗体,而不(抢焦)、(遮挡)目前窗体。 需要注意的是,SW_SHOWNOACTIVATE打开的“不抢焦”窗体,是不会执行 Shown 和 Load。一定要注意!放置首页,如文章质量不够,有劳...
  • 窗口非旧窗口的子窗体时: 使用模态窗口,占用当前活动窗口(置顶) //在旧窗口中的合适位置写这些代码 NewForm fm=new NewForm() //隐藏现在这窗口 this.Hide(); //窗口显现 fm....
  • 场景 在Winform窗体A中打开一个窗体B。 实现 //打开新窗体 CurveCompare cc = new CurveCompare(); cc.Show(); 效果 以上代码的实现参照: ......
  • 在写Winform程序的时候,经常会遇到“打开一个新窗体然后关闭本窗体”之类的问题。最常见的就是登陆界面和主窗体了。而最常见的处理方法就是表单判断正确后 new MainForm().Show(); private void btnLogin_...
  • 1、网上流传最广的应该是隐藏法了,原理就是把旧窗口隐藏掉,再打开新窗口。...//新建一个NewForm窗口(NewForm是自己定义的Form) NewForm fm=new NewForm() this.Hide(); //隐藏现在这个窗口 fm.Show();...
  • winform个窗体的切换

    万次阅读 2016-04-19 14:26:07
    就是点击一个窗体的button打开一个新的窗体,旧窗体隐藏。点击新窗体的button回到旧窗体,新窗体隐藏。 可以用父子窗体实现。现在介绍另一种简单方法: 旧窗体button代码: private void button2_Click(object ...
  • 通过按钮事件定义了一个开窗口的操作,每次点击按钮就会弹出窗口,但是多次点击会出现多个相同的窗口,这样的对于之后的处理不方便,也不利于用户的使用体验,所以就需要在点击按钮时判断窗体是否已经存在,存在则...
  • Winform唯一窗体

    2019-09-30 13:27:52
    每次当打开新窗体的时候,原先的窗体没有关闭,我们把它存在了一个集合里,判断这个集合里是否有这个窗体,建立的集合,当删除你新打开窗体时,只是把后台删了,但集合里还是有这个窗体,这时再打开新窗体时...
  • C# Winform点击按钮打开新窗口

    千次阅读 2020-03-07 15:38:39
    在Windows窗体form1中创建一个按钮,命名为button1,然后再对项目进行右键选择添加一个Windows窗体,命名为form2。 button1的点击事件的方法为: private void button1_Click(object sender, EventArgs e) { ...
  • winform唯一窗体

    2017-08-03 11:16:00
    每次当你打开新窗体的时候,原先的窗体没有关闭,我们把它存在了一个集合里,判断这个集合里是否有这个窗体,建立的集合,当你删除你新打开窗体时,只是把后台删了,但集合里还是有这个窗体,这时你再打开新的...
  • 在项目中需要实现主窗体点击按钮后打开子窗体,但是如果不限制的话每次点击都会打开一个新窗体,用户体验不好还浪费内存。所以这里要做的是限制每个子窗体只可以打开一次,如果打开后没有关闭子窗体或者子窗体被最小...
  • <br />1、网上流传最广的...//新建一个NewForm窗口(NewForm是自己定义的Form)  NewForm fm=new NewForm()   //隐藏现在这个窗口  this.Hide();  //窗口显现  fm.Show();<b
  • 我们在做winform时会有一个非常常见的功能,比如有一个专门用来登陆的窗体,一般来说登陆的窗体点击登陆后会关闭当前登陆的这个窗体打开程序的主窗体。如果直接想的话就会写出private void btnLogin_Click(object ...
  • 1、网上流传最广的应该是隐藏法了... 具体的代码如下://在旧窗口中的合适位置写这些代码//新建一个NewForm窗口(NewForm是自己定义的Form) NewForm fm=new NewForm() this.Hide(); //隐藏现在这个窗口 fm.Show();...
  • 我们在做winform时会有一个非常常见的功能,比如有一个专门用来登陆的窗体,一般来说登陆的窗体点击登陆后会关闭当前登陆的这个窗体打开程序的主窗体。如果直接想的话就会写出private 新手的一般会这么想,但是实际...
  • C#实现在线程中打开新窗体

    万次阅读 多人点赞 2012-11-20 19:43:20
    首先,我们们在主窗体中点击一个按钮打开一个新窗体时,这个新窗体是否是一个新的线程中打开的呢?于是做个试验测试代码如下: Form.cs using System; using System.Collections.Generic; using System.Component...
  • Winform的窗体涉及到一般窗体(单文档窗体)、MDI窗体、窗体之间的关系等,那么如果调用打开新窗体、如何关闭窗体、窗体资源的释放等都关系到软件运行的效率,本文一一介绍 1、窗体的显示 从一个窗体打开一个...
  • 一个程序打开有个登陆按钮点击打开登录界面登录成功之后又弹出一个界面,问一下怎样实现弹出登录后界面之后关闭前面两个窗体 我是这样实现的 第一个Form窗体中: form1 fr1=new form(); fr1.show(); 第二个Form...
  • c#打开新窗体后关闭旧窗体

    千次阅读 2013-06-28 01:45:01
    当用户输入正确,登陆的时候,new出一个想显示的窗口,然后show这个新窗口对象,在将当前窗体this,close掉 这一切看起来貌似合理正常,可就是没有显示,原因我相信大家马上就找到了,对就是父窗体都不在了(执行了...

空空如也

空空如也

1 2 3 4 5
收藏数 92
精华内容 36
关键字:

winform打开一个新窗体