为了账号安全,请及时绑定邮箱和手机立即绑定

即使被告知要显示标签,标签也不会显示

即使被告知要显示标签,标签也不会显示

C#
芜湖不芜 2022-09-04 16:53:37
我正在制作一个应用程序,该应用程序加载一个单独的表单,用户输入信息,然后完成后,它将首先显示在应用程序加载的主表单上。问题是我尝试了多种解决方案来加载它,但是在放入信息后它不会加载。我试过这个。Controls.Add(Label);这是我看到的最多的,但它没有奏效。我尝试的另一种方法是做Label.Show();,但结果相同,没有显示任何内容。下面的AddContacts(字符串名称)方法是我如何添加联系人AddContact_Click(对象发送器,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();    }}期望:在放入信息后,它应该将标签加载到表单中。实际:它不会显示任何内容。编辑:在代码和问题中添加了更多内容,因为我没有做得很好,很抱歉:/
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

我在评论中描述的示例:


执行此操作时:


Phonebook PB = new Phonebook();

创建类(窗体)的新实例:这不是创建窗体和您尝试更新的窗体实例(同一对象)的同一个窗体实例。这是一个不同的对象。

无论您对此新对象进行何种更改,它都不会反映在原始的、现有的对象中。PhoneBookMakeContact


如何解决:

向 MakeContact 窗体添加一个构造函数,该构造函数接受 PhoneBook 类型的参数和以下类型的私有对象:Phonebook


    private PhoneBook pBook = null;


    public MakeContact() : this(null) { }

    public MakeContact(PhoneBook phoneBook)

    {

        InitializeComponent();

        this.pBook = phoneBook;

    }

将构造函数中传递的参数分配给相同类型的私有字段。然后,此字段将用于调用该类的 Public 方法(Form 是一个类,其行为类似于其他类)。PhoneBook


这不是唯一可能的方法。您可以在此处查看其他示例。


完整的示例代码:


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();

    }

}


查看完整回答
反对 回复 2022-09-04
  • 1 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信