//获取搜索界面ListBox 点名数据 private ObservableCollection <SignalDisplay> getSourcePointNames() { //pointMetaData.Sort((a,b)=> a.Name.CompareTo(b.Name)); ObservableCollection <SignalDisplay> pointNames = new ObservableCollection <SignalDisplay>(); foreach (var metaData in pointMetaData) { if (metaData.Length == 1) { SignalDisplay s = new SignalDisplay { SignalName = metaData.Name, Type = metaData.ValueType, IsVirtual = metaData.IsVirtual }; pointNames.Add(s); } else { for (int i = 0; i < metaData.Length; i++) { string name = string.Concat(metaData.Name, "[", i, "]"); SignalDisplay s = new SignalDisplay { SignalName = name, Type = metaData.ValueType, IsVirtual = metaData.IsVirtual }; pointNames.Add(s); } } } return(pointNames); }
private void wirteTeBox_KeyDown(object sender, KeyEventArgs e) { TextBox inputTeBox = sender as TextBox; if (e.Key == Key.Enter) { var parent = VisualTreeHelper.GetParent(inputTeBox) as ContentPresenter; SignalDisplay item = parent.Content as SignalDisplay; int index = 0; var nameGroup = item.SignalName.Split('['); if (nameGroup.Length > 1) { nameGroup[1] = nameGroup[1].Replace("]", ""); int.TryParse(nameGroup[1], out index); } WriteData data = new WriteData { Name = nameGroup[0], Index = index.ToString(), Type = item.Type, Value = inputTeBox.Text }; clientAsync.WriteAsync(new List <WriteData> { data }); } }
private void listView_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Delete) { List <SignalDisplay> deleteList = new List <SignalDisplay>(); List <Address> cancelList = new List <Address>(); var items = listView.SelectedItems; foreach (var item in items) { SignalDisplay s = item as SignalDisplay; deleteList.Add(s); } foreach (var s in deleteList) { int index = 0; var nameGroup = s.SignalName.Split('['); if (nameGroup.Length > 1) { nameGroup[1] = nameGroup[1].Replace("]", ""); int.TryParse(nameGroup[1], out index); } signalList.Remove(s); cancelList.Add(new Address() { Name = nameGroup[0], Index = index.ToString(), Type = s.Type }); } while (cancelList.Count > 1000) { var send = cancelList.GetRange(0, 100); cancelList.RemoveRange(0, 100); clientAsync.CancelSubscribe(send); } clientAsync.CancelSubscribe(cancelList); } }
private SignalDisplay find(SignalDisplay target) { string item = signalSearchTeBox.Text; if (item != null && item != "" && target != null) { var group = item.Split(new string[] { "*" }, StringSplitOptions.RemoveEmptyEntries); int position = 0; foreach (var s in group) { position = target.SignalName.IndexOf(s, position); if (position == -1) { return(null); } } return(target); } else { return(target); } }