передача переменных в другую форму

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

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

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

Ответы на вопрос(5)

атем вы можете использовать эти значения из 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();
 23 июл. 2009 г., 21:43
Я думаю, что вы теряете дизайнерскую поддержку, когда вы делаете это, хотя.
 23 июл. 2009 г., 21:45
У меня никогда не было проблем с этим.
 23 июл. 2009 г., 22:21
У вас есть проблемы с этим, только если у вас нет конструктора по умолчанию. Это тот, который Visual Studio вызывает в режиме разработки.
 23 июл. 2009 г., 21:47
Я тоже много этим занимаюсь, у дизайнера нет проблем. Возможно, если вы спрятали конструктор по умолчанию, могут возникнуть проблемы.

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

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

        ShowDialog();
    }

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

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

public int counter {get; set;}

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

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

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

Решение Вопроса

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();
}
 knowledgehunter24 июл. 2009 г., 11:06
спасибо за тонну! Это лучший ответ, так как он работал хорошо ... Вместо кнопки ОК можно получить «печатать»? кнопка, которая показывает диалоговое окно печати .. на самом деле я хочу, чтобы пользователь печатал эту карту результатов напрямую ... я новичок в проге, так что помогите, если могут быть такие команды для выполнения действия .. спасибо !!
 24 июл. 2009 г., 11:01
Исходный вопрос, по-видимому, подразумевает, что именно это и происходит в настоящее время: «При нажатии кнопки отображается окно сообщения, отображающее эти три десятичных значения, и приложение закрывается». - Очевидно, что он может быть удален, если не нужен
 23 июл. 2009 г., 21:55
ПочемуApplication.Exit вызов? В противном случае мне нравится ответ, поскольку он также позволил бы отображать форму немодально, позволяя ей оставаться видимой и постоянно обновляться новыми значениями через свойства.

Ваш ответ на вопрос