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

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

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

Re[4]: フォーム上の右クリックでフォームを閉じるには・・・


(過去ログ 36 を表示中)

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

■18007 / inTopicNo.1)  フォーム上の右クリックでフォームを閉じるには・・・
  
□投稿者/ けい (1回)-(2008/05/07(Wed) 21:17:54)

分類:[C#] 

はじめまして、初めて書き込みます。
プログラム初心者ですが、どうぞよろしくお願いします。
使用言語はC#2008、使用環境はXP Home Edition SP2です。

さて、C#2008を使用しているわけですが、
作りたいのはズバリ
「フォーム上の右クリックでフォームを閉じる」
です。

いろんなサイトのサンプルやMSDNフォーラムで調べてみました。
例えばMouseDownの記述方法やそれに伴うマウスのボタンの判別などです……
しかし、コピペしても動かず、MouseDownの正しい記述方法がさっぱりわかりません……orz
フォーラムでもわたしの欲望を満たすものは見つけられませんでした。
Clickを使用してフォームを閉じるのではなく、
あくまで
「フォーム上の右クリックでフォームを閉じる」
を実現したいのです!

実際のコードをどのように記述すればよいのか、教えていただけないでしょうか。
よろしくお願いします。
引用返信 編集キー/
■18008 / inTopicNo.2)  Re[1]: フォーム上の右クリックでフォームを閉じるには・・・
□投稿者/ 魔界の仮面弁士 (717回)-(2008/05/07(Wed) 21:28:21)
No18007 (けい さん) に返信
> しかし、コピペしても動かず、MouseDownの正しい記述方法がさっぱりわかりません……orz

VB とは異なり、C# の場合はコピペしただけでは動きません。

マウス押下時に void Form_MouseDown(…) が呼び出されるようにするには、
フォームのプロパティ画面で、稲妻アイコンをクリックして表示されるタブにて
MouseDown イベントに、Form_MouseDown を割り当てておく必要があります。
引用返信 編集キー/
■18009 / inTopicNo.3)  Re[2]: フォーム上の右クリックでフォームを閉じるには・・・
□投稿者/ けい (2回)-(2008/05/07(Wed) 21:53:46)
No18008 (魔界の仮面弁士 さん) に返信

早速ありがとうございます!

> VB とは異なり、C# の場合はコピペしただけでは動きません。

なんとなく、そんな気はしていたのですが……
 
> マウス押下時に void Form_MouseDown(…) が呼び出されるようにするには、
> フォームのプロパティ画面で、稲妻アイコンをクリックして表示されるタブにて
> MouseDown イベントに、Form_MouseDown を割り当てておく必要があります。

なんと!この連休中ひとりで悩んでいたことが解決しました!
……でも自分で直接打ち込んでもダメなのはなんででしょう?

新たな問題が、ひとつ。
フォーム上に別のコントロールがあると
マウスカーソルがフォームの内側にあっても無効になりますね。
「フォーム上の右クリック」を「フォームの内側で右クリック」にするには
マウスカーソルの位置取得とフォームの範囲を照合すればよろしいのでしょうか?
もしそうだとすれば、どこに記述すればよいでしょうか?

引用返信 編集キー/
■18011 / inTopicNo.4)  Re[3]: フォーム上の右クリックでフォームを閉じるには・・・
□投稿者/ やじゅ (345回)-(2008/05/07(Wed) 22:01:49)
No18009 (けい さん) に返信

ケチらずにまず入門書を買いましょう。
本は自分への投資だと思ってくださいな。
引用返信 編集キー/
■18012 / inTopicNo.5)  Re[4]: フォーム上の右クリックでフォームを閉じるには・・・
□投稿者/ けい (3回)-(2008/05/07(Wed) 22:07:03)
2008/05/07(Wed) 22:11:00 編集(投稿者)
2008/05/07(Wed) 22:10:41 編集(投稿者)

No18011 (やじゅ さん) に返信
こんばんは

> ケチらずにまず入門書を買いましょう。

