![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
No.1ベストアンサー
- 回答日時:
こんにちは。
どうやら、ウィンドウプロシージャをオーバーロードしても無理そうで、アイテム選択を拒絶する事は出来ず、受け入れるしか無い見たいです。
取りあえず、MouseDownとKeyDownで目当てのアイテムを選択しない様に阻止するしかないのではないでしょうか。
http://msdn.microsoft.com/ja-jp/library/system.w …
http://msdn.microsoft.com/ja-jp/library/system.w …
http://msdn.microsoft.com/ja-jp/library/system.w …
マウスだけではなく、キーボードも処理しなければならないので要注意です。
以下はtest2のアイテムを選択させないようにします。かなり厄介ですが、参考程度で。
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)
{
this->listBox1->Items->Add("test1");
this->listBox1->Items->Add("test2");
this->listBox1->Items->Add("test3");
//選択が変る前のインデックスをキープする為にTagメンバを利用する(普通のint型のメンバ変数でも構わない)
this->listBox1->Tag = gcnew System::Int32(this->listBox1->SelectedIndex);
}
private: System::Void listBox1_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e)
{
System::Windows::Forms::ListBox^ listBox = static_cast<System::Windows::Forms::ListBox^>(sender);
//アイテムが一つも無いので引き返す
if(listBox->Items->Count <= 0)
return;
System::Int32% rTag = *static_cast<System::Int32^>(listBox->Tag);
//↑キーが押された
if(e->KeyValue == 38)
rTag = System::Math::Max(--rTag, 0);
//↓キーが押された
if(e->KeyValue == 40)
rTag = System::Math::Min(++rTag, listBox->Items->Count - 1);
//アイテムの確認
System::Object^ item = listBox->Items[rTag];
//選択させたくないアイテムだった
if(item == L"test2")
{
//リストボックスの選択位置を入れる
rTag = listBox->SelectedIndex;
//キー入力の拒絶してアイテム選択を阻止する
e->Handled = true;
}
}
private: System::Void listBox1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)
{
System::Windows::Forms::ListBox^ listBox = static_cast<System::Windows::Forms::ListBox^>(sender);
//マウスのクリックされた座標からアイテム位置を取る
const System::Int32 index = listBox->IndexFromPoint(e->X, e->Y);
//アイテムが無いので引き返す
if(index == 0xffff)
return;
System::Int32% rTag = *static_cast<System::Int32^>(listBox->Tag);
//アイテムの確認
System::Object^ item = listBox->Items[index];
//選択させたくないアイテムだった
if(item == L"test2")
{
//以前の選択位置をセットしてアイテム選択を阻止する
listBox->SelectedIndex = rTag;
//引き返す
return;
}
//以前の選択位置を更新
rTag = listBox->SelectedIndex;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript jsで診断コンテンツのページ内切り替えについて 1 2023/04/14 17:31
- HTML・CSS HTMLのフォームについてお尋ねします 1 2022/12/03 21:47
- Illustrator(イラストレーター) Illustrator アンカーポイント選択について 3 2023/01/30 12:31
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
- その他(パソコン・スマホ・電化製品) Canvaアプリの使い方 2 2022/05/28 23:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アイテム の意味がわかりませ...
-
googleドライブ 共有フォルダ ...
-
ヴァルキリープロファイルで、...
-
PS2 ドラクエ8 名もなき小島 ...
-
CLRフォームアプリケーションの...
-
ソーシャルゲームのガチャについて
-
何と言うか教えてください
-
カルドセプト2
-
「中原中也」とかいう詩人の言...
-
Switchで無料で配信しているテ...
-
前回に引き続き質問です。 PS5...
-
こんにちは 中1です。僕はiPhon...
-
原神でおよそ1週間チャットBAN...
-
今日Spotifyを無料版で入れたん...
-
DQ7
-
第五人格のブラックリストについて
-
MinecraftのMODサーバーで友達...
-
獣神化してほしいと思うキャラ...
-
オンラインゲームのチャットに...
-
アンドロイドスマホのSMSで特定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アイテム の意味がわかりませ...
-
外の台所を支えるアイテムについて
-
googleドライブ 共有フォルダ ...
-
パラサイトイブのアイテム
-
Google Playで予約購入した漫画...
-
マリオカートはアイテム次第で...
-
PS2 ドラクエ8 名もなき小島 ...
-
FF10のミヘン街道・北側 ミヘ...
-
モンストの モンスポットのアイ...
-
データコンバート(続編への引...
-
SFC版の「スーパーマリオカート...
-
ドラゴンクエスト8で…
-
Windows11で「フォト」の外部ア...
-
FF4のダークマターって意味なし...
-
トゥームレイダー4ラストレベ...
-
好みの楕円形を描きたい時は、...
-
三國無双3の玉アイテムの取り...
-
FF7 クラウド 究極リミット技...
-
mod入りマイクラ1.7.10でバグり...
-
Out Lookで…超基本的な質問で恐...
おすすめ情報