| ■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;
}
|