###前提・実現したいこと
ここに質問したいことを詳細に書いてください
(例)visual studio express2013 C#でWindowsアプリケーションの検索ソフトを作っています。
検索の処理に時間がかかる場合があるので、キーボードのendキーをおした時に処理を終了させたいのですが、どうすればよいでしょうか。
###該当のソースコード
C#
1 string[] GetFilesMostDeep(string stRootPath, string stPattern) 2 { 3 System.Collections.Specialized.StringCollection hStringCollection = ( 4 new System.Collections.Specialized.StringCollection() 5 ); 6 7 // このディレクトリ内のすべてのファイルを検索する 8 foreach (string stFilePath in System.IO.Directory.GetFiles(stRootPath, stPattern)) 9 { 10 hStringCollection.Add(stFilePath); 11 } 12 13 14 //endキーを押しても表示なし 15 if (Keyboard.IsKeyDown(Key.End) == true) 16 { 17 MessageBox.Show(""); 18 } 19 20 // このディレクトリ内のすべてのサブディレクトリを検索する (再帰) 21 foreach (string stDirPath in System.IO.Directory.GetDirectories(stRootPath)) 22 { 23 string[] stFilePathes = GetFilesMostDeep(stDirPath, stPattern); 24 25 //処理 26 27 } 28 29 // StringCollection を 1 次元の String 配列にして返す 30 string[] stReturns = new string[hStringCollection.Count]; 31 hStringCollection.CopyTo(stReturns, 0); 32 33 return stReturns; 34 }
コンソールですか?検索は同期ですか非同期ですか?
コンソールではありません。
同期、非同期が調べてもどうゆうものかわからないレベルの素人です。
IsKeyDown は現在そのキーが押されているかどうかを判定します。
ファイルを取得し、ディレクトリを取得するまでの一瞬の判定なので、押しっぱなしでないと失敗すると思いますが、その辺どうですか?
あと、End を押した時に、そのアプリがフォーカスを得ていますか?
押しっぱなしでも反応ないです。
検索処理中、検索ウィンドウにカーソルを当てようとすると、カーソルが消え、ボタンやリストボックスに触ることができない状態です。
これをフォーカスを得ている状態か判断できないです。
また、検索開始ボタンをEndキーにした場合、キー入力が判定されポップアップがでます。
回答2件
あなたの回答
tips
プレビュー