2014-01-30 59 views
0

我正在使用devexpress TreeList控件。在Treelist中,我有一種情況,只有一列是隻讀的。當另一個單元中發生某事時,該列可能會添加一些文本值。我已經設置屬性這樣Devexpress TreeList - 如何刪除單元格中的值當它設置爲只讀

treeList1.Columns["col3"].OptionsColumn.ReadOnly = true; 

現在我想刪除一些細胞的文本價值,因爲它是隻讀的刪除按鈕不起作用限制在小區內的用戶輸入。你能建議事件/方法和允許用戶刪除文本的代碼嗎? 任何幫助將不勝感激。

+0

能否請您發表您使用的代碼刪除單元格值? – SidAhmed

+0

感謝SidAhmed看我的問題,說實話,我不知道我應該寫什麼來刪除它。我想我必須寫一些單元格事件,並檢查按下的鍵是否刪除該單元格,然後刪除文本。只是想知道是否有人知道在哪個事件中我應該編寫代碼來刪除單元格的文本值。我也在研究這個。 – user1254053

回答

0

編輯解決方案:

你應該知道,當光標在單元格(編輯模式),並按下一個按鈕,這不是誰送KeyDown事件TreeList,但RepositoryItemButtonEdit。所以,你也應該爲RepositoryItemButtonEdit處理事件。

爲了不復制代碼,我寫了一個處理程序'onKeyDown',以驗證誰是發件人。

treeList1.KeyDown += onKeyDown; 
riButtonEdit.KeyDown += onKeyDown; 

這裏是你展示如何處理KeyDown事件都treeListrepositoryButtonEdit,並設置單元格的值null代碼爲例:

private void onKeyDown(object sender, KeyEventArgs e) 
{ 
    // Test if the button pressed is the delete button 
    if (e.KeyCode != Keys.Delete) 
     return; 

    // Test if the focused column is colValue 
    if (treeList1.FocusedColumn != colValue) 
     return; 

    // Set the cell value to null 
    treeList1.FocusedNode.SetValue(colValue, null); 

    // If it's the ButtonEdit who send the event, make it's EditValue null 
    var btnEdit = sender as ButtonEdit; 
    if (btnEdit != null) 
    { 
     btnEdit.EditValue = null; 
    } 
} 
+0

其實我只是因爲在這個單元格中有一個圖標而點擊打開一個對話框。現在,當我將allowedit設置爲false時,那個圖標單擊doe不起作用,所以我不得不讓它只讀,因此允許用戶單擊該圖標,但限制他在該單元格中輸入任何文本。您已根據我的問題提供瞭解決方案,我會接受/將此標記爲答案。如果您能爲這種情況提出解決方法,我將不勝感激,在這種情況下,用戶可以單擊圖像,也可以刪除現有文本,但不能自行輸入文本。非常感謝。 – user1254053

+0

這是我寫的代碼,以顯示圖像以及文本: buttonEdit = new RepositoryItemButtonEdit(); treeList1.ShowButtonMode = DevExpress.XtraTreeList.ShowButtonModeEnum.ShowAlways; buttonEdit.Buttons [0] .Kind = DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph; buttonEdit.Buttons [0] .Image = imageCollection2.Images [0]; treeList1.ForceInitialize(); – user1254053

+0

treeList1.Columns [colName] .AppearanceCell.Options.UseTextOptions = true; treeList1.Columns [colName] .AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far; buttonEdit.ButtonClick + = new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(buttonEdit_ButtonClick); //treeList1.Columns[colName].OptionsColumn.AllowEdit = false; treeList1.Columns [colName] .OptionsColumn.ReadOnly = true; – user1254053

相關問題