簡體   English   中英

Tab不會觸發keydown或keypress事件

[英]Tab will not fire keydown or keypress event

我正在使用webform,並在其上有一個帶有標簽欄的表單。 每個選項卡中都有多個文本框。 我增加了選項卡索引,每個選項卡從1開始。 如果用戶點擊表單的末尾並點擊標簽,我想從標簽到標簽。

我使用了leave方法並更改了我的選項卡控件的選項卡,唯一的問題是如果我沒有按Tab鍵並說我點擊該選項卡上的另一個控件它仍將拍攝到新選項卡。

我想辦法解決這個問題就是聽tab鍵按下,如果鍵按下是tab,請將表單更改為另一個標簽,但我似乎無法讓它工作。 我嘗試過使用keypress和keydown但是它們都不會將該選項卡作為鍵。 如果我說點擊或點擊開始鍵入它將觸發事件但標簽不會。

有什么建議么?

我試過這些,這些事件都不會觸發。

private void afsiTxtDaysForTempOEpriceOverrides_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == 11)
        {
            afsiTxtDaysForTempOEpriceOverrides_Leave(sender, e);
        }
    }

private void afsiTxtDaysForTempOEpriceOverrides_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == "11")
    {
        afsiTxtDaysForTempOEpriceOverrides_Leave(sender, e);
    }
}

private void afsiChkSalesBaseCostUpdate_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == 11)
    {
        afsiChkSalesBaseCostUpdate_Leave(sender, e);
    }
}

private void afsiChkSalesBaseCostUpdate_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == 11)
    {
        afsiChkSalesBaseCostUpdate_Leave(sender, e);
    }
}

編輯:發現該頁面正在使用Infragistics的UltraWinTabControl,所以這可能會導致標簽出現一些問題。

我最終需要覆蓋ProcessCmdKey現在我面臨一個新的問題,這個問題有點相關但不是特別的,所以如果我得到答案,我會將其添加為注釋。

    private bool isTab = false;
    private bool isShiftTab = false;

  protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {

        if (keyData == Keys.Tab)
        {
            isTab = true;
            ShiftTab.Append("Tab");
        }
        else
        {
            isTab = false;
        }

        return base.ProcessCmdKey(ref msg, keyData);
    }

您需要將MultiLine屬性設置為true,並且AcceptsTab也設置為true。

或者使用e.KeyCode或e.KeyData,它對我有用

if (e.KeyCode == Keys.Tab | e.KeyData == Keys.Enter)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM