Как установить изображение в правом углу родительского MDI? - PullRequest
1 голос
/ 20 февраля 2012

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

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

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

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

enter image description here

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

this.WindowState = FormWindowState.Maximized;

Ответы [ 3 ]

3 голосов
/ 20 февраля 2012

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

2 голосов
/ 20 февраля 2012

Это не сработает, вы скоро это обнаружите, когда начнете создавать окна клиента 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));
            }
        }
    }
1 голос
/ 20 февраля 2012

Поместите коробку с картинками в контейнер и закрепите контейнер первым. Затем только контейнер дока направо. И положить и изображение в картинную коробку.

...