दिलचस्प पोस्ट
सूची से एक मूल्य के सभी घटनाओं को निकालें? क्लिक किए जाने पर एक लिंक खोलने के कई पृष्ठों को कैसे बनाएं समाधान: स्टोर अपडेट, डालें, या हटाएं कथन की एक अप्रत्याशित संख्या से प्रभावित (0) OpenSSL के लिए grep या .jar फ़ाइलों को कैसे खोजें? अनुक्रमिक गिनती जेनरेटर क्या "फेंक" और "फेंक एक्स" के बीच अंतर है? ShouldAutorotateToInterfaceOrientation आईओएस 6 में नहीं बुलाया जा रहा है XPath: डॉट और टेक्स्ट के बीच अंतर () एंड्रॉइड: अन्य एप्लिकेशन की कॉल गतिविधि कैसे तय करने के लिए "आपका रुबी संस्करण 1.9.3 है, लेकिन आपके Gemfile निर्दिष्ट 2.0.0" कोणीय 2: त्रुटि: प्रकार त्रुटि: संपत्ति '…' की पढ़ाई नहीं की जा सकती अनिर्धारित कैसे जावा में एक अवधि को प्रारूपित करें? (जैसे प्रारूप एच: एमएम: एसएस) हेडर फाइलों के परिपत्र निर्भरता से बचना मैं सीएसएस के साथ एक संपूर्ण वेब पेज कैसे स्केल कर सकता हूं? एसक्यूएल वाक्यविन्यास केस संवेदनशील है?

एक द्वितीयक मॉनीटर पर एक विंडोज़ फार्म दिखा रहा है?

मैं माध्यमिक मॉनिटर पर एक Windows प्रपत्र सेट करने का प्रयास कर रहा हूं, इस प्रकार है:

