2010-08-24 27 views
0

我想知道是否有可能使一個單一的組合框不可見或禁用只有特定的行?是否有可能使一個組合框在gridview中的某一行上不可見?

現在我有這樣的事情

private void gvAirSegment_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 
     if (e.ColumnIndex+1 == gvAirSegment.Columns["RemarkLine"].Index) 
     { 
      if (!gvAirSegment.CurrentCell.Selected) 
      { 
       gvAirSegment.Columns[2].Visible = true; 
      } 
      else 
      { 
       gvAirSegment.Columns[2].Visible = false; 
      } 
     } 
    } 

其上覆選框的點擊它隱藏了整列,但我想它,只有組合框是不可見/禁用。

如果我能有這將是最好的,如果我能變成一個GridViewComboBox到ComboBox控件

感謝

+0

你最終選擇了哪個答案? – 2010-08-30 15:20:38

+1

這兩個組合(一些控件我用只讀和另一列我用一個空白的DataGridViewCell替換控件,效果很好,但似乎有點凌亂 – Spooks 2010-08-30 16:00:06

+0

是的,這是舊的權衡...方便和易於 - 代碼與控制你想如何顯示 – 2010-08-30 16:02:57

回答

1

由於組合框綁定到單元格類型,如果我理解了您的問題,則無法隱藏整個單元格就無法真正隱藏它。但是,您可以將控件設置爲只讀。

gvAirSegment.Rows[e.RowIndex].Cells[2].ReadOnly = true; 
+1

確實工作,只讀不是按預期工作,但:(它仍然看起來應該能夠被選中(對於最終用戶,他們會認爲它只是不工作) – Spooks 2010-08-24 17:38:31

+0

我明白你的意思,恐怕那些將成爲你唯一的兩個選擇...只讀或完全隱藏列(或者採取布拉德的建議,並更換單元本身) 如果你想解耦合組合框從單元格開始,您需要使用DataGridView以外的控件,並在網格單元格中管理自己的控件。可能不是一個可口的選項(儘管擴展了gri d控件,可以很容易地使用子控件) – 2010-08-24 20:06:45

1

您可以將基類DataGridViewCell的新實例的控制對於任何細胞適當的列和行,你想從用戶隱藏:

gvAirSegment.Rows[row].Cells[col] = new DataGridViewCell(); 

不要忘記分配Value,因爲覆蓋細胞會破壞存儲的值。

此技術可能不會如果DataGridView綁定到數據源或在虛擬模式下運行,則可以工作。

相關問題