【C#】ユーザーコントロール内で,KeyDown()イベントが狙ったとおり動かない
関連記事
【#CSharp】制御系が動き出したべ 【2025年02月20日(木)】
【#CSharp】ひっさしぶりにガッツリなC#案件をやっているぞー 【2025年02月19日(水)】
- 今週もひたすらモノ書き #JAVA 祭りがまだまだ続く そろそろC#を書かせろー 【2024年12月04日(水)】
- 【#CSHARP】ソリューション内でサービス,Winformアプリを混在で作成させ,バイナリ出力先を同じにするとサービスが起動しない 【2024年02月08日(木)】
- 【#PHP】謎な #Laravel 案件 引き渡したじ 【2024年01月11日(木)】
エンターキー押したら,テキストボックスを次々移動していく,アレ
今の謎案件の画面実装やってたら,うまくいかない(汗
ダメなところは,ユーザーコントロールにテキストボックスを山のように張ったブロック
こんなやつ(諸般の事情でエッチな部分は消してあるぞな:爆)
これをフォームに貼り付けたけど,エンターキーでピョンピョン飛ばない.うまく行かねぇ...
ユーザーコントロール内のキー周りのイベントは特殊なことを基底側クラスでやっている模様.なので,キーイベントの動きが狙ったとおりの動きをしない感じ
海外事例イロイロあったんで,試してみたけどイマイチ
頭きたー(怒
ダサダサな実装でごまかすことに(笑
フォーム側の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爆
参考情報程度でー
バグってたらスマソ❤
コメント
宮崎ー台湾 国際定期便が週2往復に増便へ 来月30日から(25/2/15)
『にっぽん縦断 こころ旅』4月から田中美佐子が新たな旅人に 火野正平さんが14年間担当
オリックス・バファローズのキャンプ見学に行ってきた,昨日(爆(25/2/9)
【大雪】9日も降り続く見込み 交通影響に警戒 雪崩など注意を(25/2/9)
日産、ホンダとの統合合意撤回へ(25/2/5)
【特殊詐欺:トクリュウ】+1-844-173-3313から電話キター 特殊詐欺だぁ~~これはアカンヤツ
備蓄米放出へ準備、流通不足で初 政府、買い戻し条件に売り出し