C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■93706 / )  Re[3]: チェックリストボックスのフォーカスについて
□投稿者/ KOZ (80回)-(2020/01/17(Fri) 12:26:45)
No93705 (犬夜叉 さん) に返信
>>フォーカスを取得したら、別のコントロールに位置付けるようにすれば良いと思います。
> すみません、具体的にどうすればよろしいのでしょうか?

こんな感じでどうでしょう?

public Form1() {
    InitializeComponent();

    clbInput.Enter += (sender, e) => {
        prevControl?.Focus();
    };
    clbInput.MouseDown += (sender, e) => {
        var index = clbInput.IndexFromPoint(e.Location);
        if (index != -1) {
            clbInput.SetItemChecked(index, !clbInput.GetItemChecked(index));
        }
        var txt = prevControl as TextBox;
        if (txt != null) {
            var lst = new List<string>();
            foreach (var selectedItem in clbInput.CheckedItems) {
                lst.Add(selectedItem.ToString());
            }
            prevControl.Text = string.Join(",", lst.ToArray());
        }
    };
    foreach (var con in GetControls(this)) {
        con.Enter += (sender, e) => {
            prevControl = (Control)sender;
        };
    }
}

private Control prevControl;

private static List<Control> GetControls(Control con) {
    var lst = new List<Control>();
    lst.Add(con);
    if (con.HasChildren) {
        foreach (Control child in con.Controls) {
            lst.AddRange(GetControls(child));
        }
    }
    return lst;
}


返信 編集キー/


管理者用

- Child Tree -