【C#】ユーザーコントロール内で,KeyDown()イベントが狙ったとおり動かない
関連記事
- 【#CSharp】C#が2025年「プログラミング言語オブ・ザ・イヤー」獲得 【2026年01月16日(金)】
- なんと!今週の土曜日も仕事してますた.来週の土曜日も仕事臭い.TCPソケット通信をゴリゴリ書いてる 【2025年08月30日(土)】
- 【ChatGPT o4】祝日なのに仕事ーバテすぎー今夜こそ絶命だーモルモルモル 【2025年03月20日(木)】
- 【#CSharp】制御系が動き出したべ 【2025年02月20日(木)】
- 【#CSharp】ひっさしぶりにガッツリなC#案件をやっているぞー 【2025年02月19日(水)】
エンターキー押したら,テキストボックスを次々移動していく,アレ
今の謎案件の画面実装やってたら,うまくいかない(汗
ダメなところは,ユーザーコントロールにテキストボックスを山のように張ったブロック
こんなやつ(諸般の事情でエッチな部分は消してあるぞな:爆)

これをフォームに貼り付けたけど,エンターキーでピョンピョン飛ばない.うまく行かねぇ...
ユーザーコントロール内のキー周りのイベントは特殊なことを基底側クラスでやっている模様.なので,キーイベントの動きが狙ったとおりの動きをしない感じ
海外事例イロイロあったんで,試してみたけどイマイチ
頭きたー(怒
ダサダサな実装でごまかすことに(笑
フォーム側の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爆
参考情報程度でー
バグってたらスマソ❤

コメント
【#花粉症】目が腫れてキターくしゃみも止まらん.いよいよ花粉もピークか?
【#衆議院選挙2026 】自民 316議席獲得 単独で3分の2超 中道は49議席
【#衆議院選挙2026 】自民単独で過半数大きく上回り300議席に達する可能性
【BW55T】UPSが死んだ...ドロドロドロ😭これは人類滅亡間違いなし!なので発注(爆
広島カープの羽月隆太郎容疑者、「ゾンビたばこ」使用の疑いで逮捕
【#総選挙】衆議院選挙 きょう公示 12日間の選挙戦へ
青森 スノーモービル乗るため入山の約10人と連絡取れず 遭難か
【#不発弾】宮崎市中心部の不発弾 17日に処理 避難指示や交通規制予定(26/1/17)