2010-07-09 13 views
6

मैं सिर्फ यह जानना चाहता हूं कि उपयोगकर्ता स्क्रीन के शीर्ष पर एक विंडोज़ फॉर्म डॉक करना संभव है या नहीं? मैं मैन्युअल रूप से अपने फॉर्म की स्थिति को मैन्युअल रूप से समन्वयित करने के लिए ऐसा करने की कोशिश कर रहा हूं। लेकिन इस विधि का उपयोग करते हुए, उपयोगकर्ता को इसे खींचकर फ़ॉर्म की स्थिति बदलने की अनुमति देता है। मैं स्क्रीन के ऊपरी हिस्से में फॉर्म को डॉक करना चाहता हूं क्योंकि यह विंडो फॉर्म मैं जो प्रोजेक्ट बना रहा हूं उसके लिए मेनू के रूप में सर्वर होगा।सी # में विंडोज़ फॉर्म को कैसे डॉक करें?

बहुत बहुत धन्यवाद। :)

उत्तर

1

तो कुछ बदलावों के बाद मैं अंत में यह कोड काम करने में सक्षम था।

this.DesktopLocation = new Point((Screen.PrimaryScreen.Bounds.Width/2 - 420), 0); 

मैं जो कुछ भी संकल्प मूल्यों के साथ स्क्रीन के बीच करने के लिए अपने प्रपत्र InitializeComponent() है और यह नाव नीचे है कि रेखा रखा।

3

मैं Control.Dock संपत्ति का उपयोग DockStyle गणना मूल्यों में से एक के साथ करने पर विचार करता हूं।

आपको Layout के साथ भी खेलने की आवश्यकता हो सकती है, ताकि आप चयनित DockStyle पर निर्भर रूप से अपने फॉर्म के नियंत्रण को लेआउट कर सकें।

आपको Control.Location संपत्ति पर विचार करने के लिए, मेरे दृष्टिकोण में, आपको यह पता होना चाहिए कि DockStyle आपके फॉर्म को डॉक करने के लिए मूल्य है।

संपादित करें # 1

आपका विंडोज फार्म एक Dock संपत्ति के रूप में यह Control से विरासत है।

  1. हर बार जब आपके प्रपत्र, स्क्रीन के अपने दाईं ओर के करीब आता है उदाहरण के लिए, या एमडीआई कंटेनर की है, तो आप सही सही डॉक करने के लिए करना चाहते हैं:

    के निम्नलिखित पर विचार करें? (यहां थोड़ा शब्द खेलें ... = पी) तो, आपको Control.LocationChanged ईवेंट की सदस्यता लेनी होगी।

    private void myForm_LocationChanged(object sender, EventArgs e) { 
        if (this.Location.X > 900) then 
         this.Dock = DockStyle.Right; 
        else if (this.Location.X < 150) then 
         this.Dock = DockStyle.Left; 
        else if (this.Location.Y > 600) then 
         this.Dock = DockStyle.Bottom; 
        else if (this.Location.Y < 150) then 
         this.Dock = DockStyle.Top; 
        else 
         this.Dock = DockStyle.None; 
    } 
    

दरअसल, निरंतर मूल्यों के बजाय, आप वर्तमान डेस्कटॉप संकल्प उपयोग करने और उससे एक अनुपात है जहाँ आप अपने डॉकिंग घटित करना चाहते हैं की गणना करना चाहिए।

*** अस्वीकरण: **** यह कोड इस प्रकार प्रदान किया गया है और इसका परीक्षण नहीं किया गया है। यह एल्गोरिदम उम्मीद है कि आपको डॉकिंग प्रक्रिया के माध्यम से आपको मार्गदर्शन करने के लिए पर्याप्त रूप से मार्गदर्शन करना होगा। अनुरोध पर आगे सहायता लाई जा सकती है। * =)

ऐसा लगता है कि Form.DesktopLocation संपत्ति आपकी मुख्य विंडो के लिए नौकरी के लिए उग्र उपकरण है, जिसका अर्थ है कि आपका एमडीआई कंटेनर, उदाहरण के लिए। अन्य खिड़कियों के लिए, मैं कुछ ऐसे कोड के साथ जाऊंगा जो प्रदान किए गए कोड नमूने की तरह दिखता है।

क्या इससे मदद मिलती है?

संपादित करें # 2

आप, फार्म के अतिव्यापी रोकने शायद Control.BringToFront() विधि से पहले या Control.Show() विधि करने के लिए अपने कॉल के बाद यह कर सकता है, क्या आप के लिए सबसे अच्छा काम करता पर निर्भर करता है चाहते हैं।

+0

नमस्ते करने के लिए उपयोगकर्ताओं के लिए विकल्पों तुम भी ShowInTaskbar संपत्ति सेट कर सकते हैं दूर ले जाना चाहते हैं, धन्यवाद। मैं विजुअल स्टूडियो 2008 की व्यापक कार्यक्षमताओं का उपयोग करने के लिए थोड़ा नया हूं और मुझे नहीं पता कि मैं Control.Dock प्रॉपर्टी का उपयोग कैसे कर सकता हूं। क्या आप कृपया मुझे कुछ उदाहरण दे सकते हैं कि मैं उन गुणों का उपयोग कैसे कर सकता हूं? धन्यवाद :) – Smiley

+0

यह एक रूप में डॉकिंग नियंत्रण के लिए है, पूरे फॉर्म को डॉकिंग के लिए नहीं। –

+0

@ जौके वान डेर मास: मुझे लगता है कि आपने मेरे सभी जवाब नहीं पढ़े हैं। मैं 'डेस्कटॉप स्थान' संपत्ति का उल्लेख करता हूं, यानी डेस्कटॉप पर पूरी विंडो को डॉक करने के लिए। इसके अलावा, मेरा सुझाव है कि ओपी के विचार के बाद यह नौकरी के लिए एक बेहतर उपकरण हो सकता है। कृपया तदनुसार अपनी टिप्पणी संशोधित करें। –

0

अपने फॉर्म के FormBorderStyle को None पर सेट करके, आप ड्रैग हैंडल को उपयोगकर्ता से दूर ले जाते हैं ताकि वे इसे माउस के माध्यम से स्थानांतरित न कर सकें।

फिर आपको बस इसे स्थानांतरित करने की आवश्यकता है जहां आप चाहते हैं। प्रतिक्रिया के लिए

तुम सच में झूठी

संबंधित मुद्दे