我正在使用brightideassoftware的treelistview,并希望在我的树形图中选择一个特定的孩子。
我的对象类型是' MeasurementFile'。
public class MeasurementFile
{
private string fileName = string.Empty;
private List<SignalObjects> signals = new List<SignalObjects>();
...
}
孩子的类型是&#39; SelectObjects&#39;:
public class SignalObjects
{
private string signalName = string.Empty;
public SignalObjects(string signalName)
{
this.signalName = signalName;
}
public string SignalName { get { return signalName; } }
}
因此每个MeasurementFile都有一个信号列表。
我的treelistview看起来像:
MyWinForm:
name/signal //Column
-myFile1
|_____signal1
|_____signal2
|_____signal3
-myFile2
-myFile3
-myFile4
现在我想在一个特定的孩子后搜索。如果MeasurementFileobject已展开并且我在searchTextEdit中输入了某些内容,则应选择所有匹配的子项。如果我输入&#34; al1&#34;在我的搜索栏中,名为&#34; signal1&#34;的孩子应该被选中。
我的问题是:如何选择匹配的孩子?
我试过......
private void searchSignalTextEdit_TextChanged(object sender, EventArgs e)
{
string text = searchSignalTextEdit.Text;
if (!String.IsNullOrEmpty(text))
{
foreach (MeasurementFile measurementFile in treeListView1.Objects)
{
if (treeListView1.IsExpanded(measurementFile))
{
foreach (SignalObjects signal in measurementFile.getSignals)
{
if (signal.SignalName.Contains(text))
{
treeListView1.SelectObject(signal);
}
}
}
}
}
}
......但没有选择任何东西。如果有人可以帮助我,我会很高兴:)
答案 0 :(得分:0)
使用linq和正则表达式 像这样:
Regex regex = new Regex(...);
var signals = MeasurementFile.Signals.Select(x=>x.signalName).Asenumebrable;
var matchingsignals = signals.Where(x => regex.IsMatch(x)).ToList();
var matching = MeasurementFile.Signals.Where(d => matchingsignals.Contains(d.signalName));