當C#中的組合框動態填充時,組合框顯示爲空白,直到用戶單擊它以查看下拉列表中的可用項目。理想情況下,我想使用這個空白區域(在點擊下拉菜單之前)用於向用戶提供關於他/她應該做什麼的提示。例如,它可能會這樣說:「選擇這樣那樣的......」有沒有辦法做到這一點?我嘗試設置文本屬性,但沒有做任何事情。我正在使用Microsoft Visual C#2008速成版。謝謝。如何將C#comboBox中的空白空間填充爲用戶的提示?
回答
添加了「提示」項組合框:
yourComboBox.Items.Insert(0, "Select one");
然後設置組合框的選擇指數爲0,這樣的:
yourComboBox.SelectedIndex = 0;
集comboBox.SelectedText而不是文本。 (Yay的一致性。)
所有你需要做的就是設置一個事件處理程序。在這種情況下,點擊事件處理程序應該工作。添加如下內容:
private void comboBox1_Click(object sender, EventArgs e)
{
comboBox1.Text = "Please select...?";
}
它被稱爲「提示橫幅」。 Windows窗體不支持它,但它可以用螺栓固定。爲您的項目添加一個新類並粘貼下面顯示的代碼。編譯。將工具箱頂部的按鈕和新控件放到窗體上。將Cue屬性設置爲要顯示的文本。 Vista或Win7需要,只有組合框沒有焦點時,纔會顯示提示。
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
public class ComboBoxEx : ComboBox {
private string mCue;
public string Cue {
get { return mCue; }
set {
mCue = value;
updateCue();
}
}
private void updateCue() {
if (this.IsHandleCreated)
SendMessageCue(this.Handle, CB_SETCUEBANNER, IntPtr.Zero, mCue ?? "");
}
protected override void OnHandleCreated(EventArgs e) {
base.OnHandleCreated(e);
updateCue();
}
// P/Invoke
private const int CB_SETCUEBANNER = 0x1703;
[DllImport("user32.dll", EntryPoint="SendMessageW", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessageCue(IntPtr hWnd, int msg, IntPtr wp, string lp);
}
+1,我不知道這是可能的......它可能會派上用場;) – 2010-03-30 21:40:05
順便說一句,你的實現阻止用戶清除提示,因爲當字符串爲空時你沒有調用SendMessageCue .. 。 – 2010-03-30 21:42:01
是的。嗯,你爲什麼要清除它?代碼調整。 – 2010-03-30 21:44:50
集:
comboBox.SelectedIndex = -1
?這看起來好像只是選擇列表中的第一個選項,而不是實際提示到選擇框中。它是如何工作的? – 2012-08-28 05:29:13
- 1. 如何在下面的示例中填充空白空間?
- 2. 填充R空間中的空白
- 3. 如何填充空白空間當填充不起作用
- 4. 填充JPanel底部的空白空間
- 5. 如何將iframe設置爲自動填充HTML中的空白主體空間
- 6. 如何填充JToolbar中的空白空間
- 7. 突出顯示或填充UIViewController的空白空間
- 8. 如何在隱藏按鈕後用ListView填充空白空間
- 9. 如何使用XSLT填充空白空間?
- 10. C中的空白空間
- 11. 如何轉置一個列表,用空白(T)填充空白?
- 12. 如何動態放置卡片並填充空白空間?
- 13. 如何填充由matlab函數生成的圖像中的空白空間「scatter」
- 14. 填充空間
- 15. Flexbox的填充的div與空白空間時,在兩行
- 16. Treenode填充空白節點C#
- 17. GTK comboBox流動來填充工具欄中的垂直空間
- 18. 在Android上填充FlowLayout的空白空間
- 19. 爲視圖平滑隱藏/顯示動畫並填充空白空間
- 20. 如何填充錨文本和邊界之間的空白時,填充已零?
- 21. 格填充空間時,該值爲空
- 22. JTextPane和空填充空間
- 23. CSS - 使用浮動div自動填充空白空間
- 24. Letterbox圖像並用另一個圖像填充空白空間
- 25. openlayers填充空白區域
- 26. Python填充空白代碼
- 27. ADO.NET空白填充問題
- 28. 填充空白Shell腳本
- 29. 如何修復html元素之間的神祕填充空白?
- 30. 如何在Postgres查詢中填充時間戳空白?
是的,但如果ComboBox是數據綁定將無法正常工作... – 2010-03-30 21:42:28
我還沒有嘗試過在C#中,但我知道在VB.Net你仍然可以添加項目即使它是數據綁定的組合框。技巧是按照插入數據的順序(在數據綁定之前插入數據)。 – 2010-03-30 21:55:55