/// <summary> /// Получение ИД контрола /// </summary> /// <param name="ctrl">контрол</param> /// <returns>индекс</returns> protected INDEX_ID getIndexIdOfControl(Control ctrl) { INDEX_CONTROL_BASE id = INDEX_CONTROL_BASE.UNKNOWN; //Индекс (по сути - идентификатор) элемента управления, инициировавшего событие INDEX_ID indxRes = INDEX_ID.UNKNOWN; try { //Определить идентификатор id = getIndexControl(ctrl); // , соответствующий изменившему состояние элементу 'CheckedListBox' switch (id) { case INDEX_CONTROL_BASE.CLBX_COMP_VISIBLED: indxRes = id == INDEX_CONTROL_BASE.CLBX_COMP_VISIBLED ? INDEX_ID.DENY_COMP_VISIBLED : INDEX_ID.UNKNOWN; break; default: break; } } catch (Exception e) { Logging.Logg().Exception(e, @"PanelManagementTaskTepValues::onItemCheck () - ...", Logging.INDEX_MESSAGE.NOT_SET); } return(indxRes); }
/// <summary> /// Найти элемент управления на панели идентификатору /// </summary> /// <param name="indxCtrl">Идентификатор элемента управления</param> /// <returns>элемент панели</returns> protected Control find(INDEX_CONTROL_BASE indxCtrl) { Control ctrlRes = null; ctrlRes = Controls.Find(indxCtrl.ToString(), true)[0]; return(ctrlRes); }
//private struct COMBOBOX_ITEM //{ // public string m_Text; // public object m_Id; //} private void fillComboBoxValues(IEnumerable <DataRow> rowValues , INDEX_CONTROL_BASE indxCtrl , int idSelected , string nameFieldTextValue , EventHandler handler) { int indx = -1 , indxSelected = -1; ComboBox ctrl = null; //COMBOBOX_ITEM cbxItem; DataTable tableValues; ctrl = Controls.Find(indxCtrl.ToString(), true)[0] as ComboBox; //// вариант №1 //foreach (DataRow r in tableValues.Rows) { // cbxItem = new COMBOBOX_ITEM() { m_Text = (string)r[nameFieldTextValue], m_Id = Convert.ChangeType(r[@"ID"], typeof(int)) }; // indx = ctrl.Items.Add(cbxItem); // if ((int)cbxItem.m_Id == idSelected) // if (indxSelected < 0) // indxSelected = indx; // else // throw new Exception(@"PanelManagementTaskCalculaye::fillComboBoxValues () - неоднозначный выбор элемента по указанному идентификатору ..."); // else // ; //} //ctrl.ValueMember = @"m_Id"; //"ID"; //ctrl.DisplayMember = @"m_Text"; //nameFieldTextValue; // вариант №2 if (rowValues.Count() > 0) { ctrl.ValueMember = @"ID"; ctrl.DisplayMember = nameFieldTextValue; tableValues = rowValues.ElementAt(0).Table.Clone(); rowValues.ToList().ForEach(r => { tableValues.Rows.Add(r.ItemArray); }); ctrl.DataSource = tableValues; ctrl.SelectedIndex = -1; //??? до или после //ctrl.SelectedIndexChanged += new EventHandler(handler); activateComboBoxSelectedIndex_onChanged(indxCtrl, handler, true); //if (!(idSelected < 0)) ctrl.SelectedValue = idSelected; //else // throw new Exception(@"PanelManagementTaskCalculaye::fillComboBoxValues () - не найдена строка для выбора по указанному идентификатру ..."); } else { Logging.Logg().Error(string.Format(@"PanelManagementTaskCalculate::fillComboBoxValues () - таблица для DataSource пуста..."), Logging.INDEX_MESSAGE.NOT_SET); } }
/// <summary> /// Возвратить идентификатор элемента управления по идентификатору /// , используемого для его заполнения /// </summary> /// <param name="indxId"></param> /// <returns>индекс элемента панели</returns> protected INDEX_CONTROL_BASE getIndexControlOfIndexID(INDEX_ID indxId) { INDEX_CONTROL_BASE indxRes = INDEX_CONTROL_BASE.UNKNOWN; switch (indxId) { case INDEX_ID.DENY_COMP_VISIBLED: indxRes = INDEX_CONTROL_BASE.CLBX_COMP_VISIBLED; break; default: break; } return(indxRes); }
/// <summary> /// Получение индекса контрола /// </summary> /// <param name="ctrl">контрол</param> /// <returns>имя индекса контрола на панели</returns> protected INDEX_CONTROL_BASE getIndexControl(Control ctrl) { INDEX_CONTROL_BASE indxRes = INDEX_CONTROL_BASE.UNKNOWN; string strId = (ctrl as Control).Name; if (strId.Equals(INDEX_CONTROL_BASE.CLBX_COMP_VISIBLED.ToString()) == true) { indxRes = INDEX_CONTROL_BASE.CLBX_COMP_VISIBLED; } else { throw new Exception(@"PanelTaskReaktivka::getIndexControl () - не найден объект 'CheckedListBox'..."); } return(indxRes); }
private object getComboBoxSelectedValue(INDEX_CONTROL_BASE indx) { object objRes = -1; ComboBox cbx = (Controls.Find(indx.ToString(), true)[0] as ComboBox); if ((!(cbx == null)) && (!(cbx.SelectedIndex < 0))) { objRes = //Convert.ChangeType(((COMBOBOX_ITEM)cbx.SelectedItem).m_Id, typeof(int)) Convert.ChangeType(cbx.SelectedValue, typeof(int)) ; } else { ; } return(objRes); }
/// <summary> /// /// </summary> /// <param name="bActive"></param> /// <param name="idToActivate"></param> protected virtual void activateCheckedHandler(bool bActive, INDEX_ID idToActivate) { INDEX_CONTROL_BASE indxCtrl = INDEX_CONTROL_BASE.UNKNOWN; CheckedListBox clbx = null; indxCtrl = getIndexControlOfIndexID(idToActivate); if (!(indxCtrl == INDEX_CONTROL_BASE.UNKNOWN)) { clbx = (Controls.Find(indxCtrl.ToString(), true)[0] as CheckedListBox); if (bActive == true) { clbx.ItemCheck += new ItemCheckEventHandler(onItemCheck); } else { clbx.ItemCheck -= onItemCheck; } } }
private void activateComboBoxSelectedIndex_onChanged(INDEX_CONTROL_BASE indxCtrl, EventHandler handler, bool bActivate = false) { ComboBox cbx = findControl(indxCtrl.ToString()) as ComboBox; // вариант №1 // всегда отписываться cbx.SelectedIndexChanged -= handler; // при необходимости подписаться if (bActivate == true) { cbx.SelectedIndexChanged += handler; } else { ; } //// вариант №2 //activateControl_onHandler(Controls.Find(indxCtrl.ToString(), true)[0] as ComboBox, "SelectedIndexChanged", handler, bActivate); ////??? вариант №3 универсальный ////activateControl_onHandler(cbx, cbx.SelectedIndexChanged, handler, bActivate); }