2012-04-18 43 views
2

我正在使用DatagridView,其中有16行,每行都有一個組合框。當我嘗試將最下面一行中的組合框放入其中時,出現問題,其中有20-30個物品。下拉菜單中的滾動條消失,並且下拉框顯示在窗口屏幕區域下方。任何可能的解決方案,所以下拉打開到頂部。 Framework 2.0。組合框下拉列表正在窗口屏幕下方。

+4

Winform或WPF或Asp.Net或Silverlight? – OmegaMan 2012-04-18 13:24:38

回答

1

我無法複製該問題。我試着移動這個窗口並打開各種組合框。如果它不適合下降,它會下降,因此完全在屏幕上。

using System; 
using System.Linq; 
using System.Windows.Forms; 

class MainForm : Form 
{ 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new MainForm()); 
    } 

    public MainForm() 
    { 
     string[] comboSource = Enumerable.Range(1, 30).Select(i => String.Format("Item #{0}", i)).ToArray(); 

     Controls.Add(new DataGridView 
     { 
      AutoGenerateColumns = false, 
      Columns = { new DataGridViewComboBoxColumn { HeaderText = "Item", DataSource = comboSource }, }, 
      DataSource = comboSource, // just adding dummy items for effect 
      Dock = DockStyle.Fill, 
     }); 
    } 
} 

您是否可以生成一個類似的簡單示例來重複該問題?

+0

我只在Windows XP上面對這個問題,在Windows 7上完全沒問題,沒有任何代碼變化。由於下拉列表有超過16項滾動條彈出窗口,第一次單擊組合框下拉菜單,但如果再次單擊該滾動條消失,並且控件僅在可見的屏幕區域下方,因此幾乎不可能選擇所需的項目任何想法爲什麼會發生? – zreecu 2012-04-19 09:43:37

+0

我猜XP上的組合框控件壞了?我自己沒有遇到過這個。在即將使用的ComboBox變得可見並將其移動之前,可以自己執行邊界檢查。 – Tergiver 2012-04-19 15:38:48