Вопрос по c#, winforms – передача переменных в другую форму

1

Я разрабатываю приложение для Windows на C #. Я использовал три десятичных переменных:counter, narrow, а такжеbroad которые хранят различные значения на основе некоторых расчетов.

При нажатии на кнопку появляется окно сообщения с этими тремя десятичными значениями, а затем приложение закрывается.

Теперь я хочу добавить еще одну форму с тремя метками, в которой эти значения переменных должны быть показаны. Пожалуйста, объясните, как я могу передать эти переменные в следующей форме для отображения в отдельных ярлыках?

Ваш Ответ

5   ответов
1

public class CalculationResultForm : Form
{
    public CalculationResultForm(){}

    public decimal Counter
    {
        set { labelCounter.Text = value.ToString(); }
    }
    public decimal Broad
    {
        set { labelBroad.Text = value.ToString(); }
    }
    public decimal Narrow
    {
        set { labelNarrow.Text = value.ToString(); }
    }

    private void OkButton_Click(object sender, EventArgs e)
    {
        // This will close the form (same as clicking ok on the message box)
        DialogResult = DialogResult.OK;
    }
}

Затем в существующей форме обработчик нажатия кнопки ...

private void MyButton_Click(object sender, EventArgs e)
{
    CalculationResultForm resultForm = new CalculationResultForm();
    resultForm.Counter = _counter;
    resultForm.Narrow = _narrow;
    resultForm.Broad = _broad;

    resultForm .ShowDialog();

    Application.Exit();
}
ПочемуApplication.Exit вызов? В противном случае мне нравится ответ, поскольку он также позволил бы отображать форму немодально, позволяя ей оставаться видимой и постоянно обновляться новыми значениями через свойства.
Исходный вопрос, по-видимому, подразумевает, что именно это и происходит в настоящее время: «При нажатии кнопки отображается окно сообщения, отображающее эти три десятичных значения, и приложение закрывается». - Очевидно, что он может быть удален, если не нужен
спасибо за тонну! Это лучший ответ, так как он работал хорошо ... Вместо кнопки ОК можно получить «печатать»? кнопка, которая показывает диалоговое окно печати .. на самом деле я хочу, чтобы пользователь печатал эту карту результатов напрямую ... я новичок в проге, так что помогите, если могут быть такие команды для выполнения действия .. спасибо !! knowledgehunter
1

вероятно, добавить новый метод, давайте назовем его ShowWithDetails:

    public void ShowWithDetails(double Counter, double Narrow, double Broad)
    {
        CounterLabel.Text = Counter.ToString();
        NarrowLabel.Text = Narrow.ToString();
        BroadLabel.Text = Broad.ToString();

        ShowDialog();
    }
3

атем вы можете использовать эти значения из 2-й формы.

public Form2(decimal x, decimal y, decimal z):this()
{
   this.TextBox1.Text = Convert.ToString(x);
   this.Label1.Text = Convert.ToString(y);
   etc...
};

Из основной формы

Form2 frm2 = new  Form2(x,y,z);
frm2.Show();
У вас есть проблемы с этим, только если у вас нет конструктора по умолчанию. Это тот, который Visual Studio вызывает в режиме разработки.
Я тоже много этим занимаюсь, у дизайнера нет проблем. Возможно, если вы спрятали конструктор по умолчанию, могут возникнуть проблемы.
Я думаю, что вы теряете дизайнерскую поддержку, когда вы делаете это, хотя.
У меня никогда не было проблем с этим.
0

в которую вы хотите передать значения, это просто другой класс.

добавьте что-то вроде этого во вторую форму:

public int counter {get; set;}

затем из первой формы вы делаете что-то вроде

Form2 form2 = new Form2();
form2.counter = 1;
form2.ShowDialog();

Или что-то вдоль этих линий.

Похожие вопросы