2010-10-21 15 views
5

अभी मैं स्पष्ट करता हूं कि यह एक डुप्लिकेट प्रश्न हो सकता है: Right-aligned labels in WinForms लेकिन उत्तर में से कोई भी मुझे संतुष्ट नहीं करता है।WinForms: दाएं संरेखित लेबल autosize

समस्या बहुत सरल है:

मैं AutoSize के साथ गठबंधन लेबल एक सही को सही पर setted है। अपेक्षित व्यवहार यह है कि जब पाठ बढ़ जाता है तो सही समन्वय अपरिवर्तित रहता है। लेकिन ऐसा नहीं होता है कि यह क्या होता है। बाएं समन्वय वह है जो अपरिवर्तित बनी हुई है।

मेरा ऐप छोटा है, इसलिए मैं पैनलों में नियंत्रण डालना शुरू नहीं करना चाहता हूं .. इसलिए मैंने केवल उन सभी समाधानों को आजमाया है जिनमें केवल लेबल गुण शामिल हैं। काम करने वाला एकमात्र काम झूठ और अधिक आकार में ऑटोसाइज सेट करना है। (प्रश्न एनसी 1692383 का स्वीकार्य समाधान)। लेकिन यह वास्तव में बदसूरत है !!! मैं वास्तव में उस से बचने के लिए पसंद करेंगे।

कोई अन्य सकारात्मक समाधान ??

अग्रिम धन्यवाद!

+0

कृपया मेरा संपादित उत्तर देखें। जब फॉर्म का आकार बदल गया था तो मूल संस्करण सही ढंग से काम नहीं करता था। –

+0

Tahnks @adrift !!! मुझे एहसास नहीं हुआ कि पहले व्यक्ति ने काम नहीं किया था। – Diego

उत्तर

7

एक समाधान प्रपत्र निर्माता में लेबल के सही मार्जिन पर कब्जा करने की होगी, और लेबल SizeChanged घटना में, प्रारंभिक सही मार्जिन के आधार पर स्थान को रीसेट, लेबल के वर्तमान Width और लेबल जनक की वर्तमान Width

यह भी मानता है कि लेबल आकार बदलने को संभालने के अधिकार पर लेबल लगाया गया है।

private readonly int _rightMargin; 

public Form1() 
{ 
    InitializeComponent(); 

    _rightMargin = label1.Parent.Width - label1.Right; 
} 

private void label1_SizeChanged(object sender, EventArgs e) 
{ 
    label1.Location = new Point(label1.Parent.Width - _rightMargin - label1.Width, label1.Top); 
} 
संबंधित मुद्दे