private void button1_Click(object sender, EventArgs e) { MatrixView n = new MatrixView(); Screen[] screens = Screen.AllScreens; setFormLocation(n, screens[1]); n.Show(); } private void setFormLocation(Form form, Screen screen) { // first method Rectangle bounds = screen.Bounds; form.SetBounds(bounds.X, bounds.Y, bounds.Width, bounds.Height); // second method //Point location = screen.Bounds.Location; //Size size = screen.Bounds.Size; //form.Left = location.X; //form.Top = location.Y; //form.Width = size.Width; //form.Height = size.Height; } 

सीमा के गुण सही लगते हैं, लेकिन मैंने कोशिश की है दोनों तरीकों में, यह प्राथमिक मॉनिटर पर प्रपत्र को अधिकतम करता है कोई विचार?

वेब के समाधान से एकत्रित समाधान "एक द्वितीयक मॉनीटर पर एक विंडोज़ फार्म दिखा रहा है?"

WindowStartUpLocation पैरामीटर को अपने SetFormLocation विधि में "मैनुअल" के रूप में सेट करने का प्रयास करें।

 this.Location = Screen.AllScreens[1].WorkingArea.Location; 

यह प्रपत्र संदर्भ है

@ गेन्गी का उत्तर संक्षिप्त है और अच्छी तरह से काम करता है अगर खिड़की को अधिकतम किया जाता है तो यह विंडो को स्थानांतरित नहीं करता है यह स्निपेट हल करता है (हालांकि मुझे संदेह है कि विंडोज़ "सामान्य" आयाम इस काम के लिए नए स्क्रीन आयाम से छोटा होना चाहिए):

  void showOnScreen(int screenNumber) { Screen[] screens = Screen.AllScreens; if (screenNumber >= 0 && screenNumber < screens.Length) { bool maximised = false; if (WindowState == FormWindowState.Maximized) { WindowState = FormWindowState.Normal; maximised = true; } Location = screens[screenNumber].WorkingArea.Location; if (maximised) { WindowState = FormWindowState.Maximized; } } } 

क्या आप वाकई screens[1] क्या आपका माध्यमिक है? screens[0] दें screens[0] एक कोशिश आपका कोड मूल रूप से सही है।


ठीक है, मैंने चेक किया, आपको शो () के बाद यह करना होगा:

 n.Show(); setFormLocation(n, screens[1]); 

जो कुछ अवांछित झिलमिलाहट देता है लेकिन आप शायद ऐसा कर सकते हैं:

 n.SetBounds(-100, -100, 10, 10); // or similar n.Show(); setFormLocation(n, screens[1]); 

माध्यमिक स्क्रीन पर फॉर्म प्रदर्शित करने के लिए:

  Screen primaryFormScreen = Screen.FromControl(primaryForm); //Use this if you are looking for secondary screen that is not primary Screen secondaryFormScreen = Screen.AllScreens.FirstOrDefault(s => !s.Primary) ?? primaryFormScreen; //Use this if you are looking for screen that is not being used by specific form Screen secondaryFormScreen = Screen.AllScreens.FirstOrDefault(s => !s.Equals(primaryFormScreen)) ?? primaryFormScreen; //Putting the form on the other screen secondaryForm.Left = secondaryFormScreen.Bounds.Width; secondaryForm.Top = secondaryFormScreen.Bounds.Height; //Recommended to use, You can change it back later to the settings you wish secondaryForm.StartPosition = FormStartPosition.Manual; secondaryForm.Location = secondaryFormScreen.Bounds.Location; Point p = new Point(secondaryFormScreen.Bounds.Location.X, secondaryFormScreen.Bounds.Location.Y); secondaryForm.Location = p; secondaryForm.Show(); 

यदि आप एक विशिष्ट स्क्रीन के लिए आगे देख रहे हैं, तो आप "Screen.AllScreens" पर लूप कर सकते हैं और ऊपर की प्रक्रिया का उपयोग कर सकते हैं।

मैं इसे एक XNA 4 ड्यूल स्क्रीन एप्लीकेशन (पूर्ण स्क्रीन XNA गेम विंडो + WinForm) के लिए प्रयोग किया था

Form_Load () विधि में, निम्न कोड डालें:

 var primaryDisplay = Screen.AllScreens.ElementAtOrDefault(0); var extendedDisplay = Screen.AllScreens.FirstOrDefault(s => s != primaryDisplay) ?? primaryDisplay; this.Left = extendedDisplay.WorkingArea.Left + (extendedDisplay.Bounds.Size.Width / 2) - (this.Size.Width / 2); this.Top = extendedDisplay.WorkingArea.Top + (extendedDisplay.Bounds.Size.Height / 2) - (this.Size.Height / 2); 

स्टार्टअप स्थिति संपत्ति मैनुअल को सेट करें

  public void MoveWindowToProjector () { Rectangle rectMonitor; // Create New Process Process objProcess = new Process(); //Get All the screens associated with this Monitor Screen[] screens = Screen.AllScreens; // Get Monitor Count int iMonitorCount = Screen.AllScreens.Length; // Get Parameters of Current Project string[] parametros = Environment.GetCommandLineArgs(); // if (parametros.Length > 0) // { //objProcess.StartInfo.FileName = parametros[0]; // objProcess.Start(); // } // Get Window Handle of this Form IntPtr hWnd = this.Handle; Thread.Sleep(1000); if (IsProjectorMode) { if (iMonitorCount > 1) // If monitor Count 2 or more { //Get the Dimension of the monitor rectMonitor = Screen.AllScreens[1].WorkingArea; } else { //Get the Dimension of the monitor rectMonitor = Screen.AllScreens[0].WorkingArea; } } else { rectMonitor = Screen.AllScreens[0].WorkingArea; } if (hWnd != IntPtr.Zero) { SetWindowPos(hWnd, 0, rectMonitor.Left, rectMonitor.Top, rectMonitor.Width, rectMonitor.Height, SWP_SHOWWINDOW); } } 
  Screen[] screens = Screen.AllScreens; sc aoc = new sc(); aoc.Show(); aoc.Location = Screen.AllScreens[INDEX OF YOUR AVAILABLE SCREENS TARGET].WorkingArea.Location; 

अधिकतम विन्डो स्टेट के लिए

 aoc.WindowState = FormWindowState.Maximized; 

किसी एक्स, वाई स्थिति के लिए

 aoc.Location = new Point(TARGET X POSITION, TARGET Y POSITION);