Winform 中有关Form1、Form2两个窗体简单变量的使用

本文介绍如何在Winform应用程序中实现Form1登录界面与Form2主界面间的用户名和密码传递,通过静态变量和对话框结果进行控制流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

、Winform中有两个窗口Form1、Form2,运行过程中Form1操作完就关闭,只显示form2主窗口,以及Form2中使用Form1中变量的问题:

  1.首先在Form1中,从工具箱中拖两个“label控件”,命名为:txtuser(用户名)和txtpwd(密码),两个TextBox、命名为:txtUser.Text、txtPwd.Text,两个Button,命名为btnLog、btnCancel方法如下:

   public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();      
        }
        public static string User= this.txtUser.Text
        public static string Pwd= this.txtPwd.Text;
        private void btnLog_Click(object sender, EventArgs e)

       {

            User = this.txtUser.Text;
            Pwd = this.txtPwd.Text;

                  .......

                   this.DialogResult = DialogResult.OK;  

      }       

         private void btnCancel_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.Cancel;
        }

   }

2. Form2中也做一下定义:

   public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
          
        }
        public static string User = Form1.User;
        public static string Pwd = Form1.Pwd ;   

    }

3.应用程序的主入口点 Main()中,做如下更改:

 

static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //登录成功后,关闭登录窗口
            Form1 fm1=new Form1 ();
            if (fm1.ShowDialog() == DialogResult.OK)
            {
                Application.Run(new Form2());

            }   
        }
    }

以上方法即是对两个窗口的简单操作!

 

 

要设置`Form1`为父窗体并创建一个响应`Button1`点击事件以打开子窗体`Form2`,你可以按照以下步骤进行: 1. **添加`Button1`到`Form1`**: 在`Form1`的设计视图中,找到工具箱,拖拽一个`Button`控件到设计区域。双击该按钮以编辑其`Click`事件。 ```csharp // 在Form1.cs文件中,添加对Button1的引用 private Button button1; public Form1() { InitializeComponent(); // 初始化button1 button1 = new Button(); button1.Text = "Open Form2"; // 设置按钮文字 // 添加点击事件处理器 button1.Click += Button1_Click; } ``` 2. **编写`Button1_Click`事件处理器**: - 在`Form1`的构造器完成之后,添加`Button1_Click`事件的处理逻辑,当点击时关闭当前窗口并打开子窗体`Form2`。 ```csharp private void Button1_Click(object sender, EventArgs e) { this.Close(); // 关闭当前父窗体 Form2 form2 = new Form2(); // 创建一个新的Form2实例 form2.ShowDialog(); // 使用ShowDialog方法显示子窗体 } ``` 3. **在`Form2`中接收或影响`Form1`**: 当在`Form2`中完成必要的操作后,如果需要向`Form1`传递信息,可以使用`Form1`作为参数传递给`ShowDialog`方法的回调事件或其他通信机制,比如事件或属性。 ```csharp // Form2中的某个方法,假设完成后需要更新Form1的数据 private void UpdateDataFromForm2() { // 在这里执行子窗体的操作... // 如果需要更新父窗体的数据,可以通过ParentForm变量来访问Form1 if (this.ParentForm != null) { ParentForm.dataGridView1.DataSource = ...; // 更新DataGridView的数据源 } } ``` 现在,当你在`Form1`上点击`Button1`时,它会关闭当前窗口并显示`Form2`。如果`Form2`中有需要与`Form1`交互的操作,可以在适当的时候调用`UpdateDataFromForm2`方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值