2014-05-23 39 views
3

我正在使用具有視圖GridViewComboBoxColumn的RadGridView。 編輯器本身是一個基於RadDropDownListEditor的自定義編輯器。將光標定位在GridViewComboBoxColumn(Telerik)

我目前正在嘗試實現它,以便按下左或右箭頭不會影響單元格或選擇項目,而是將光標移到編輯器中。因此我的問題是如何訪問那裏的光標位置。

class CustomizedDropDownEditor : RadDropDownListEditor 
{ 
    public override void OnKeyDown(System.Windows.Forms.KeyEventArgs e) 
    { 
     if (e.KeyCode == System.Windows.Forms.Keys.Left || e.KeyCode == System.Windows.Forms.Keys.Right) 
     { 
      //Customized left right arrow key behaviour 

     } 
     else 
     { 
      base.OnKeyDown(e); 
     } 
    } 

我已經嘗試了一些東西,但已經沒有想出一個辦法,我可以進入編輯器或在那裏selectionstart的文本。

編輯: 儘管上面的代碼攔截了鍵,左箭頭鍵仍然導致單元格離開(右箭頭鍵不會導致這一點)。有沒有可能避免這種情況,如果是這樣的話?

Tnx。

回答

1

將屬性投射到RadDropDownListEditorElement後,您可以訪問編輯器的EditorElement屬性中的文本。如果你想在同一覆蓋範圍內做到這一點:

class CustomizedDropDownEditor : RadDropDownListEditor 
{ 
    public override void OnKeyDown(System.Windows.Forms.KeyEventArgs e) 
    { 
     if (e.KeyCode == System.Windows.Forms.Keys.Left || e.KeyCode == System.Windows.Forms.Keys.Right) 
     { 
      //Customized left right arrow key behaviour 

      int selectionStart = ((RadDropDownListEditorElement)this.EditorElement).SelectionStart; 

      int selectionLength = ((RadDropDownListEditorElement)this.EditorElement).SelectionLength; 

     } 
     else 
     { 
      base.OnKeyDown(e); 
     } 
    } 
} 

或者,如果你想從別的地方做,你能做到通過網格的ActiveEditor屬性相同的事情(雖然我不想像你會想要做什麼其他東西,如編輯當然會密切和失去你的文本選擇):

private void RadGridView1_OnMouseLeave(object sender, EventArgs e) 
{ 
    int selectionStart = ((RadDropDownListEditorElement)((CustomizedDropDownEditor)radGridView1.ActiveEditor).EditorElement).SelectionStart; 
} 

This Telerik article給訪問該文本的例子,當EndEdit事件觸發,你也可能會感興趣。

+0

tnx主要工作(設置如果選擇的是正確的鍵,則選擇+1;如果選擇了左鍵,則選擇-1(低到0或高達text.length),但只是發現左鍵仍然觸發它離開單元格(向左移動1個字符後) 。你碰巧知道如何制止這種行爲? – Thomas

+0

確保您也重寫'OnKeyUp',以完全相同的方式來打敗基本行爲。 –

+0

tnx功能正常。我會將該答案標記爲已接受並贊成。貌似原來的賞金已經過期(由於首先我的RL問題無法測試,因此),我需要200代表能夠在那裏給你一個獎勵(似乎沒有辦法)。 tnx仍然。 – Thomas