添加到“;打开最近的文件”;
本文关键字:文件 最近 添加 | 更新日期: 2023-09-27 18:28:43
如何将点击事件添加到新添加的菜单项中?以下是我迄今为止所做的工作。显然我的方式很业余,那么还有什么更好的方式呢?
Collection<string> recent_cases = new Collection<string>();
recent_cases.Insert(0, System.IO.Path.GetFileNameWithoutExtension(ofd.FileName));
if (recent_cases.Count == 6)
{
recent_cases.RemoveAt(5);
}
for (int i = 0; i < recent_cases.Count; ++i)
{
MenuItem_OpenRecent.Items.Add(recent_cases[i]);
}
MenuItem通常调用命令,而不是让您监听单击事件。
假设这是一个最近使用的文件列表,我假设该命令将是"打开文件"或类似的命令,并且该命令已经存在。
如果用户选择了一个最近使用的文件,您将希望调用相同的命令,但另外提供文件名作为命令参数。
因此:
void OnNewFilenameAdded(string filename)
{
var item = new MenuItem();
item.Command = _OpenFileCommand;
item.Header = filename;
item.CommandParameter = filename;
MenuItem_OpenRecent.Items.Insert(0, item);
if (MenuItem_OpenRecent.Items.Count == 6)
MenuItem_OpenRecent.Items.RemoveAt(5);
}
如果您真的想保留一个单独的文件名集合,例如如果您要用MVVM实现这一点,那么请查看Queue<>
类。
沿着这些线应该可以完成
for (int i = 0; i < recent_cases.Count; ++i)
{
var mi= new MenuItem();
mi.Header = recent_cases[i];
mi.Click += new EventHandler(MenuItem_Click);
MenuItem_OpenRecent.Items.Add(mi);
}
....
void MenuItem_Click(object sender, EventArgs e)
{
var mi= sender as MenuItem;
//Do stuff with your file
}