C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: NumericUpDownの右クリックメニューを非表示にする


(過去ログ 151 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■87794 / inTopicNo.1)  NumericUpDownの右クリックメニューを非表示にする
  
□投稿者/ ゴラリ (1回)-(2018/06/30(Sat) 18:02:04)

分類:[.NET 全般] 

VB.NET2017を使っています。


NumericUpDownの右クリックメニューを非表示にしたいのですが
どのようにすれば良いでしょうか?

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=39688&forum=7

ここに質問ページがあるのですが
メッセージフックを使えば良い、とは書かれてあるものの
どのようにすれば良いか分かりません。
どなたか助言ください。









引用返信 編集キー/
■87795 / inTopicNo.2)  Re[1]: NumericUpDownの右クリックメニューを非表示にする
□投稿者/ Hongliang (654回)-(2018/06/30(Sat) 18:36:54)
それの2ページ目に書かれてるようですが。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=39688&forum=7&start=8

私なら、
class NoContextMenuWindow : NativeWindow {
	public HookWindow(Control ctrl) {
		this.AssignHandle(ctrl.Handle);
	}
	protected override void WndProc(ref Message m) {
		if (m.Msg == 0x7b) {    // WM_CONTEXTMENU
			m.Result = IntPtr.Zero;
			return;
		}
		base.WndProc(ref m);
	}
}
こんな感じのクラス作って
NoContextMenuWindow m_Window; // Form1のメンバ変数
void Form1_Load(object sender, EventArgs e) {
	Control tb = this.Controls.OfType<TextBox>().First();
	m_Window = new NoContextMenuWindow(tb);
}
こうするかな。
// 必要ならWebに転がっている適当なC#/VB変換サービスをご利用ください。

引用返信 編集キー/
■87796 / inTopicNo.3)  Re[2]: NumericUpDownの右クリックメニューを非表示にする
□投稿者/ ゴラリ (3回)-(2018/06/30(Sat) 19:29:47)
ありがとうございます。
二ページ目があることに気がつきませんでした。
そのコードを試してみたのですが
なぜかうまくいきませんでした。
特にエラーはありませんが、普通にコンテキストメニューが表示されてしまいます。

提示してくださったコードをVBに翻訳してみましたが
エラーが出ておりうまくいきません

Class NoContextMenuWindow
Inherits NativeWindow
End Class
UnknownDim j As S
Dim cf As Xn


Protected Overrides Sub WndProc(ByRef m As Message)
If (m.Msg = 123) Then
' WM_CONTEXTMENU
m.Result = IntPtr.Zero
Return
End If

MyBase.WndProc(m)
End Sub

Private m_Window As NoContextMenuWindow

' Form1n&#65533;&#65533;&#65533; p
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
Dim tb As Control = Me.Controls.OfType.First
m_Window = New NoContextMenuWindow(tb)
End Sub


どうすれば良いですか?

引用返信 編集キー/
■87797 / inTopicNo.4)  Re[3]: NumericUpDownの右クリックメニューを非表示にする
□投稿者/ Hongliang (655回)-(2018/07/01(Sun) 10:11:41)
2018/07/01(Sun) 13:36:17 編集(投稿者)
あー、写す際にちょっと手修正したらコーディングミスが出てしまいましたね。

class NoContextMenuWindow
  Inherits NativeWindow
  Public Sub New(ByVal ctrl As Control)
    Me.AssignHandle(ctrl.Handle)
  End Sub
  Protected Overrides Sub WndProc(ByRef m As Message)
    If m.Msg = &H7b Then ' WM_CONTEXTMENU
      m.Result = IntPtr.Zero
      Return
    End If
    MyBase.WndProc(m)
  End Sub
End Class

Private m_Window As NoContextMenuWindow
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
  Dim tb As TextBox = Me.NumericUpDown1.Controls.OfType(Of TextBox)().First()
  Me.m_Window = New NoContextMenuWindow(tb)
End Sub

// IfにThenが抜けてたので追加 あれー、なくてもコンパイル通るんだ…。

引用返信 編集キー/
■87798 / inTopicNo.5)  Re[4]: NumericUpDownの右クリックメニューを非表示にする
□投稿者/ ゴラリ (4回)-(2018/07/01(Sun) 14:22:13)
ありがとうございます。

うまくいきました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -