在构造函数中我做了:
if (listBox1.Items != null)
{
listBox1.Focus();
}
但是当我运行程序时,我无法在 listBox 中上下移动键盘,因为焦点位于表单中其他位置的按钮上。我需要在 listBox 上单击鼠标才能获得焦点。
我想要的另一个问题是,当用户向 listBox 添加新项目时,焦点将自动放在最后添加的项目上。对于这个问题,这是我向 listBox 添加新项目的代码:
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 项目的任何情况下设置焦点?
在构造函数的第一种情况下,我希望它位于列表中的最后一个项目上,并且每次我添加一个新项目时,焦点都将位于最后一个添加的项目上。