c# - 我想从 Form2 控制 Form1

标签 c# winforms

所以我基本上希望用户先登录才能使用其他表单。然而,我的困境是登录框在Form2中,而主窗体是Form1。

if ((struseremail.Equals(username)) && (strpasswd.Equals(password)))
{
  MessageBox.Show("Logged in");
  form1.Visible = true;
  form1.WindowState = FormWindowState.Maximized;
}
else
{
  MessageBox.Show("Wow, how did you screw this one up?");
}

但是,Form1 在他们登录后不可见(因为我将其作为 visble = false 启动)。有人可以帮忙吗?

编辑:

出色的响应,但我的问题仍然存在。我基本上想首先加载 Form2,(这很容易我运行 Form1 并将其设置为隐藏)但是当 Form2 关闭时,我也希望 Form1 也关闭。

private void Form2_FormClosing(Object sender, FormClosingEventArgs e)
{
  Form1 form1 = new Form1();
  form1.Close();
  MessageBox.Show("Closing");
}

这似乎行不通...

最佳答案

您需要将一种形式的引用传递给另一种形式,以便它可以在另一种形式中使用。在这里,我给出了两个不同形式如何相互通信的示例。此示例从另一种形式修改一种形式的 Label 文本。

Download Link for Sample Project

//你的 Form1

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm = new Form2(this);
        frm.Show();
    }

    public string LabelText
    {
        get { return Lbl.Text; }
        set { Lbl.Text = value; }
    }
}

//你的Form2

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private Form1 mainForm = null;
    public Form2(Form callingForm)
    {
        mainForm = callingForm as Form1; 
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        this.mainForm.LabelText = txtMessage.Text;
    }

    //Added later, closing Form1 when Form2 is closed.
    private void Form2_FormClosed(object sender, FormClosedEventArgs e)
    {
        mainForm.Close();
    }
}

alt text
(来源:ruchitsurati.net)

alt text
(来源:ruchitsurati.net)

关于c# - 我想从 Form2 控制 Form1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3146576/

相关文章:

c# - 如何以编程方式单击 ApplicationBarIconButton?

c# - Gmap.Net 标记在不正确的位置,但本地图缩放时,标记会转到正确的位置

c# - Control.invoke 和父控件

c# - 在 WebBrowser 控件中打印水印背景图像

c# - 检查 WinForm 应用程序中输入的文本

c# - 动态添加复选框到 Windows 窗体只显示一个复选框

c# - 交易搜索始终为空

c# - 关于 C# 和 VB.net 异同的面试问题

c# - 覆盖某些 .Net Framework 控件的绘图以更改其边框颜色?

c# - 返回单个参数作为多映射查询的一部分