2016-02-17 1 views
0

Есть ли способ получить обновленный размер панели после FormWindowState.Maximized? Я могу получить размер панели, но она дает исходный размер панели.Получите новый размер панели и перейдите в usercontrol после того, как winform станет полноэкранным?

Thanks;

Кстати это код для UserControl

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Drawing; 
using System.Data; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApplication8 
{ 
    public partial class UserControl1 : UserControl 
    { 
     public UserControl1() 
     { 
      InitializeComponent(); 
     } 

     private void UserControl1_Load(object sender, EventArgs e) 
     { 
      //this is the way i retrieve the panel size 
      Form1 f = new Form1(); 
      this.Size = f.Size; 
     } 
    } 
} 

это форма код, панель имеет 4 активированных якоря

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApplication8 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      UserControl1 n = new UserControl1(); 
      panel1.Controls.Add(n); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      WindowState = FormWindowState.Maximized; 
     } 
    } 
} 
+2

Показать код, который вы используете – NineBerry

+0

Вот код, мои мысли есть каждый раз, когда я вызвать конструктор загружает designer.cs из формы и получает размер панели там, который является оригинальный размер формы. Моя проблема заключается в том, как я могу получить обновленный размер/последний размер из формы. – Khrandm

+0

Код не показывает, как вы пытаетесь прочитать обновленный размер после того, как форма будет максимальной. – NineBerry

ответ

0

Если то, что вы хотите сделать, чтобы изменить размер пользовательского элемента управления при изменении размера родительской формы вы можете использовать событие Resize для ParentForm:

Основная форма:

using System; 
using System.Drawing; 
using System.Windows.Forms; 

namespace ans 
{ 
    public partial class Form2 : Form 
    { 
     public Form2() 
     { 
      InitializeComponent(); 
     } 

     private void Form2_Load(object sender, EventArgs e) 
     { 
      var uc = new UserControl2(); 
      uc.Location = new Point(0, 0); 
      this.Controls.Add(uc); 

      WindowState = FormWindowState.Maximized; 
     } 
    } 
} 

управления пользователя:

using System; 
using System.Drawing; 
using System.Windows.Forms; 

namespace ans 
{ 
    public partial class UserControl2 : UserControl 
    { 
     public UserControl2() 
     { 
      InitializeComponent(); 
     } 

     private void UserControl2_Load(object sender, EventArgs e) 
     { 
      this.BackColor = Color.Aqua; 
      if (this.ParentForm != null) 
      { 
       this.Size = this.ParentForm.Size; 
       this.ParentForm.Resize += ParentForm_Resize; 
      } 
     } 

     private void ParentForm_Resize(object sender, EventArgs e) 
     { 
      this.Size = ((Form)sender).Size; 
     } 
    } 
} 
+0

Ой, это работает! Я очень благодарен, сэр! Спасибо за идею о событии от родительской формы, теперь я могу кодировать мирно – Khrandm

0

Если вы хотите UserControl создать динамически во время выполнения, чтобы расти и уменьшаться с контролем, что он помещается, а затем установить свойство Dock в UserControl для заполнения в время выполнения:

private void button1_Click(object sender, EventArgs e) 
{ 
    MyUserControl userControl = new MyUserControl(); 
    panel1.Controls.Add(userControl); 
    userControl.Dock = DockStyle.Fill; 
} 
+0

thats, что я использовал раньше, проблема в том, что вы можете увидеть разницу исходного размера пользовательского контроля и файла dockstyle.fill. после нажатия кнопки пользовательский контроль будет добавлен в панель, но сначала будет отображаться исходный размер usercontrol, прежде чем он заполнит всю панель – Khrandm