• ベストアンサー

継承したFormでKeyDownイベントを一括処理するには?

VB 2005を使用しています System.Windows.Forms.Formを継承したFormを使って 画面を作っています。 各画面のKeyDownイベントに同じ処理をいれたいのですが、 個々の画面に実装すると変更が発生した場合、 各画面ごとに修正するという事態を回避したいと思います。 そこで継承したForm内でKeyDownイベントを管理したいのですが その様な方法はあるのでしょうか? ある場合、どういったキーワードがあるのでしょうか

noname#50030
noname#50030

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

お世話になります。 > 個々の画面に実装すると変更が発生した場合、 > 各画面ごとに修正するという事態を回避したいと思います。 ここだけ見ると、ひとつ親クラスを作ってやって そこから各画面に対する派生クラスを作ってやれば良さそうな感じがします。 System.Windows.Forms.Form  |_    Base Form(ここで KeyDown の実装)    |_ 各画面1    |_ 各画面2    |_ ...

その他の回答 (2)

回答No.3

Mybaseとかだった記憶が…

noname#39970
noname#39970
回答No.1

イベント通知は受け取るとそこで止まってしまう。 そのイベントを更に他にも渡すキーワードが存在する筈だからそれを調べてみて。

関連するQ&A

  • SSTABでのKEYDOWNイベント

    VB6・SP5で開発を行っています。 FormのKEYDOWNイベントでPageUp・PageDownの押下の際に、 SSTAB上のアクティブなTABをずらす処理を行おうとしています。 問題はSSTAB上にフォーカスが移った直後だけ、 KEYDOWNイベントが2回実行されてしまうというものです。 KEYUPについても同様でした。 このような現象をご存知の方、 対処方法をお教えくださる方がいらっしゃいましたらよろしくお願いします。 ちなみにモジュール変数等のフラグはなるべく使用したくありません。

  • Keydownイベントについて

    VB6.0について質問です。 FormでKeydownイベントが動きません。 どのような原因が考えられますか? コードは以下のように記述しています。 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyF8 cmd_F8.Value = True Case vbKeyF9 cmd_close.Value = True End Select End Sub

  • C#でKeyDownイベントが発生しない。

    VS2010 CS.NET 環境です。 Formにボタンが2個あり。ボタン1はF1キー、ボタン2はF2キーで動作するようにしています。 private void Form1_KeyDown(object sender, KeyEventArgs e) {    switch (e.KeyCode)    { case Keys.F1: this.btn1.PerformClick(); break; case Keys.F2: this.btn2.PerformClick(); break; } } ボタン1は計算処理をします。 ボタン2は別のForm2を開きます。 ボタン1はF1キーで何度でも動作しますが、ボタン2はF2キーでForm2を開いて、それを閉じて元のForm1に戻ると次のF2キーではKeyDownイベントが発生しません。 この時はF1キーもKeyDownイベントが発生しなくなります。 Form1のどこかをクリックすると、KeyDownイベントが発生するようになります。 別Formを開いて戻ってもKeyDownイベントを発生させるにはどうしたらいいでしょうか? よろしくお願いします。

  • 継承したコントロールのイベント

    VB2005を使用しています。 form1にbutton1が設置(ツールボックスからの貼り付け)されているとして、 form2で継承「Inherits form1」します。でリビルド。 この時点で、form2はform1と全く同じデザインです。 form2で継承したbutton1は  Public Class Form2   ~  End Class 内で Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click のようにイベントを設定できないのでしょうか? いろいろ検索等はして、「オーバライド」なるものがあることはわかったのですが、具体的な使い方などが全くわかりません。 できれば簡単なコードなんかを教えていただければとても助かるのですが。オーバーライド以外でもなにか可能な方法があれば是非アドバイスください。 宜しくお願いいたします。

  • C++を勉強し始めたばかりの初心者なのですが、クラスの継承に関して・・・

    Visual C++ 2008で、新しいwindowsフォームアプリケーションを作成したら、Form1.hの上の方に public ref class Form1 : public System::Windows::Forms::Form という行がありました。これは開発環境に実装されている System::Windows::Forms::Formクラスを継承し、Form1クラスを新たに作成しますという意味なのですよね? このとき、2つ目のpublicは、継承の仕方、この場合結果的にはSystem::Windows::Forms::Formクラスに含まれるメンバの、private以外がそのまま受け継がれる、という事になりますよね? それで、このref classというのは、ポインタみたいな意味でしょうか?refは書かないと別の継承方法になるのでしょうか? また、最初のpublicはどういう意味なのでしょう? もしかして、この2つについては、System::Windows::Forms::Formクラスを継承して新規フォームを作る場合の、定型みたいなものなのでしょうか?

  • MSFlexGridで↑や↓押下時の処理

    現在VBの勉強をしております(WindowsXp、VB6.0) MSFlexGridの行を選択すると、行のデータをテキストボックスへ表示する、といった処理を実装したんですが、キーボードの「↑」や「↓」押下時に、選択行は変わるんですが、クリックイベントでもフォーカスイベントでも処理を拾えません・・・。 まだ試してはいないんですが、keyDownイベントで、「↑」「↓」を判断し、更にグリッドにフォーカスが存在する場合に、1行上(または下)のデータをテキストボックスに表示する。 という処理をしないと不可能でしょうか? どう考えても上記の方法はスマートでは無いなぁと思い、何か良い方法があれば教えていただきたく質問させていただきました。 よろしくお願いいたしますm(__)m

  • VBAでのコントロールイベント処理

    VBAで画面を作成しています。 「form1」からボタンを押下することで「form2」がモーダルで表示される仕様です。 「form2」からListのコントロールをダブルクリックすることで 「form2」は閉じ、「form1」に選択した内容を表示するという仕様です。 その場合、「form1」の別のイベントがなぜか走ってしまいます。 どのような処理をおこなえば、「form1」のイベントが発生しないようなるでしょうか??

  • 継承元と継承先での変数

    VB.NETで継承の勉強中です。 継承元と継承先で同じ意味合いの変数を使おうと思っています。 例えば、  ・継承元でkyuuyo(給与)をintegerで宣言  ・継承先Aで社員の給与を計算、継承先Bでアルバイトの給与を計算する   (残業やら手当やらの計算が必要)  ・継承元で、kyuuyoの支払処理をする この場合、継承先で宣言した変数で計算処理をしてから、 継承元のkyuuyoに代入したほうが良いのかなと思ったのですが その場合の変数名をどう付けるかで迷っています。 1.同じ名前を付けて、MyBase.kyuuyoとMe.kyuuyoで使い分ける 2.継承先の方を、tmpKyuuyoとする 3.motoKyuuyo、sakiKyuuyoみたいにする 4.そもそも、継承先で変数を宣言する必要が無い   (MyBase.kyuuyoで計算処理をしていく) 5.その他   (設計自体がおかしい) うちの会社はプログラムとかとは縁遠いので、規約みたいなものはありません。 私も他の仕事の傍らでやっている程度ですし、私以外にプログラム等を している人はいません。 今はどうやっても問題は無いのですが、私が辞めた後などの事を考えると 出来るだけ分かりやすくしておいた方が良いと思っているのですが どんな感じで実装するのが、VB.NET(oop)っぽいのか教えてください。 よろしくお願いします。

  • 音声でのイベント処理

    VB6で音声入力によるイベント処理を試みようとしています. 具体的にはマイクから音声入力がある場合に(音がしたら),VBでイベントを発生させたいのですが,そのようなことは可能でしょうか. よろしくお願いします.

  • イベント内で別イベントを呼ぶ方法

    早速質問させていただきます。 Form上にDataGridView(dgv)があります。 dgvのセルをマウスでダブルクリックした時に処理を入れております。 Private Sub dgv_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellDoubleClick   If e.RowIndex = -1 Then     Exit Sub   End If   '//処理 End Sub このdgv上でEnterキーを押した際に、ダブルクリックしたのと同じ処理を 行いたいのですが、このような場合、どのような実装をするのが一般的なのでしょうか? 例えば、下記の様にCall dgv_CellDoubleClick(sender, e)をするとEventArgsが合わないためエラーになってしまいます。 適切な方法をご教授お願い致します。 Private Sub dgv_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dgv.KeyDown   If e.KeyCode = Keys.Enter Then     Call dgv_CellDoubleClick(sender, e)   End If End Sub