2014-11-15 29 views
0

當我在文本框中按下頁面時,我想將頁面發送到列表視圖。將文本框中的按鍵重定向到winforms中的列表視圖

有沒有辦法將此按鍵傳遞給列表視圖?或者我必須以編程方式嘗試通過向下移動N行或類似的東西來實現頁面向下?

如果我要用按鍵來解釋它。

  1. 焦點在文本框上。

(如果我現在按PageDown鍵,這就是我想發生)

  • 焦點轉到列表視圖。
  • 按下頁面。
  • 重新回到文本框。
  • 我只是想知道,如果有一種方法,我可以到ListView控件「通行證」的按鍵,而無需實際做所有的與按鍵,改變焦點等

    +0

    你的意思是什麼'頁發送到一個列表view'?你的意思是,把重點放在列表視圖? – Rahul

    +0

    我希望它能像我在列表視圖中按下頁面一樣。所以選擇會下移,列表可能會滾動。但是,當我按下頁面並將焦點放在文本框上時,我希望發生這種情況。焦點將保留在文本框中。 – Derek

    +0

    oohh !!這是你試圖注入的一種錯誤行爲。 – Rahul

    回答

    2

    你是什麼試圖得到,是這樣的?

    private void TextBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) 
    { 
        switch (e.KeyCode) { 
         case Keys.PageDown: 
          this.ListView1.Focus(); 
          SendKeys.Send("{pgdn}"); 
          break; 
        } 
    } 
    
    private void ListView1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) 
    { 
        switch (e.KeyCode) { 
         case Keys.PageDown: 
          this.TextBox1.Focus(); 
          break; 
        } 
    } 
    

    編輯:

    的另一種方式,在不改變焦點,而無需使用的SendKeys是:

    private void TextBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) 
    { 
        switch (e.KeyCode) { 
         case Keys.PageDown: 
          this.LVW_PGDN(); 
          break; 
        } 
    } 
    
    private void LVW_PGDN() 
    { 
        int top = this.ListView1.TopItem.Index; 
        int i; 
    
        for (i = top; i < this.ListView1.Items.Count; i++) { 
         this.ListView1.EnsureVisible(i); 
         if (top < this.ListView1.TopItem.Index) { 
          break; 
         } 
        } 
    
        this.ListView1.TopItem = this.ListView1.Items(i - 1); 
    } 
    
    +0

    這是正確的想法......但我想知道是否有一種方法可以在不使用sendkeys的情況下觸發事件。如果我在列表視圖中並按下頁面或向上翻頁,我不想將焦點放回文本框。 – Derek

    +0

    好的!我明白。然後,我將設置一個代碼,您可以使用代替SendKeys而不改變焦點。 –

    相關問題