2008-10-13 10 views
10

मैं अपनी विंडो को शीर्षक बार नहीं बना सकता लेकिन कुछ वर्णनात्मक टेक्स्ट के साथ टास्क बार में दिखाई दे सकता हूं? यदि आप फॉर्म की सेट करते हैं। तोक्स्ट प्रॉपर्टी तो .net इसे एक टाइटल बार देता है, जिसे मैं नहीं चाहता हूं।विंडो बनाने के लिए टास्कबार टेक्स्ट कैसे है लेकिन कोई शीर्षक पट्टी

 this.ControlBox = false; 
     this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; 
     this.MaximizeBox = false; 
     this.MinimizeBox = false; 
     this.ShowInTaskbar = true; 
     this.Text = "My title for task bar"; 

मैं एक आंशिक समाधान मिल गया है, CreateParams ओवरराइड करने के लिए:

protected override System.Windows.Forms.CreateParams CreateParams 
    { 
     get 
     { 
      System.Windows.Forms.CreateParams cp = base.CreateParams; 
      cp.Style &= ~0x00C00000; // WS_CAPTION 
      return cp; 
     } 
    } 

हालांकि इस का कारण बनता है के रूप में यदि वे एक शीर्षक पट्टी है मेरी खिड़की, आकार दिया जा करने के लिए यानी यह लम्बे की तुलना में यह होना चाहिए है। क्या इसका कोई अच्छा समाधान है?

उत्तर

5

एक दृष्टिकोण पर विचार करने के लिए अपने Form को None (FixedDialog के बजाय) के FormBorderStyle गुण सेट करने के लिए हो सकता है।

इस दृष्टिकोण की कमी यह है कि आप अपनी खिड़की के साथ-साथ टाइटलबार की सीमाएं खो देते हैं। इसका नतीजा यह है कि आप फॉर्म को पुनर्स्थापित/आकार देने वाले तर्क को खो देते हैं जिसे आप आमतौर पर विंडोज़ फॉर्म के साथ "मुफ्त में" प्राप्त करते हैं; आपको फ़ॉर्म के माउसडाउन और माउसमोव इवेंट हैंडलर में अपने फॉर्म को स्थानांतरित/आकार बदलने के द्वारा इसे निपटाने की आवश्यकता होगी।

मुझे बेहतर समाधानों के बारे में भी सुनना होगा।

2

बस सीमा शैली को किसी के लिए सेट करें।

this.FormBorderStyle = FormBorderStyle.None; 
2

एक बार जब आपने फॉर्मबॉर्डर स्टाइल के साथ सीमाएं हटा दी हैं, जैसा कि पहले से उल्लेख किया गया है, तो आप इसे आसानी से खींच सकते हैं। मैं इसे http://www.blackwasp.co.uk/DraggableBorderless.aspx पर वर्णित करता हूं।

+0

अच्छा और उदाहरण, लेकिन वास्तविक दुनिया में, लेकिन फॉर्म को खींचने के साथ अक्सर अधिक विचार होते हैं, उदाहरण के लिए, यदि माउस नियंत्रण में है या नियंत्रण के बीच है, या हम चाहते हैं तो हम खींचना नहीं चाहते हैं यदि यह सीमाओं के करीब है तो आकार बदलें। – dbkk

+0

बिल्कुल। आपको यह भी कैप्चर करने की आवश्यकता है कि आप फॉर्म सीमा के करीब कितने करीब हैं, माउस पॉइंटर बदल रहे हैं, विंडोज़ से पसंदीदा सीमा आकार प्राप्त कर रहे हैं आदि। हालांकि एक उदाहरण के लिए थोड़ा अधिक - शायद मैं एक और बनाउंगा। – BlackWasp

6

मेरे मामले में मैं FormBorderStyle = FormBorderStyle.SizableToolWindow के साथ एक फार्म और चाल निम्नलिखित CreateParams ओवरराइड किया है (यानी मैं अब शीर्षक के बिना और शीर्षक के लिए अतिरिक्त मार्जिन के बिना एक रूप है, लेकिन यह कार्य पट्टी में शीर्षक रहता है):

protected override System.Windows.Forms.CreateParams CreateParams 
{ 
    get 
    { 
     var parms = base.CreateParams; 
     parms.Style &= ~0x00C00000; // remove WS_CAPTION 
     parms.Style |= 0x00040000; // include WS_SIZEBOX 
     return parms; 
    } 
} 
संबंधित मुद्दे