簡體   English   中英

Tab鍵在saleslogix窗口中添加的Windows控件(.Net擴展名)中不起作用

[英]Tab key does not work in windows control added (.Net extension) in saleslogix windows

我在saleslogix Windows插件中添加了一個.Net Windows表單,一切正常,但是在按下此控件內的“ Tab”鍵時,而不是轉到下一個文本框,控件將轉到下一個插件。

我已經搜索了很多東西,卻找不到解決方法,當我在另一個saleslogix Windows插件中添加瀏覽器控件時,此文本框中的頁面中有多個文本框。 令我驚訝的是,按下Tab鍵后,它運行完美,控制權轉到了下一個文本框。

任何幫助深表感謝。

當您在宿主應用程序中使用Winforms(和許多其他UI類庫)時,這是完全正常的事故。 無論哪個控件具有焦點,都需要識別導航鍵(例如Tab和光標鍵以及快捷鍵)。 一種方法是在每個控件上實現KeyDown事件處理程序。 當然,那太痛苦了。

因此,這種方式不起作用,當消息循環接收到擊鍵時,該擊將被識別, 然后再將其分配給具有焦點的控件。 重寫ProcessCmdKey()方法是執行此操作的一般方法。 基本方法負責導航並識別菜單和按鈕助記符。

問題是,不是.NET消息循環正在接收和調度消息。 具有循環的是主機應用程序。 而且它不知道有關ProcessCmdKey()的bean。 因此它不會被調用,導航也無法正常工作。

它傾向於在WebBrowser中工作,因為它是ActiveX控件。 旨在與其主機進行交互。 特別是,它協商確定哪個人來處理密鑰。 IOleInPlaceActiveObject :: TranslateAccelerator()方法可以做到這一點。 並非.NET中可用的那種管道,很少編寫主機應用程序來提供替代方法。

您可以考慮“過分痛苦”的解決方案,但您不太可能喜歡它的聲音。 只有另一種不錯的方法來解決此問題,您必須調用ShowDialog()來顯示表單。 現在是.NET循環調度,並且Tab和光標鍵可以正常工作。 這往往是不受歡迎的建議,對話可能會很尷尬。 如果您很幸運並且知道自己在做什么,並且主機可以處理(通常不是),那么使用線程可以消除這種方式的麻煩。 向供應商尋求建議,特別是在線程方面,是明智的。

暫無
暫無

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

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