gpt4 book ai didi

c# - 即使被告知显示,标签也不会显示

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:09 24 4
gpt4 key购买 nike

我正在制作一个加载单独表单的应用程序,用户输入信息,完成后,它将显示在应用程序首先加载的主要表单上。

问题是我尝试了多种解决方案来加载它,但是在输入信息后它不会加载。我试过this.Controls.Add(Label); 这是我见过最多的,但是一直没用。我尝试的另一种方法是执行 Label.Show();,但结果相同,没有任何显示。下面的 AddContacts(string Name) 方法是我添加联系人的方式

AddContact_Click(object sender, EventArgs e) 方法是一个按钮,按下该按钮会打开另一个允许插入信息的表单。

public partial class Phonebook : Form
{

public Phonebook()
{
InitializeComponent();
MaximumSize = new Size(633, 306);
}

private void AddContact_Click(object sender, EventArgs e)
{
MakeContact MC = new MakeContact();
MC.Show();
}

public void AddContacts(string Name)
{
Label name = new Label();

//Added Style and Location of Label...
name.Text = Name;
name.Location = new Point(98, 13);
name.Font = new Font("Microsoft Sans Serif", 13, FontStyle.Bold);

this.Controls.Add(name);
Refresh();
}
}

下面是我在按下“完成”按钮时使用的方法,因为当用户完成信息处理后,AddContacts() 方法被调用

public partial class MakeContact : Form
{

public MakeContact()
{
InitializeComponent();
MaximumSize = new Size(394, 377);
}

private void FinishContact_Click(object sender, EventArgs e)
{
//FullName is the name of the TextField when asking for a name
string Name = FullName.Text;

Phonebook PB = new Phonebook();
PB.AddContacts(Name);

//Closes Separate Form and goes back to the
Close();
}
}

期望:输入信息后,它应该将标签加载到表单中。

实际:它永远不会显示什么。

编辑:在代码和问题中添加了更多内容,因为我没有很好地提出问题,对此感到抱歉:/

最佳答案

我在评论中描述的示例:

当你这样做时:

Phonebook PB = new Phonebook();

您创建了 PhoneBook新实例类(您的表单):这不是创建 MakeContact 的同一个 Form 实例(同一个对象)表单和您要更新的表单。 这是一个不同的对象
无论您对这个新对象进行什么更改,它都不会反射(reflect)在原始的、现有的对象中。

如何解决:
添加构造函数到 MakeContact a 接受类型为 PhoneBook 的参数的形式 和类型为 Phonebook 的私有(private)对象:

    private PhoneBook pBook = null;

public MakeContact() : this(null) { }
public MakeContact(PhoneBook phoneBook)
{
InitializeComponent();
this.pBook = phoneBook;
}

将构造函数中传递的参数赋值给同类型的私有(private)域。然后,此字段将用于调用 PhoneBook 的公共(public)方法。类(表单是一个类,在行为上与其他类相似)。

这不是唯一可能的方法。可以看到other examples here .

完整示例代码:

public partial class Phonebook : Form
{
private void AddContact_Click(object sender, EventArgs e)
{
MakeContact MC = new MakeContact(this);
MC.Show();
}

public void AddContacts(string Name)
{
Label name = new Label();
// (...)
this.Controls.Add(name);
}
}

public partial class MakeContact : Form
{
private PhoneBook pBook = null;

public MakeContact() : this(null) { }
public MakeContact(PhoneBook phoneBook)
{
InitializeComponent();
this.pBook = phoneBook;
}

private void FinishContact_Click(object sender, EventArgs e)
{
string Name = FullName.Text;
this.pBook?.AddContacts(Name);
this.Close();
}
}

关于c# - 即使被告知显示,标签也不会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54641800/

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