2011-06-06 40 views
6

環境

  • 的Windows XP X32的Visual Studio 2005標準版
  • 霍尼韋爾海豚9500運行Windows Mobile 2003(掌上電腦2003)使用內置的條形碼掃描儀和B &頭黑白攝像機使用他們的SDK位於here
  • .NET Compact Framework的1.0 SP3和.NET Framework 1.1
  • 使用VC#

目標

我有一個表格上CheckBoxes = trueView = Details ListView控件,但我不希望複選框由用戶「檢查」。我正在使用它進行記錄完成的狀態顯示。然而,我確實希望使用事件處理函數通過代碼來檢查框(即在記錄完成時:lvMeters_ItemCheck(null, null);)。如何保持C#ListView控件與行選擇上的「檢查」複選框?

問題

我已經停用檢查框本身(我認爲,觸摸屏是不是真正的精確在此設備上)。但是,當選擇一行(我有FullRowSelect = true)時,控件經常檢查複選框,並且事件處理程序似乎沒有被調用。

事情我已經試過

我想基本上撤消在事件處理程序的操作:

private void lvMeters_ItemCheck(object sender, ItemCheckEventArgs e) 
{ 
    if (sender is ListView) 
    { 
     if (e.CurrentValue == CheckState.Checked) 
      lvMeters.Items[e.Index].Checked = true; 
     else 
      lvMeters.Items[e.Index].Checked = false; 
    } 
    else if (e.CurrentValue == CheckState.Checked) 
     lvMeters.Items[e.Index].Checked = false; 
    else 
     lvMeters.Items[e.Index].Checked = true; 
} 

的問題是上面的處理程序不被調用的一個列表視圖中選擇,也沒有了SelectedItemChanged事件處理程序調用此事件處理程序,但它仍然檢查select上的框。它在檢查盒子本身時確實會被調用。

需要更多信息?

問了,我會盡我所能!

我是一個新手

所以,請隨時告訴我,我這樣做完全錯誤的,應該做的整個事情是不同的。

+2

+1一個真正良好的格式化/深思熟慮的問題 – ctacke 2011-06-06 20:28:31

回答

0

嘆息......我以某種方式設法從設計中移除了事件處理函數。我在某個時候檢查過,它仍然存在,但在那時我確實有邏輯/代碼問題。

謝謝您的回答:/

0

我不熟悉緊湊框架上ListView的限制,但在標準框架上,您可以使用TreeNode.StateImageIndex屬性。未檢查/檢查狀態實際上是使用嵌入標準winforms代碼的小圖像(如果我沒有記錯,它們是索引1和2)。因此,例如,如果您這樣做:

private void lvMeters_ItemCheck(object sender, ItemCheckEventArgs e) 
{ 
    e.Item.StateImageIndex = 3; 
} 

它將更改小圖標並將其設置爲空。您也可以使用ListView ImageList。

+0

的問題是,我lvMeters_ItemCheck事件處理函數是沒有得到所謂的,除非我明確地點擊每個複選框部分ListView中的項目。如果我點擊另一欄中的部分項目,它不會調用處理程序,但會經常檢查該框。 – 2011-06-06 20:33:44