[英]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.