2016-12-18 4 views
0

У меня есть 2 формы, основная форма & ModalBox.Использование пользовательского события для рисования фигур в другой форме C#

В основной форме у меня есть кнопка, которая при нажатии рисует фигуру в зависимости от выбранного индекса comboBox.

// Create Rectangle or Ellipse 
    public void buttonAdd_Click(object sender, EventArgs e) 
    { 
     SolidBrush sb = new SolidBrush(Color.Red); 

     Graphics g = panel1.CreateGraphics(); 

     if (shapeSizeControl1.comboBoxShapeSelection.SelectedIndex == 0) 
     { 
      g.FillRectangle(sb, Convert.ToSingle(shape.X), Convert.ToSingle(shape.Y), Convert.ToSingle(shape.Width), Convert.ToSingle(shape.Height)); 
     } 
     else if (shapeSizeControl1.comboBoxShapeSelection.SelectedIndex == 1) 
     { 
      g.FillEllipse(sb, Convert.ToSingle(shape.X), Convert.ToSingle(shape.Y), Convert.ToSingle(shape.Width), Convert.ToSingle(shape.Height)); 
     } 
    } 

В форме ModalBox У меня есть кнопка ОК, которая должна делать то же самое, что и кнопка в главном виде, но это не потому, что я понятия не имею, как программировать его, чтобы сделать это.

Что я пробовал ..

  1. Копирование и тот же код с основной формой buttonAdd_Click в ModalBox buttonOk_Click. Плохая идея, потому что мне нужно создать новую основную форму, чтобы получить переменную panel1. Если я это сделаю, ничего не произойдет. Зачем? Я не уверен, что объяснение будет замечательным.

  2. Создание настраиваемого события, поэтому, когда открывается форма ModalBox, как только я нажму кнопку ok с момента ее подписания, он нарисует форму. 1 проблема Я понятия не имею, где вызвать событие и проверить значение null, потому что кнопка находится во второй форме, поэтому, если я вызываю пользовательское событие в первой форме, у меня нет места для вызова события и нулевой проверки.

Гол

Моя цель состоит в том, чтобы выяснить, как добавлять фигуры в главной форме от формы ModalBox с помощью кнопки Ok в форме ModalBox.

ответ

0

Просто создайте метод DrawShape() в основной форме, которая рисует ваши фигуры и называет ее нажатием кнопки.

// Main Form 
private void button1_Click(object sender, EventArgs e) 
{ 
    DrawShape(); 
} 

Теперь создайте модальную форму и установить владельца

// Main form 
private void button2_Click(object sender, EventArgs e) 
{ 
    var dlg = new ModalBox(); 

    if (dlg.ShowDialog(this)==DialogResult.OK) 
    { 
     // do things 
    } 
} 

Наконец в модальной форме вызвать функцию DrawShape()

// Modal form 
private void button1_Click(object sender, EventArgs e) 
{ 
    var parent = this.Owner as MainForm; 
    parent.DrawShape(); 
} 
+0

PS. Чтобы сделать это правильно, вам нужно подписаться на событие «Paint» формы и сделать там рисунок. – ja72

Смежные вопросы