【解決方法】ボタンではなく、フォーム自体に焦点を当てる方法は?


私はこのフォームを持っていて、formMain の KeyDown イベントでボード ゲームをプレイする矢印を検出しますが、ゲームの開始時にフォーカスを奪うためにパネルを作成した[再起動]ボタンを押すと、ゲームが正しく開始されるようになりました。再起動ボタンがパネルにあるときにフォームのKeyDownイベントが発生するため、再起動をクリックするかフォーカスを取得すると、パネルの外側のフォームを押してもそのフォーカスを失うことができないため、再生できますボタンの再起動がコントロールを取得すると、タブストップ= falseでもコントロールを失うことはできません。

フォームにフォーカスを当てて KeyDown イベントを検出したいのですが、PreviewKeyDown で修正できますが、正当な解決策が必要です。

https://prnt.sc/SAx3YnbLr_hm[^]

私が試したこと:

private void panel1_Enter(object sender, EventArgs e)
        {
            Focus();
            Select();
        }

 Graphics g;
        private void FormMain_Shown(object sender, EventArgs e)
        {
            g = CreateGraphics();
            drawAll();


            

            buttonRestart.TabStop = false;

            ActiveControl = label1;// hidden label as its Visible=false


            Focus();
            Select();
        }

        private void buttonRestart_Enter(object sender, EventArgs e)
        {
            Focus();
            Select();
        }

コメント

タイトルとURLをコピーしました