2013-04-17 46 views
2

我知道標籤無法獲得焦點,但它似乎無法響應標籤切換。但是我需要的僅僅是當用戶使用標籤的時候執行一些操作,因此只在標籤上有一個表單。例如,每個標籤都有一個關聯的文本框,但是當該標籤可見時該文本框是隱藏的,反之亦然。我想要的是允許用戶使用標籤在窗體上的隱藏文本框之間切換,通常,所有文本框在顯示所有標籤時都是隱藏的,標籤應該是可以聚焦的,這樣當使用標籤時,它可以知道(如某些事件)顯示關聯的文本框並隱藏自身,當切換到另一個標籤時,顯示關聯文本框的當前標籤將再次變爲可見並且其關聯文本框將變爲隱藏。在標籤之間切換時執行一些操作?

我必須實現這種2合1控件(在合成控件中的文本框和標籤),因爲我只想顯示文本(無邊框和背景),就好像文本框具有透明背景一樣,只顯示文本框(並隱藏標籤),當用戶需要編輯時(通過單擊字段或使用選項卡開始)。如果有透明的背景文本框,這對我來說應該會更容易一些,但在Windows窗體的世界中沒有體面的。請注意,我也知道在CodeProject上的一篇文章中提出的alpha混合透明文本框,而是因爲文本呈現錯周圍的文本路徑(某種失蹤抗鋸齒的醜陋的邊界不能滿足我的需要,但它甚至比這更糟)。

我真的很可惜,如果這個機制不能實施,形式更好看,當所有的領域似乎只顯示信息,但點擊或標籤開關可以讓在編輯模式下用戶的跳躍。 我希望有一些解決方案。先謝謝你。

+1

你有一定坡度的或圖片的背景,這意味着你不能只用一個普通的文本框,並設置背景色和邊框樣式? –

+0

你不能只監視按鍵? –

+0

@JamesB是的,文本框的父級背景是漸變的(不是純色),所以根據父級背景改變文本框的背景色將無濟於事。 –

回答

2

我發現在我的腦海該解決方案由一個心血來潮。我不認爲有這樣的解決方案,但它確實有助於解決我的問題(我相信很多其他人都會從中受益)。簡單地說,我必須創建自己的標籤,繼承UserControl。我之前並沒有想到UserControl,這非常有幫助。可以很容易地將可見度,透明背景,無邊框等完成到UserControl。我必須自己做的唯一的自定義功能是渲染文本,這也是非常簡單的,有很多方法可以做。我只是給用戶控件並設置標籤的Dock添加一個Label到DockStyle.Fill,調整用戶控件適當的高度,這一切。

感謝上帝幫助我認爲用戶控件的嘗試任何其他複雜的解決方案之前,如聽TAB和SHIFT + TAB按鍵事件。

+0

+1。很高興你破解它。 –

+0

非常感謝:) –

相關問題