/// <summary> /// Finds and select an item in the objectlistview according to single property of pointed type /// </summary> /// <typeparam name="T">Object model type which contains the property</typeparam> /// <typeparam name="T1">Property type to compare with record identyfier</typeparam> /// <param name="recordID">Record identyfier to compare with the property name</param> /// <param name="propertyName">Name of property which should be found in the object model type</param> /// <param name="olv">ObjectListView which owns the record and the object model</param> public static void SetListItem <T, T1>(T1 recordID, string propertyName, BrightIdeasSoftware.ObjectListView olv) { var Item = ((ISet <T>)olv.Objects).Where(x => ((T1)x.GetType().GetProperty(propertyName).GetValue(x)).Equals(recordID)).FirstOrDefault(); if (Item == null) { return; } olv.SelectObject(Item); olv.SelectedItem.EnsureVisible(); }
public void label_logmeter_TextChanged(object sender, EventArgs e) { if ( objectListView_data_table1.Focused ) { return; } item_selection_done_by_code = true; // remove line segment of interest and point of interest if any the_parent_form.show_point_of_interest(new GMap.NET.PointLatLng(0.0, 0.0)); the_parent_form.show_line_of_interest_segment(-1.0, -1.0); double logmeter = 0.0; double logmeter_0, logmeter_0_loaded, logmeter_1, logmeter_1_loaded; int index_of_first_selected_item = -1; int index_of_last_selected_item = -1; try { logmeter = Convert.ToDouble(label_logmeter.Text); } catch { return; } objectListView_data_table1.SelectedIndices.Clear(); for (int i = 0; i < list_data_table.Count; i++) { logmeter_0 = logmeter_0_loaded = utility.get_double(list_data_table[i]["logmeter_0"], -10000.0); logmeter_1 = logmeter_1_loaded = utility.get_double(list_data_table[i]["logmeter_1"], -10000.0); // swap if necessary so the processing below can be simple // this is the anti-log case from data in old database if ( (logmeter_1_loaded > -10000.0) && (logmeter_0_loaded > logmeter_1_loaded) ) { logmeter_0 = logmeter_1_loaded; logmeter_1 = logmeter_0_loaded; } if ( ((logmeter_0 <= logmeter) && (logmeter_1 >= logmeter)) || ((logmeter_1 < 0) && (logmeter_0 - 30 <= logmeter) && (logmeter_0 + 30 >= logmeter)) ) { if (index_of_first_selected_item == -1) { index_of_first_selected_item = i; } index_of_last_selected_item = i; // objectListView_data_table1.SelectedIndices.Add(i); objectListView_data_table1.SelectObject(list_data_table[i], false); } } // try to leave one unselected row on top if (index_of_first_selected_item < list_data_table.Count) { if (index_of_first_selected_item > 0) { try { objectListView_data_table1.EnsureVisible(index_of_first_selected_item - 1); } catch { } } else if (index_of_first_selected_item >= 0) { try { objectListView_data_table1.EnsureVisible(index_of_first_selected_item); } catch { } } } // try to leave one unselected row at the bottom if (index_of_last_selected_item >= 0) { if (index_of_last_selected_item < list_data_table.Count - 1) { try { objectListView_data_table1.EnsureVisible(index_of_last_selected_item + 1); } catch { } } else if (index_of_last_selected_item < list_data_table.Count) { try { objectListView_data_table1.EnsureVisible(index_of_last_selected_item); } catch { } } } item_selection_done_by_code = false; }