2012-02-20 2 views
1

Я использую проект Windows Form. В моей родительской форме MDI я хочу показать логотип своей компании в правом углу. Поэтому я перетащил изображение и установил изображение.Как установить изображение в правой стороне родителя MDI?

Но я не устраиваю свое требование, изображение не в правильном положении. Я тоже попробовал дополнение. Dock увеличивает мою высоту изображения до полной высоты формы. Так что это тоже не помогает мне.

Перед выполнением решения. (Я хочу, чтобы это было как время выполнения). enter image description here

Во время решения. (Нежелательные Пространство в правой стороне)

enter image description here

И MDI форма максимизируется на время работы. с помощью кода ниже.

this.WindowState = FormWindowState.Maximized; 

ответ

3

Вы должны установить Anchor свойство PictureBox в Top, Right по умолчанию его набор для Top, Left

+0

Сработало. Благодарю. – Sagotharan

+0

+1 Для ваших лучших ответов. – Sagotharan

+1

Счастлив, что это поможет вам. :) – Maheep

1

Положить фотокамеру в контейнер и док-станцию ​​в контейнере. Затем Контейнер только док вправо. И поставьте и изображение в окно изображения.

2

Это не будет работать, вы узнаете в ближайшее время, когда вы начинаете создавать MDI-клиент окна. Окно изображения всегда находится поверх окон клиента. Требуется рисование изображения в окне клиента MDI, темное серое окно на снимках экрана. Это требует большого количества необычного кода, вам нужно получить ссылку на этот элемент управления, чтобы вы могли реализовать свое собственное событие Paint. Вы также должны знать, что размер окна изменяется, чтобы вы могли перерисовать изображение в новом месте. И вам нужно что-то сделать в отношении мерцания, которое вы обычно видите. Сделайте свой код похожим на это:

using System.Reflection; 
... 

    public partial class Form1 : Form { 
     public Form1() { 
      InitializeComponent(); 
      foreach (Control ctl in this.Controls) { // Find the MDI client window 
       if (ctl is MdiClient) { 
        ctl.Paint += new PaintEventHandler(MdiClient_Paint); 
        ctl.Resize += delegate { ctl.Invalidate(); }; 
        // Hackorama to avoid flicker: 
        var dblBuf = ctl.GetType().GetProperty("DoubleBuffered", BindingFlags.NonPublic | BindingFlags.Instance); 
        dblBuf.SetValue(ctl, true, null); 
        break; 
       } 
      } 
     } 

     void MdiClient_Paint(object sender, PaintEventArgs e) { 
      var client = (MdiClient)sender; 
      using (var bmp = Properties.Resources.Logo) { // change this 
       e.Graphics.DrawImage(bmp, new Point(client.ClientSize.Width - bmp.Width, 0)); 
      } 
     } 
    } 
+0

+1 Очень хорошее решение. Раньше меня всегда использовали свойство BackgroundImage, но изображение не было там, где я хотел. С помощью этого решения я могу определить смещение, чтобы изменить местоположение изображения, и это отлично выглядит! – Samuel

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