我想在鼠标移动完成后从滑动条中获取值,并且不想多次标记内容更改,我的代码:
List<String> lines = new ArrayList<>();
Map<String,Map<String,List<String>>> tree = new TreeMap<String,Map<String,List<String>>>();
for(int i=0;i<lines.size();i++){
String[] parts = lines.get(i).split(",");
if(!tree.containsKey(parts[0])){
tree.put(parts[0],new TreeMap<String,List<String>>());
}
Map<String,List<String>> tree2 = tree.get(parts[0]);
if(!tree.containsKey(parts[1])){
tree2.put(parts[1],new ArrayList<String>());
}
List<String> tree3 = tree2.get(parts[1]);
if(!tree3.contains(parts[2])){
tree3.add(parts[2]);
}
}
怎么做?
答案 0 :(得分:1)
您必须使用DragCompleted
事件(https://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.thumb.dragcompleted%28v=vs.110%29.aspx)。
在用户释放MouseButton后触发。
private void SecondsSlider_DragCompleted(object sender, RoutedEventArgs e)
{
this.SecondsLabel.Content = (int)this.SecondsSlider.Value;
}
XAML中的用法:
<Slider Thumb.DragCompleted="SecondsSlider_DragCompleted" />
答案 1 :(得分:0)
根据我的理解,您只想从滑块获取一次值。 您可以使用静态bool,一旦crested将不再创建,如下所示:
private void SecondsSlider_ValueChanged(object sender,RoutedPropertyChangedEventArgs e) { static bool isPicked = false; 如果(!isPicked){ this.SecondsLabel.Content =(int)this.SecondsSlider.Value; isPicked = TRUE; } }
这样你只能得到一次值并改变bool isPicked的tp为true,一旦改为true,你就不会再选择滑块的值了。 我希望能解决你的问题。
P.S:对不起,如果我的答案格式不正确,原因是我现在正在使用手机。