Почему после ссылки на форму данные не переносятся из формы 2 в форму 1 - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь сделать большой проект кодирования, однако я ударился о стену.
Мне нужно показать имя и счет, как только данные были введены.
Я пытался использовать учебники YouTube, классы для кода. Но нет такой удачи.
Любая помощь будет отличной!

form1:

private void bNew_Click(object sender, EventArgs e)
{
    score link = new score();
    link.Show();

    SudentBox.Items.Clear();
}

form2:

public object StudentBox { get; private set; }

private void bCancel_Click(object sender, EventArgs e)
{
    this.Close();

    try
    {
        string name = txtName.Text;
        int score = Convert.ToInt32(txtScore.Text);
        txtStoreScores.Text += score.ToString() + " ";
    }
    catch (Exception x) 
    {
        MessageBox.Show("Please enter a number");
    }
}

private void bClearScores_Click(object sender, EventArgs e)
{
    txtName.Text = "";
    txtScore.Text = "";
    txtStoreScores.Text = "";
}

Примеры того, как должны выглядеть формы с конечным результатом.

form1

form 2

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Если я прав, вы пытаетесь закодировать форму DialogBox.
Скажем, вы хотите получить имя из диалогового окна (например, из TextBox в Form2), у вас может быть такая модель (конечно, в Form2).

public string Name
{
    //where myTextBox is the design name of your textbox
    get => myTextBox.Text;
    set => myTextBox.Text=value;
}

Простая кнопка ОК

public void OkBtnClick(object sender, EventArgs e)
{
    this.Close();
}

Теперь вам нужно, чтобы эта информация отображалась в вашем Form1. Это легко.
Так же, как вы начали выше:

private void bNew_Click(object sender, EventArgs e)
{
    score link = new score();
    link.ShowDialog();
    //Note that you won't be able to access form1.
    SudentBox.Items.Clear();
    //You can now get the name
    string _nameResult=link.Name;
    NameTextbox.Text=_nameResult;
}

Надеюсь, это поможет вам начать!

0 голосов
/ 10 ноября 2018

Вы делаете это, используя свойство. Добавьте общедоступное статическое свойство в форме 2 и задайте значения текста для свойства соответственно, а затем получите доступ к ним в форме 1.

В форме 2 в событии нажатия кнопки ОК сделайте это

public static string Name { get; set; }
public static string Scores { get; set; }
private void bOk_Click(object sender, EventArgs e)
{
   Name = txtName.Text;
   Scores = txtStoreScores.TextBox;
}

Затем в событии OnLoad формы 1 получить доступ к этим свойствам и отобразить их в TextBox

private Form1_Load (object sender, EventArgs e)
{
   StudentBox.Items.Add(string.Format("{0} {1}", Form2.Name, Form2.Scores);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...