何冊も読んでいます。

> 本は自分への投資だと思ってくださいな。

思っています。
それでもわからないから、ここで質問しているわけです。
解決済み
引用返信 編集キー/
■18013 / inTopicNo.6)  Re[5]: フォーム上の右クリックでフォームを閉じるには・・・
□投稿者/ けい (4回)-(2008/05/07(Wed) 22:13:20)
2008/05/07(Wed) 22:13:59 編集(投稿者)

No18012 (けい さん) に返信
No.18009の疑問も含めて解決しました。
ありがとうございました。
解決済み
引用返信 編集キー/
■18015 / inTopicNo.7)  Re[3]: フォーム上の右クリックでフォームを閉じるには・・・
□投稿者/ 魔界の仮面弁士 (718回)-(2008/05/07(Wed) 22:39:31)
No18009 (けい さん) に返信
>>マウス押下時に void Form_MouseDown(…) が呼び出されるようにするには、
>>フォームのプロパティ画面で、稲妻アイコンをクリックして表示されるタブにて
>>MouseDown イベントに、Form_MouseDown を割り当てておく必要があります。
> なんと!この連休中ひとりで悩んでいたことが解決しました!
> ……でも自分で直接打ち込んでもダメなのはなんででしょう?
Form1.designer.cs というファイルに、
 this.MoseDown += 〜
という割り当て設定が書かれているかと思います。
自分で直接打ち込んだ場合でも、この割り当てを行っておけば動作しますよ。


> フォーム上に別のコントロールがあると
> マウスカーソルがフォームの内側にあっても無効になりますね。
コントロール上でも反応させたい、ということでしょうか。
それだと、TextBox 上で右クリックメニュー(コンテキストメニュー)を表示しようとした時にも、
フォームが閉じてしまう事になるわけですから、使い勝手が悪くなってしまうような気がします。


> 「フォーム上の右クリック」を「フォームの内側で右クリック」にするには
> マウスカーソルの位置取得とフォームの範囲を照合すればよろしいのでしょうか?
(案1) 各コントロールのイベントに、それぞれ同じようにコードを書く。
(案2) Timer を使い、定期的にマウス座標を調べるようにする。
(案3) DirectInput でマウス操作の情報を受け取るようにする。

といった所で如何でしょう。
引用返信 編集キー/
■18020 / inTopicNo.8)  Re[4]: フォーム上の右クリックでフォームを閉じるには・・・
□投稿者/ けい (5回)-(2008/05/08(Thu) 00:13:31)
No18015 (魔界の仮面弁士 さん) に返信
> Form1.designer.cs というファイルに、
>  this.MoseDown += 〜
> という割り当て設定が書かれているかと思います。
> 自分で直接打ち込んだ場合でも、この割り当てを行っておけば動作しますよ。

その方法もやってみます。

> コントロール上でも反応させたい、ということでしょうか。
> それだと、TextBox 上で右クリックメニュー(コンテキストメニュー)を表示しようとした時にも、
> フォームが閉じてしまう事になるわけですから、使い勝手が悪くなってしまうような気がします。

コントロールの種類によって使い分けようと考えています。
例えばボタン、ラベルなどのコントロール上では同様の割り当てを使用しようと思います。
ピクチャー、テキストボックスなどでの右クリックは他の目的を考えています。

>>「フォーム上の右クリック」を「フォームの内側で右クリック」にするには
>>マウスカーソルの位置取得とフォームの範囲を照合すればよろしいのでしょうか?
> (案1) 各コントロールのイベントに、それぞれ同じようにコードを書く。
> (案2) Timer を使い、定期的にマウス座標を調べるようにする。
> (案3) DirectInput でマウス操作の情報を受け取るようにする。

(案1)については、ボタンコントロールを配置した上で、
フォームのイベント(稲妻!)でForm1_MouseDownを使用しました。
コードを記述した方が、後々のことを考えればよいということでしょうか?

(案2)、(案3)については今から試してみます!
魔界の仮面弁士さん、ありがとうございます!
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -