簡體   English   中英

用戶控件標簽和文本框從右向左流動

[英]User Control Label and Textbox flow from right to left

很難為這個問題想一個標題,所以我會在這里做更好的解釋。

我需要創建一個動態Windows窗體,以便當復選框被選中/取消選中時,很少有輸入字段出現/消失。 據我所知,FlowLayoutPanel似乎是實現這一目標的最佳工具。 因此,我創建了一個包含標簽和文本框的自定義用戶控件。 我在VS2013 desginer視圖中設計了這個新控件:

自定義用戶控件

由於標簽上的文本長度可以變化,因此僅在標簽已結束時才開始文本框,這一點很重要。 但是我現在得到的結果是這樣的:

實際的自定義用戶控件

標簽應讀出“ ConnField”而不是“ ConnFie”。 我嘗試在FlowLayoutPanel中添加這些項目,但導致標簽和文本框無法正確排列。 為了獲得預期的結果,應該設置任何屬性/屬性嗎? 我應該使用一個對我有用的容器嗎?

附帶說明一下,如果還有其他方法可以動態地顯示/隱藏元素(如上所述),我會很樂意使用這些方法。

為了完美匹配,您可以編寫TextChanged事件腳本,以確保TextBox始終位於適當的位置並保持良好的大小。

我已將LabelTextBox放入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)所言,您不可能擁有全部:

  • 標簽內容的完全自由
  • 完美契合
  • 和對齊的文本框

這三個目標沖突。 因此,您需要做出讓步:

  • 如果您可以將內容限制為固定的最大值,則結果看起來最好
  • 有時,讓同事或什至用戶查看內容以找到一種表達意思的捷徑是有幫助的
  • 省略號或縮寫可能會有所幫助。 在兩種情況下,您都應該設置一個工具提示以顯示全部內容
  • 另一種選擇是為某些標簽切換到較窄的字體
  • 代替2個或3個固定大小的Label可能會有所幫助:外觀有些參差不齊,但看起來比完全自由的大小要好得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM