[英]User Control Label and Textbox flow from right to left
很難為這個問題想一個標題,所以我會在這里做更好的解釋。
我需要創建一個動態Windows窗體,以便當復選框被選中/取消選中時,很少有輸入字段出現/消失。 據我所知,FlowLayoutPanel似乎是實現這一目標的最佳工具。 因此,我創建了一個包含標簽和文本框的自定義用戶控件。 我在VS2013 desginer視圖中設計了這個新控件:
由於標簽上的文本長度可以變化,因此僅在標簽已結束時才開始文本框,這一點很重要。 但是我現在得到的結果是這樣的:
標簽應讀出“ ConnField”而不是“ ConnFie”。 我嘗試在FlowLayoutPanel中添加這些項目,但導致標簽和文本框無法正確排列。 為了獲得預期的結果,應該設置任何屬性/屬性嗎? 我應該使用一個對我有用的容器嗎?
附帶說明一下,如果還有其他方法可以動態地顯示/隱藏元素(如上所述),我會很樂意使用這些方法。
為了完美匹配,您可以編寫TextChanged
事件腳本,以確保TextBox
始終位於適當的位置並保持良好的大小。
我已將Label
和TextBox
放入Panel
進行測試。 您可能不需要或不需要textBox1_TextChanged
事件,但是它非常適合測試。.:
private void textBox1_TextChanged(object sender, EventArgs e)
{
label1.Text = textBox1.Text; // this is for testing
}
private void label1_TextChanged(object sender, EventArgs e)
{
textBox1.Left = label1.Right + 6; // <= this is what you need
textBox1.Width = panel2.Width - label1.Width - 8; // <= this is nice to have
}
當然,您的偏移量可能會有所不同。並且顯然Label
具有AutoSize = true
編輯
由於您評論了使文本框在行之間彼此對齊的問題,因此這里有一些關於此問題的想法。 正如漢斯(Hans)所言,您不可能擁有全部:
這三個目標沖突。 因此,您需要做出讓步:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.