Autor Beitrag
C#Thomas
Hält's aus hier
Beiträge: 5

Windows 7
C# (VS 2009 Express)
BeitragVerfasst: Mo 18.05.09 16:54 
Liebe Forengemeinte,

ich bin gerade an einem Projekt, welches mir erlauben soll, Daten aus einer SQL-Datenbank
auszulesen und Diese dann auf einem Formular anzuzeigen.

Als Entwicklungsumgebung verwende ich Visual Studio Express in der neuesten Version.

Das Problemchen lautet wie folgt:

An dem Zielrechner auf dem die Applikation laufen soll sind 2 Monitore angeschlossen.
Auf dem ersten Monitor soll die Applikation mit meinetwegen der "frmMain-1" laufen,
welche einige Optionen für die Darstellung der zweiten Form beinhaltet.

Auf dem zweiten Monitor (und das ist wichtig: Es sollte explizit immer der 2. Monitor sein, der im Winodws
angemeldet ist) soll eine weitere Form, nennen wir sie "frmSlave-2" im Vollbild dargestellt werden.

- Die Frage ist nun, wie kann ich garantieren, dass eine Form auf einem bestimmten, in dem Fall dem zweiten
Monitor angezeigt wird?
- Gibt es eine weitere Möglichkeit (ohne Form) einen Vollbildtext auf einem zweiten Monitor auszugeben?

Für die Antworten schonmal vielen Dank

Mit den besten Grüßen in den Abend
Thomas
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 18.05.09 17:07 
Hallo,

mittels der Screen.AllScreens-Eigenschaft erhälst du die Abmessungen aller angeschlosseneen Monitore.
Du brauchst dann nur dein Formular entsprechend positionieren sowie die Größe setzen.
C#Thomas Threadstarter
Hält's aus hier
Beiträge: 5

Windows 7
C# (VS 2009 Express)
BeitragVerfasst: Mo 18.05.09 17:34 
Hallo Th69,

das werde ich gleich mal testen, danke!

Gruß
Thomas
C#Thomas Threadstarter
Hält's aus hier
Beiträge: 5

Windows 7
C# (VS 2009 Express)
BeitragVerfasst: Mo 18.05.09 17:50 
Hervorragend, dein Tipp hat mir folgendes eingebracht:


----
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
 int index;
            int upperBound;

            // Gets an array of all the screens connected to the system.

            Screen[] screens = Screen.AllScreens;
            upperBound = screens.GetUpperBound(0);

            for (index = 0; index <= upperBound; index++)
            {

                // For each screen, add the screen properties to a list box.

                listBox1.Items.Add("Device Name: " + screens[index].DeviceName);
                listBox1.Items.Add("Bounds: " + screens[index].Bounds.ToString());
                listBox1.Items.Add("Type: " + screens[index].GetType().ToString());
                listBox1.Items.Add("Working Area: " + screens[index].WorkingArea.ToString());
                listBox1.Items.Add("Primary Screen: " + screens[index].Primary.ToString());

            }

----

Damit werden alle angeschlossenen Monitore in 'ner ListBox aufgelistet und sogar angezeigt ob es ein Primary oder Secondary ist. Wenn Du mir noch einen Tipp geben könntest, in welchen Bereich ich die Form verschieben muss, damit Sie wirklich auf dem zweiten ist wäre das Top und mein Problemchen in Luft aufgelöst.

So sieht meine aktuelle Ausgabe aus:


[Edit: Hat sich erledigt, man muss doch nur mal genauer hinschauen ;)] Danke nochmal!
Einloggen, um Attachments anzusehen!
C#Thomas Threadstarter
Hält's aus hier
Beiträge: 5

Windows 7
C# (VS 2009 Express)
BeitragVerfasst: Mo 18.05.09 18:09 
Hier mal der Code zum verschieben einer Form auf den zweiten/ersten Monitor, falls noch jemand so ein Problemchen haben sollte:

ausblenden C#-Quelltext
1:
ActiveForm.Location = new Point(screens[1].WorkingArea.X, screens[1].WorkingArea.Y);					
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 18.05.09 18:21 
Zuweisen der Location sollte eigentlich schon reichen.

ausblenden C#-Quelltext
1:
frm.Location = screens[1].WorkingArea.Location;