【发布时间】:2017-04-25 20:22:03
【问题描述】:
我的程序在文件中运行搜索,当找到该字符串时,它会在另一个字符串之间过滤它们,然后在列表框中以相应的颜色显示它们(红色表示坏行由第二个过滤器确定),绿色表示好的,列表框显示位置\文件,并在另一行显示行本身。
现在我想通过在 location\file 上的 dubbelclicking 打开文件但是我的代码在 ownerdrawfixed 中不起作用(我需要/想要颜色) 我试过了
string filename = listBox1.GetItemText(listBox1.selectedItem);
if (file.exists(filename))//to check if i click on a filename or on a line
{
try
{
System.diagnostics.process.start("scite.exe",filename); //open file with scite
}
catch
{
system.Diagnostics.Process.start(filename);//open file with windows default
}
我了解到字符串“文件名”现在包含“Datscan.Form1+MyListboxItem”
找到了很多关于如何将绘图模式设置为正常的答案,但我需要它在 ownerdrawfixed 中。
【问题讨论】:
-
是什么不工作?当
it does not work时会发生什么?你如何设置双击事件处理程序?只是为了 s* 和咯咯笑,以及故障排除,如果您不使用ownerdrawfixed,它是否有效? -
与 ownerdraw 无关。您的 MyListboxItem 类应覆盖 ToString()。因此,您可以使用 listBox1.SelectedItem.ToString()。 ownerdraw 不是绝对必要的,但如果你不这样做,那么你必须使用强制转换,比如 CType(listBox1.selectedItem, MyListboxItem).Filename,假设 Filename 是准确的(我们看不到它)。最好覆盖 ToString()。
标签: c# winforms listbox listboxitem