Exemple #1
0
        /// <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();
        }
Exemple #2
0
        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;
        }