Korzystam z projektu Windows Form. W moim formularzu nadrzędnym MDI chcę pokazać logo mojej firmy w prawym rogu. Więc przeciągnąłem obrazek i ustawiłem obraz.
Ale nie spełniam moich wymagań, obraz nie jest we właściwej pozycji. Próbowałem też wyściółki. Dock zwiększa wysokość obrazu do pełnej wysokości formularza. Więc to też mi nie pomoże.
Przed uruchomieniem rozwiązania. (Chcę to jako czas wykonywania)..
W momencie uruchomienia rozwiązania. (Niechciane miejsce po prawej stronie)
A forma MDI jest maksymalizowana w czasie wykonywania. za pomocą poniższego kodu.
this.WindowState = FormWindowState.Maximized;
3 odpowiedzi
Będziesz musiał ustawić właściwość Zakotwiczenie pola obrazu na Góra, prawo domyślnie jej ustawienie to Top, Left
To nie zadziała, wkrótce przekonasz się, kiedy zaczniesz tworzyć okna klienckie MDI. Ramka graficzna zawsze znajduje się na górze okien klienta. Wymagane jest narysowanie obrazu w oknie klienta MDI, ciemnoszarym oknie na zrzutach ekranu. To wymaga sporej ilości nietypowego kodu, musisz uzyskać odniesienie do tej kontrolki, aby móc zaimplementować dla niego własne zdarzenie Paint. Musisz również pamiętać, że zmienia się rozmiar okna, dzięki czemu możesz odmalować obraz w nowej lokalizacji. I musisz coś zrobić z migotaniem, które normalnie widzisz. Spraw, aby Twój kod wyglądał podobnie do tego:
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));
}
}
}
Umieść ramkę graficzną w pojemniku i najpierw zadokuj pojemnik. Następnie zadokuj tylko kontener po prawej stronie. I umieść obraz i obraz w polu graficznym.
Podobne pytania
Nowe pytania
.net
NIE używaj w przypadku pytań dotyczących .NET Core - zamiast tego użyj [.net-core]. Platforma .NET to struktura oprogramowania zaprojektowana głównie dla systemu operacyjnego Microsoft Windows. Obejmuje implementację biblioteki klas podstawowych, środowiska uruchomieniowego języka wspólnego (powszechnie określanego jako CLR), systemu typu wspólnego (powszechnie określanego jako CTS) i środowiska wykonawczego języka dynamicznego. Obsługuje wiele języków programowania, w tym C #, VB.NET, F # i C ++ / CLI.