2012-09-24 14 views
6

मैं तालिकाLayoutPanel का उपयोग कर रहा हूं उदाहरण के लिए यदि मेरे पास 3 पंक्तियां और 5 कॉलम हैं। मैं पूरे पैनल के लिए केवल बाहरी सीमा खींचना चाहता हूं। डिफ़ॉल्ट रूप से पैनल सेलबॉर्डर स्टाइल प्रदान करता है जो उपलब्ध सभी कोशिकाओं के लिए सभी तरफ सीमाओं को जोड़ता है। क्या कोई रास्ता है जहां हम केवल बाहरी सीमाओं को निर्धारित कर सकते हैं?TableLayoutPanel Cells के लिए केवल बाहरी सीमा बनाएं

मैंने नीचे एक नमूना कोड प्रदान किया है।

TableLayoutPanel tblPanel = new TableLayoutPanel; 
    tblPanel.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single; 
    Label lblName; 
    TextBox txtName; 
    Button btnAdd; 
    int colCnt = 0; 
    for(int rw =0; rw < 3; rw++) 
    { 
      lblName = new Label(); 
      lblName.Name = "mylabel" + rw.ToString(); 
      tblPanel.Controls.Add(lblName, colCnt, rw); 
      colCnt++; 

      txtName = new TextBox(); 
      txtName.Name = "mytext" + rw.ToString(); 
      tblPanel.Controls.Add(txtName, colCnt, rw); 
      colCnt++; 

      btnAdd = new Button(); 
      btnAdd.Name = "mybutton" + rw.ToString(); 
      tblPanel.Controls.Add(btnAdd, colCnt, rw); 

      colCnt = 0; 
    } 
+1

यदि आप कुछ और संदर्भ प्रदान नहीं करते हैं तो आपको अच्छे उत्तर पाने की संभावना नहीं है। आपने पहले से क्या प्रयास किया है? –

+0

याहू, मैंने बस उसे बेरेट किया, लेकिन चलो उसे मौका दें। – fernandoespinosa

उत्तर

5

मुझे लगता है कि आप एक बहुत ही नए पोस्टर हैं। आचरण संहिता यह है कि आपको वास्तव में यह दिखाना चाहिए कि आपने क्या किया है और तकनीकी मुद्दों को इंगित किया है। इस तरह से सवाल पूछें (विशेष रूप से वे जो आपको दिखते हैं कि आपने कुछ भी कोशिश नहीं की है)।

उसने कहा, और आपकी मदद करने की कोशिश कर रहे हैं, तो आप सेल सीमा को चित्रित करने से बेहतर होंगे। निम्नलिखित लाइनों के साथ कुछ का यह है, तो अनुकूलित:

public TableForm() { 
     InitializeComponent(); 
     this.tableLayoutPanel.CellPaint += tableLayoutPanel_CellPaint; 
    } 

    private void tableLayoutPanel_CellPaint(object sender, TableLayoutCellPaintEventArgs e) { 
     e.Graphics.DrawLine(Pens.Black, e.CellBounds.Location, new Point(e.CellBounds.Right, e.CellBounds.Top)); 
    } 

डिजाइन समय: At design-time

रनटाइम पर: At runtime

+3

आचरण का कोई कोड नहीं है। यह एक क्यू एंड ए साइट है। इसका उद्देश्य सूचना का ज्ञान आधार होना है जो दूसरों को समय बर्बाद करने में मदद कर सकता है। कृपया मुझे एफएक्यू को इंगित करें जहां यह आपके तथाकथित आचार संहिता का उल्लेख करता है। –

+0

इसे गलत मत समझो। ' 'अब, थोड़ा ऑफ-विषय जा रहा है, कोई भी आलस्य से बाहर सवाल उठा सकता है और खराब तरीके से तैयार किया जा सकता है ... बस बहुत सम्मान पाने की उम्मीद न करें ... बहुत कम जवाब (जिसे वह मिला।) कोड उत्साह एकमात्र चीज है जो यहां सम्मानजनक है। ' – fernandoespinosa

+0

मैं गया और प्रश्न के संपादन इतिहास की जांच की। अब मैं देखता हूं कि आप मूल प्रश्न से रोमांचित क्यों नहीं थे। :-) –

2

TableLayoutPanel ही CellBorderStyle को छोड़कर सीमा के लिए एक संपत्ति का समर्थन नहीं करता जो वह नहीं है जो आप चाहते हैं।

मेरा सुझाव है कि आप अपने TableLayOutPanel को पैनल नियंत्रण में डाल दें और अपने TableLayOutPanel को भरने के लिए डॉक प्रॉपर्टी सेट करें।

आप क्या चाहते करने के लिए पैनल के फिर सेट BorderStyle (FixedSingle या Fixed3D)

3

TableLayoutPanel वास्तव में BorderStyle संपत्ति, का समर्थन करता है जो आप क्या चाहते हैं। उदाहरण के लिए:

tableLayoutPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 

https://msdn.microsoft.com/en-us/library/system.windows.forms.tablelayoutpanel.borderstyle(v=vs.110).aspx

यह साथ सजाया गया है:

[Browsable(false)] 
[EditorBrowsable(EditorBrowsableState.Never)] 

तो Intellisense आप के लिए यह नहीं दिखाया जाएगा, लेकिन यह प्रलेखित है और यह काम करता है। मुझे कोई अंतर्दृष्टि नहीं है कि यह गैर-ब्राउज़ करने योग्य क्यों है।

+0

इस जानकारी के लिए धन्यवाद। यह एक असंभव सरल समाधान है! –

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