2009-07-23 3 views
1

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

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

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

ответ

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; 
    } 
} 

Затем в вашей существующей форме нажмите кнопку ha ndler ...

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(); 
} 
+0

Почему вызов 'Application.Exit'? В противном случае мне нравится ответ, поскольку он также позволит отображать форму немодально, позволяя ей оставаться видимой и постоянно обновляться новыми значениями через свойства. –

+0

Исходный вопрос, по-видимому, подразумевает, что это то, что происходит в настоящее время - «При нажатии кнопки отображается окно сообщения, отображающее эти три десятичных значения, и приложение выходит» - Очевидно, его можно удалить, если не нужно – Oll

+0

thanx a ton! это лучший ответ, так как он хорошо работал .. вместо кнопки ok у меня есть кнопка «print», которая показывает диалоговое окно печати. ​​Фактически я хочу, чтобы пользователь печатал эту оценочную карту напрямую ... im new in prog so pl помогите, если могут быть такие команды для выполнения действия. thanx !! – knowledgehunter

0

Простым способом является использование свойств. Форма, которую вы хотите передать значениям, - это еще один класс.

добавить что-то подобное для второй формы:

public int counter {get; set;} 

затем из первой формы вы могли бы сделать что-то вдоль линий

Form2 form2 = new Form2(); 
form2.counter = 1; 
form2.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(); 
+0

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

+0

У меня никогда не было проблем с этим. – Inisheer

+0

Я тоже так много делаю, у дизайнера нет проблем. Возможно, если вы спрятали конструктор по умолчанию, возможно, возникли проблемы с конструктором. – overslacked

1

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

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

     ShowDialog(); 
    }