2016-04-02 24 views
0

私は次の問題に直面しています:CefSharpはバックスペースからバックスペースを無効にします

CefSharpブラウザを含むWinform(C#)があります。 "backspace"キーを使用してユーザーが戻るのを防ぐ必要があります。

私は解決策を探して、私はそれを行う方法は、以下の方法(IRequestHandler)を実装することであることが判明:

bool IRequestHandler.OnBeforeBrowse(IWebBrowser browserControl, IBrowser browser, 
     IFrame frame, IRequest request, bool isRedirect) 
{ 
     if (request.TransitionType.HasFlag(TransitionType.ForwardBack)) 
     { 
       return true; 
     } 
     return false; 
} 

問題は、それは単に、常に動作しないということです。 たとえば、google.comに移動して何かを検索し、「バックスペース」ボタンをクリックすると、前のページに戻ります。

どうすれば解決できますか?私はウェブページを制御できないとしますか?

+0

を使用 –

+0

そうです。バックスペースキーを完全にブロックしたくないのですが...(バックスペースキーを使用して)ユーザーが削除できるようにしたいからです。戻るに移動しないようにしてください。 – g1500

+0

問題を再現するための手順の詳細なリスト。例1. google.comに移動します。2.検索テキストを入力します。3.タブを押して別のコントロールをフォーカスします。 4.バックスペースを押します。 'バックスペースボタンをクリックすると'も混乱しています、あなたはプレスを意味するのですか? – amaitland

答えて

-1

これを防ぐ1つの方法は、次のように追加することです。 NavigationCommands.BrowseBack.InputGestures.Clear();あなたのフレームコンストラクタに。しかし、私は副作用があるかどうかはわかりません。

+0

これを 'CefSharp'でテストしましたか? 'NavigationCommands'を使用しないので、ありそうもない解決策と思われます。 – amaitland

0

私はこの解決策を見つけたが、私はあなたが完全に制御に行くバックスペースキーをブロックすることができますが、私はあなたがバックスペースキーは、ページ内に仕事をしたいので、それは助けないでしょうね?デルファイ

procedure TForm1.Chromium1PreKeyEvent(Sender: TObject; 
    const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg; 
    out isKeyboardShortcut, Result: Boolean); 
    begin 
    if event.focus_on_editable_field=0 then 
    begin 
    if event.windows_key_code=vk_back then 
    begin 
    result:=true; 
    end; 
    end 
    else 
    begin 
     result:=false; 
     end; 
    end; 
関連する問題