DOBON.NET DOBON.NETプログラミング掲示板過去ログ

マウスイベントを無効にしたい

環境/言語:[[OS : Windows 2000 Professional / 言語 : Visual Basic .NET2003 / .NET Framework : 1.1]]
分類:[.NET]

現在WindowsFromで入力画面を作成中です。
ユーザーが現在オフコンで作業中の為すべてをキーボードで
操作できるように作成しています。

できれば、マウスでの項目移動を出来ない様にしたいのですが
どうすれば良いか分かりません。

ご教授のほどよろしくお願いします。
じゃんぬねっと です。

■No8741に返信(ちゃ〜さんの記事)
> できれば、マウスでの項目移動を出来ない様にしたいのですが
> どうすれば良いか分かりません。

非表示にするだけならば、
 System.Windows.Forms.Cursor.Hide()
という手がありますが、

無効となると、素直に API に頼らざるをえないですかね。
無効というより、マウスを一点に固定させてしまうと言った方が良いのでしょうか...
http://www.bcap.co.jp/hanafusa/VBHLP/MouseLook.htm

マウスフックをしてしまう手もあるかなぁ...
http://support.microsoft.com/default.aspx?scid=kb;ja;318804
APIですか〜
できればVB.NET上で実現したいのですが
無理でしょうか

無理ならAIPでやるしかないですね。
Windowsを利用させるわけですからWindowsに慣れていただく必要があります。
かつてオフコン導入時でもそうだったわけです。

大体ユーザの出来ることを奪うという行為が如何に罪深いものか・・・
#アクセシビリティとかもお勉強してください。
> Windowsを利用させるわけですからWindowsに慣れていただく必要があります。
> かつてオフコン導入時でもそうだったわけです。
>
できるだけAIPは使わないと言うのがユーザー方針なので
AIPでしか実現できないのであればかまわないとは思うので
AIPでやってみようと思います

> 大体ユーザの出来ることを奪うという行為が如何に罪深いものか・・・
> #アクセシビリティとかもお勉強してください。

これはユーザーの意向なので・・・
> できるだけAIPは使わないと言うのがユーザー方針なので
> AIPでしか実現できないのであればかまわないとは思うので
> AIPでやってみようと思います

AIPってなんでしょう?
APIですか?
じゃこの時点で成り立たない。

> これはユーザーの意向なので・・・

ユーザの意向は全て満たさなくちゃいけないってわけじゃないのは分かりますよね?
ユーザに意図や、なぜかを説得するのも我われエンジニアの仕事です。

実際に利用する人のことも考えましょう。
Windowsを操作したことの無い人<<<しか>>>使わないんですか?
> できれば、マウスでの項目移動を出来ない様にしたいのですが
> どうすれば良いか分かりません。

# VB6の頃、同僚が同じようなシステムを組まされてたなぁ。(^^;

えーと、自アプリ上のフォームだけでよいのでしょうか?


他のアプリに対するマウス操作も禁じるとなると、少々厄介ですが、
自アプリだけの制限でよければ、Validatingイベントで移動を禁止して、
フォーカス移動は、自前で制御するという手法があります。

Private _AllowChangeFocus As Boolean = False

Private Sub ControlValidating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) _
  Handles TextBox1.Validating, TextBox2.Validating, TextBox3.Validating, Button1.Validating
  e.Cancel = Not _AllowChangeFocus
End Sub

Private Sub ControlKeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) _
  Handles TextBox1.KeyUp, TextBox2.KeyUp, TextBox3.KeyUp, Button1.KeyUp

  '移動条件の判定。ここでは Enter キー押下で移動させていますが、
  '実際には、コントロールの値を判定するなどのチェックも必要かと。
  If e.KeyCode = Keys.Enter Then

    _AllowChangeFocus = True
    SelectNextControl(DirectCast(sender, Control), True, True, True, False)
    _AllowChangeFocus = False

  End If
End Sub

DOBON.NET | プログラミング道 | プログラミング掲示板