【C#】ユーザーコントロール内で,KeyDown()イベントが狙ったとおり動かない
関連記事
- 【#CSHARP】ソリューション内でサービス,Winformアプリを混在で作成させ,バイナリ出力先を同じにするとサービスが起動しない 【2024年02月08日(木)】
- 【#PHP】謎な #Laravel 案件 引き渡したじ 【2024年01月11日(木)】
- 【C#】謎な改造アプリ,SIMD命令を導入して高速化しようか,思案中 【2023年11月14日(火)】
- Javaの”やらかし”でC#と人気逆転か 激変プログラミング言語人気ランキング 【2023年10月18日(水)】
- 【#CSHARP】次の案件のスケルトン書いてgitサーバに登録するなどと 【2023年05月16日(火)】
エンターキー押したら,テキストボックスを次々移動していく,アレ
今の謎案件の画面実装やってたら,うまくいかない(汗
ダメなところは,ユーザーコントロールにテキストボックスを山のように張ったブロック
こんなやつ(諸般の事情でエッチな部分は消してあるぞな:爆)
これをフォームに貼り付けたけど,エンターキーでピョンピョン飛ばない.うまく行かねぇ...
ユーザーコントロール内のキー周りのイベントは特殊なことを基底側クラスでやっている模様.なので,キーイベントの動きが狙ったとおりの動きをしない感じ
海外事例イロイロあったんで,試してみたけどイマイチ
頭きたー(怒
ダサダサな実装でごまかすことに(笑
フォーム側のKeyDown()イベントにユーザーコントロールのどれかがフォーカス持ってるかのチェックコードを追加
//--------------------------------------------- //キーダウン // //--------------------------------------------- private void FormMain_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (this.ActiveControl == uclInputHogehoge1) //ユーザーコントロールHogehoge内のどれかのコントロールがフォーカス持ってる { uclInputHogehoge1.NextCtrlMove(); } else if (this.ActiveControl == uclInputHogepekoA1) //ユーザーコントロールHogepekoA内のどれかのコントロールがフォーカス持ってる { uclInputHogepekoA1.NextCtrlMove(); } else if (this.ActiveControl == uclInputHogepekoB1) //ユーザーコントロールHogepekoB内のどれかのコントロールがフォーカス持ってる { uclInputHogepekoB1.NextCtrlMove(); } else //それ以外のコントロール { this.SelectNextControl(this.ActiveControl, true, true, true, true); } e.Handled = true; e.SuppressKeyPress = true; } else { } }ユーザーコントロールに実装したNextCtrlMove()メソッドには,SendKeyでTABコードを送るというダサダサ実装(GRB汗
public partial class UCLInputBase : UserControl { public void NextCtrlMove() { SendKeys.Send("{TAB}"); } }う~む,美しくない.ダサすぎ.素人の実装じゃねぇ~か(苦笑
まぁ,望みどおりの動きしているし,これでいいかっ!(GRB爆
参考情報程度でー
バグってたらスマソ❤
コメント
【#RUANG】インドネシア:ルアング山で火山が大規模噴火:愛媛で震度6弱な緊急地震速報(24/4/18)
イオンモール宮崎の辺りにイノシシが登場した,らしい
コンビニ誤交付、富士通に行政指導 原因究明と再発防止を要求―総務省
【#桜】花立公園で桜見物してきた!都井岬まで足を伸ばした!遠かった(爆
【#大谷翔平】水原一平氏、米連邦検察が銀行詐欺容疑で訴追…大谷翔平選手の口座から24億5千万円以上を不正送金
【#緊急地震速報】宮崎県日南市で震度5弱 津波の心配なし M5.2(24/2/8)
ずっと天気が悪いのぉ.菜種梅雨とはよく言ったものやじ(24/4/5)
【#暴風警報】宮崎市に暴風警報発令(24/3/26)