2013-07-18 8 views
5

मेरे पास एक साधारण 1x3 TableLayoutPanel है। मैं एक बहुत ही साधारण चीज़ प्राप्त करना चाहता हूं: जब खिड़की का आकार बदलता है, तो मध्य पंक्ति का आकार बदलें और ऊपर और नीचे वाले रखें। मैंने तार्किक चीज करने की कोशिश की, जो कठोर शीर्ष और निचले पंक्ति आकार और मध्य पंक्ति के लिए स्वत: स्थापित कर रहा है। दुर्भाग्यवश, यह नीचे की पंक्ति है जो आकार बदलती है।विंडो का आकार बदलते समय TableLayoutPanel पंक्ति का स्वचालित रूप से आकार बदलें

// 
// tableLayoutPanel1 
// 
this.tableLayoutPanel1.ColumnCount = 1; 
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); 
this.tableLayoutPanel1.Controls.Add(this.topPanel, 0, 0); 
this.tableLayoutPanel1.Controls.Add(this.middlePanel, 0, 1); 
this.tableLayoutPanel1.Controls.Add(this.bottomPanel, 0, 2); 
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; 
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); 
this.tableLayoutPanel1.Name = "tableLayoutPanel1"; 
this.tableLayoutPanel1.RowCount = 1; 
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 140F)); 
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); 
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 24F)); 
this.tableLayoutPanel1.Size = new System.Drawing.Size(1102, 492); 
this.tableLayoutPanel1.TabIndex = 19; 

सभी आंतरिक पैनलों में डॉक सेट भरने और डिफ़ॉल्ट एंकर होते हैं। मैं क्या गलत कर रहा हूं?

उत्तर

8

मध्य पंक्ति को 100% तक बदलें, जो सिस्टम को बताएगा कि मध्यम पंक्ति किसी भी अंतर को भर देगी। तो यह परिवर्तन (मैं अपने अपने designer.cs विश्वास करते हैं):

this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); 

रहे हैं:

this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); 

चेक TableLayoutPanel.RowStyle from MSDN: RowStyle साथ

  1. पंक्तियाँ निरपेक्ष करने के लिए सेट पहले माना जाता है, और उनकी निश्चित ऊंचाई आवंटित की जाती है।
  2. पंक्तियों के साथ पंक्तियां ऑटोसाइज पर सेट की गई हैं, उनकी सामग्री के आकार में हैं।
  3. शेष स्थान पंक्तियों के बीच पंक्तियों के बीच विभाजित है जो प्रतिशत सेट पर प्रतिशत है।
1

पहली और तीसरी पंक्तियों के लिए आप सेट पूर्ण आकार:

tableLayoutPanel1.RowStyles[0].Height = 100; 
tableLayoutPanel1.RowStyles[0].SizeType = SizeType.Absolute; 
tableLayoutPanel1.RowStyles[2].Height = 100; 
tableLayoutPanel1.RowStyles[2].SizeType = SizeType.Absolute; 

यकीन है कि दूसरा (मध्य) पंक्ति SizeType = SizeType.Percent और Height = 100 होना चाहिए होने के लिए। आपका Form अधिकतम की Height 200.

1

मैं

this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom))); 
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); 
    this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); 
    this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); 

किया होना चाहिए और यह लंगर ऊपर और नीचे मुझे यकीन है कि बनाया स्थापना करके काम किया ... कि आकार बदल पंक्ति बड़ा बढ़ेगा/छोटे, और पहली और तीसरी पंक्तियों को पूर्ण आकार और मध्यम प्रतिशत आकार बनाकर मैंने सुनिश्चित किया कि केवल मध्यम बड़ा/छोटा हो जाएगा

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