Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.189.193.172] |
|
Сообщ.
#1
,
|
|
|
На форме MainForm много элементов управления (установка цвета, комбобоксы, numUpDown и другие), значения которых я хочу передать в форму Test. Можно, конечно, написать свойство для каждого из значений элементов управления. Но хотелось бы сделать так: в основной форме я делаю структуру из значений параметров и передаю ее за один get структуре в форме Test, а потом использую поля структуры формы тест для дальнейших операций. В форме Main в класс Main Forм создал код:
public struct LineParam { public Int32 numLineSizeUdf; public Color clrLineColor; public Int32 numLineSpace; public Color clrLineFon; } public LineParam lp; private void MainForm_Deactivate(object sender, EventArgs e) { lp.numLineSizeUdf = (Int32)numLineSize.Value; lp.numLineSpace = (Int32)numSpace.Value; lp.clrLineColor = lblColor.ForeColor; lp.clrLineFon = lblFon.ForeColor; } // void MainForm_Deactivate public LineParam getParamLine() { return lp; } public MainForm.LineParam lptst = new MainForm.LineParam(); private void TestScreen_Load(object sender, EventArgs e) { lptst = ((MainForm)this.Owner).getParamLine(); // Вот здесь ошибка "В экземпляре объекта не задана ссылка на объект". } Прикреплённый файлMyQCSharp.zip (14,68 Кбайт, скачиваний: 83) |
Сообщ.
#2
,
|
|
|
MainForm_Deactivate было вызвано перед TestScreen_Load?
Добавлено tumanovalex а не лучше ли сделать так, что getParamLine() возвращал не заранее созданную структуру, а заполнял ее при вызове? |
Сообщ.
#3
,
|
|
|
Спасибо, попробую
|
Сообщ.
#4
,
|
|
|
Попробовал, ошибка та же.
|
Сообщ.
#5
,
|
|
|
Цитата tumanovalex @ Попробовал, ошибка та же. код покажи |
Сообщ.
#6
,
|
|
|
Так это...
private void butOK_Click(object sender, EventArgs e) { System.Windows.Forms.Cursor.Hide(); Test fm = new Test(); fm.Show(); } и в этой форме(Test): private void TestScreen_Load(object sender, EventArgs e) { lptst = ((MainForm)this.Owner).getParamLine(); } Очевидно, что Owner == null не? может уж так: private void butOK_Click(object sender, EventArgs e) { System.Windows.Forms.Cursor.Hide(); Test fm = new Test(); fm.Owner = this; fm.Show(); } |
Сообщ.
#7
,
|
|
|
Одна строка
fm.Owner = this; |
Сообщ.
#8
,
|
|
|
Скрытый текст Цитата Спасибо большое, maxim86! О как |
Сообщ.
#9
,
|
|
|
Прошу прощения, maxim84, ошибся с именем. Что-то теперь не получается передать в подчиненную форму цвет линии и цвет фона.
private void TestScreen_Load(object sender, EventArgs e) { lptst = new MainForm.LineParam(); lptst = ((MainForm)this.Owner).getParamLine(); this.ForeColor = lptst.clrLineFon; } private void TestScreen_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; Pen pen = new Pen(lptst.clrLineColor, lptst.numLineSize); for (Int32 i = 0; i < iXmax; i += lptst.numLineSpace + lptst.numLineSize) { p1.X = i; p1.Y = 0; p2.X = i; p1.Y = iYmax; g.DrawLine(pen, p1, p2); } } |
Сообщ.
#10
,
|
|
|
ForeColor - цвет текста...
Где-то криво параметры передаются, не иначе... |
Сообщ.
#11
,
|
|
|
Спасибо большое, нашел ошибки, все работает
|