gpt4 book ai didi

c# - 从另一个表单打开表单收到错误C#

转载 作者:行者123 更新时间:2023-12-03 09:06:58 25 4
gpt4 key购买 nike

所以我想做的是创建一个主窗体,然后它将有不同的按钮,这些按钮会将您带到4个不同的窗体。它以前曾经工作过,现在却不起作用。例如,我将有一个主要表格,它将带您进入取货表格,交货表格和 list 表格等。
所以每种形式我写代码例如我写的主要形式

private PickupForm pickupform = new PickupForm();
private DeliveryForm deliveryform = new DeliveryForm();

对于 pickupformdeliveryform,我会写
private MainForm mainform = new MainForm();

但是我尝试执行时似乎出现错误。
这是将显示的消息

An unhandled exception of type 'System.StackOverflowException' occurred in coursework2.exe



奇怪的是,当我更改前面显示的前两行的顺序时,无论哪一行先出现,都会发生错误。

这就是全部代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace coursework2
{
public partial class MainForm : Form
{
private DeliveryForm deliveryform = new DeliveryForm();
private PickupForm pickupform = new PickupForm();

public MainForm()
{
InitializeComponent();
}

private void btnNpickup_Click(object sender, EventArgs e)
{
pickupform.ShowDialog();
}

private void groupBox2_Enter(object sender, EventArgs e)
{
}

private void MainForm_Load(object sender, EventArgs e)
{
}

private void btnNdelivery_Click(object sender, EventArgs e)
{
this.Close();
deliveryform.ShowDialog();
}
}
}

最佳答案

您正在创建一个无限循环。 (直到堆栈溢出)

每次创建MainForm时,都会创建一个DeliveryForm的新实例。然后在DeliveryForm中创建MainForm的新实例。然后 ...

如果需要在DeliveryForm中引用主表单,请将其设置为属性。 (并将其初始化为null)

在PickupForm中:

private MainForm mainform = null;

public MainForm ParentForm
{
get { return mainform; }
set { mainform = value; }
}

在MainForm中:
private void btnNdelivery_Click(object sender, EventArgs e)
{
deliveryForm.ParentForm = this;
deliveryform.ShowDialog();
this.Close();
}

关于c# - 从另一个表单打开表单收到错误C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20939612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com