Gå til innhold

C#: [Løst]Plassere en Form nederst til høyre


Anbefalte innlegg

Bare lurte på om noen har en måte å gjøre dette på, som funker, som de kan anbefale. Skulle hatt det slik at programmet mitt legger seg helt nede til høyre når det starter opp, altså på hovedskjermen, rett over klokka og systray. Prøvde å sette Location ved hjelp av å bruke screenbounds og trekke fra høyden og bredden, men da syntes bare 1/4 av vinduet, da de andre 3/4 var utenfor skjermen både nede og på siden. Noe jeg ikke fattet helt. Så da lurte jeg på om det kanskje var noe muffins med disse screen bounds sakene. Noen som har peil?

Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet-aNZFa3

Du har prøvd med Screen.PrimaryScreen.WorkingArea?

Hvis ikke prøv denne koden (utestet, og fra husken):

this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - this.Width, Screen.PrimaryScreen.WorkingArea.Height - this.Height);

Endret av Slettet-aNZFa3
Lenke til kommentar
Du har prøvd med Screen.PrimaryScreen.WorkingArea?

Hvis ikke prøv denne koden (utestet, og fra husken):

this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - this.Width, Screen.PrimaryScreen.WorkingArea.Height - this.Height);

Den koden fungerer dårlig hvis startmenyen ikke befinner seg nederst...

 

Fungerendes kode som tar hensyn til startmenyen: (VB.NET, konverter den til C# selv :p)

	Public Shared Sub SetLoc(ByVal FName As System.Windows.Forms.Form, ByVal Padding As Integer, ByVal ScrLoc As Publics.Lcs)

	Dim XLoc As Integer
	Dim YLoc As Integer

	YLoc = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height - FName.Size.Height
	XLoc = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width - FName.Size.Width

	If ScrLoc = Publics.Lcs.Upper_Left Then
		FName.Location = New System.Drawing.Point(Padding + Screen.PrimaryScreen.WorkingArea.X, Padding + Screen.PrimaryScreen.WorkingArea.Y)
	ElseIf ScrLoc = Publics.Lcs.Upper_Right Then
		FName.Location = New System.Drawing.Point(XLoc - Padding + Screen.PrimaryScreen.WorkingArea.X, Padding + Screen.PrimaryScreen.WorkingArea.Y)
	ElseIf ScrLoc = Publics.Lcs.Bottom_Left Then
		FName.Location = New System.Drawing.Point(Padding + Screen.PrimaryScreen.WorkingArea.X, YLoc - Padding + Screen.PrimaryScreen.WorkingArea.Y)
	ElseIf ScrLoc = Publics.Lcs.Bottom_Right Then
		FName.Location = New System.Drawing.Point(XLoc - Padding + Screen.PrimaryScreen.WorkingArea.X, YLoc - Padding + Screen.PrimaryScreen.WorkingArea.Y)
	End If

End Sub

Public Enum Lcs As Integer

	Upper_Left = 1
	Upper_Right = 2
	Bottom_Left = 3
	Bottom_Right = 4

End Enum

Lenke til kommentar
Du har prøvd med Screen.PrimaryScreen.WorkingArea?

Hvis ikke prøv denne koden (utestet, og fra husken):

this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - this.Width, Screen.PrimaryScreen.WorkingArea.Height - this.Height);

Så ut til å funke det ja. Rart... var sikker på at det var ca det jeg hadde gjort før... må ha fått med noe muffins i koden min :p jaja, takk for hjelpen.

 

@Wubbable: Den koden din skjønte jeg ikke helt for å være ærlig :p uansett, tror ikke jeg gidder å gjøre den så kompatibel. hvordan finner du hvor startmenyen ligger egentlig? ser du definerte en sånn enum, men du må jo få verdien å bruke der fra et eller annet sted...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...