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

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


问题是我尝试了多种解决方案来加载它,但是在放入信息后它不会加载。我试过这个。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();

    }

}

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


实际:它不会显示任何内容。


编辑:在代码和问题中添加了更多内容,因为我没有做得很好,很抱歉:/


芜湖不芜
浏览 72回答 1
1回答

Helenr

我在评论中描述的示例:执行此操作时: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();    }}
打开App,查看更多内容
随时随地看视频慕课网APP