コンストラクターで私はしました:
if (listBox1.Items != null)
{
listBox1.Focus();
}
しかし、プログラムを実行しているときは、フォーム内の別の場所にあるボタンにフォーカスがあるため、listBoxでキーボードを上に移動することはできません。フォーカスを取得するには、listBoxをマウスでクリックする必要があります。
もう1つの問題は、ユーザーがリストボックスに新しいアイテムを追加すると、最後に追加されたアイテムに自動的にフォーカスが移ることです。この問題の場合、これはリストボックスに新しいアイテムを追加するコードです。
private void KeysValuesUpdate()
{
using (var w = new StreamWriter(keywords_path_file))
{
crawlLocaly1 = new CrawlLocaly();
crawlLocaly1.StartPosition = FormStartPosition.CenterParent;
DialogResult dr = crawlLocaly1.ShowDialog(this);
if (dr == DialogResult.OK)
{
if (LocalyKeyWords.ContainsKey(mainUrl))
{
LocalyKeyWords[mainUrl].Clear();
LocalyKeyWords[mainUrl].Add(crawlLocaly1.getText());
}
else
{
LocalyKeyWords[mainUrl] = new List<string>();
LocalyKeyWords[mainUrl].Add(crawlLocaly1.getText());
}
Write(w);
ClearListBox();
}
if (dr == DialogResult.Cancel)
{
Write(w);
}
}
}
private void ClearListBox()
{
data.Clear();
listBox1.DataSource = null;
string sb;
foreach (KeyValuePair<string, List<string>> kvp in LocalyKeyWords)
{
for (int i = 0; i < kvp.Value.Count(); i++)
{
sb = "Url: " + kvp.Key + " --- " + "Local KeyWord: " + kvp.Value[i] + Environment.NewLine;
data.Add(sb.ToString());
}
}
listBox1.DataSource = data;
}
問題は、listBoxアイテムのどのケースでもフォーカスを設定できないのはなぜですか?
コンストラクターの最初のケースでは、フォーカスをリストの最後のアイテムに配置し、新しいアイテムを追加するたびに、最後に追加されたアイテムにフォーカスを配置します。