Описание кнопки для контрола SmilesToolbar.
示例#1
0
        private void ToolbarButtonClick(object sender, ButtonInfo buttonInfo)
        {
            var menuCommand = (IMenuCommand)buttonInfo.Tag;

            _commandHandlerService.ExecuteCommand(
                menuCommand.CommandName,
                new CommandContext(_serviceProvider, menuCommand.Parameters));
        }
示例#2
0
		private int FindButton(ButtonInfo buttonInfo)
		{
			for (int i = 0, len = Controls.Count; i < len; i++)
			{
				var control = Controls[i];
				if (control.Tag == buttonInfo)
					return i;
			}

			return -1;
		}
示例#3
0
		private void ButtonInfoRemoved(ButtonInfoCollection sender, ButtonInfo buttonInfo)
		{
			var index = FindButton(buttonInfo);
			if (index < 0) // кнопка не найдена
				throw new ApplicationException(
					"Кнопка '" + buttonInfo.Text + "' не может быть удалена, так как она отсуствует в списке.");

			var control = Controls[index];
			control.Click -= SmilesToolbarClick;
			_toolTip.SetToolTip(control, ((ButtonInfo)control.Tag).Hint);
			Controls.RemoveAt(index);

			if (sender != null)
				UpdateButtons();
		}
示例#4
0
		//private ArrayList _buttons = new ArrayList(30);

		private void ButtonInfoAdded(ButtonInfoCollection sender, ButtonInfo buttonInfo)
		{
			var button = buttonInfo.Image == null
				? (Control)new Label { Text = buttonInfo.Text, AutoSize = true }
				: new PictureBox { SizeMode = PictureBoxSizeMode.AutoSize, Image = buttonInfo.Image };

			if (!IsSpecialButton(buttonInfo))
			{
				button.Click += SmilesToolbarClick;
				button.Cursor = Cursors.Hand;
				_toolTip.SetToolTip(button, buttonInfo.Hint ?? buttonInfo.Text);
			}

			button.Tag = buttonInfo;
			Controls.Add(button);

			if (sender != null)
				UpdateButtons();
		}
示例#5
0
		/// <summary>
		/// Проверка кнопки на её "специальное" использование.
		/// На "специальных" кнопках не меняется курсор и не отлавливается нажатие мыши.
		/// </summary>
		/// <param name="buttonInfo">Описание проверяемой кнопки</param>
		/// <returns><c>true</c>, если кнопка является "специальной"</returns>
		private static bool IsSpecialButton(ButtonInfo buttonInfo)
		{
			if (buttonInfo == null)
				throw new ArgumentNullException("buttonInfo");

			return buttonInfo.Text == _newLineButtonText;
		}
示例#6
0
		/// <summary>
		/// Вызвает событие ButtonClick.
		/// </summary>
		/// <param name="buttonInfo">Описание нажатой кнопки</param>
		private void OnButtonClick(ButtonInfo buttonInfo)
		{
			if (ButtonClick != null)
				ButtonClick(this, buttonInfo);
		}
示例#7
0
		private void ButtonInfoChanged(ButtonInfoCollection sender,
			ButtonInfo oldButtonInfo, ButtonInfo newButtonInfo)
		{
			ButtonInfoRemoved(null, oldButtonInfo);
			ButtonInfoAdded(null, newButtonInfo);
			UpdateButtons();
		}