public IDisposable SubscribeCheckStateChanged( [NotNull] IServiceProvider serviceProvider, [NotNull] CheckStateChangedEventHandler handler) { if (serviceProvider == null) { throw new ArgumentNullException("serviceProvider"); } if (handler == null) { throw new ArgumentNullException("handler"); } return (_checkStateSubscribers .Select( subscribeMethod => (IDisposable) MethodBase .GetMethodFromHandle(subscribeMethod.MethodHandle) .Invoke( this, new object[] { serviceProvider, (Action)(() => handler(this, subscribeMethod.Names)) })) .Merge()); }
/// <summary> /// Инициализация узла чекбоксов /// </summary> /// <param name="customizingView">Дерево</param> /// <param name="column">Колонка</param> /// <param name="customizingCheckBox">Чекбокс</param> /// <param name="checkStateChanged">Делегат для обработки изменения /// состояния чекбокса</param> private static void SetUpNodeCheckBox(TreeViewAdv customizingView, TreeColumn column, NodeCheckBox customizingCheckBox, CheckStateChangedEventHandler checkStateChanged) { customizingCheckBox.DataPropertyName = "CheckState"; customizingCheckBox.VerticalAlign = VerticalAlignment.Center; customizingCheckBox.ParentColumn = column; customizingCheckBox.EditEnabled = true; customizingCheckBox.CheckStateChanged += new EventHandler <TreePathEventArgs>(checkStateChanged); customizingView.NodeControls.Add(customizingCheckBox); }
public IDisposable SubscribeCheckStateChanged( [NotNull] IServiceProvider serviceProvider, [NotNull] CheckStateChangedEventHandler handler) { if (serviceProvider == null) { throw new ArgumentNullException("serviceProvider"); } if (handler == null) { throw new ArgumentNullException("handler"); } return (_checkStateSources .Select(target => target.SubscribeCheckStateChanged(serviceProvider, handler)) .Merge()); }
/// <summary> /// Инициализация дерева TreeViewAdv из Aga библиотеки. /// </summary> /// <param name="customizingView">Дерево для настройки</param> /// <param name="columnName">Имя добавляемой колонки</param> /// <param name="checkStateChangedDelegate">Делегат для обработки /// изменения состояния чекбокса</param> /// <param name="customizingCheckBox">Чекбокс для настройки</param> /// <param name="drawNodeDelegate">Делегат для отрисовки текстовых /// элементов</param> public static void SetUpAdvTreeView(TreeViewAdv customizingView, string columnName, DrawEventHandler drawNodeDelegate, NodeCheckBox customizingCheckBox, CheckStateChangedEventHandler checkStateChangedDelegate = null) { customizingView.FullRowSelect = true; customizingView.FullRowSelectActiveColor = Color .FromArgb(192, 192, 255); customizingView.FullRowSelectInactiveColor = Color .FromArgb(192, 255, 192); customizingView.GridLineStyle = GridLineStyle.Horizontal; customizingView.UseColumns = true; customizingView.ShowLines = true; customizingView.ShowPlusMinus = true; customizingView.RowHeight = 20; TreeColumn column = SetUpColumn(customizingView, columnName); SetUpNodeCheckBox(customizingView, column, customizingCheckBox, checkStateChangedDelegate); SetUpNodeTextBox(customizingView, column, drawNodeDelegate); }