Шпаргалка по ZedGraph. Как запретить контролу менять курсор

При наведении курсора мыши на график внутри ZedGraph, компонент меняет курсор мыши на курсор в виде перекрестия, а при перемещении графика с помощью средней кнопки мыши - на курсор в виде руки.

Данный пример показывает, как запретить изменять курсор при наведении его на график, при этом разрешив изменение для выделения прямоугольной области на графике и при перемещении графика.

Пример использует событие CursorChanged, которое срабатывает при попытке изменить курсор, однако, если нужно более гибко обрабатывать события, связанные с курсором, то может понадобиться обрабатывать событие MouseMoveEvent (не путать с MouseMove). Вернув, из MouseMoveEvent true, мы запретим дальнейшую обработку события при перемещении мыши внутри контрола, в том числе запретим изменение курсора. Однако при этом надо быть осторожным, так как будет отменена и полезная реакция контрола на это событие (рисование области выделения и перемещение графика).

Все примеры объединены в одном solution для Visual Studio 2005 и написаны на языке C#, скачать их можно отсюда.

Проект в примере - CursorChange

public partial class Form1 : Form
    {
        public Form1 ()
        {
            InitializeComponent ();

            // Подпишемся на событие, которое срабатывает при изменении курсора
            zedGraph.CursorChanged += new EventHandler (zedGraph_CursorChanged);

            DrawGraph ();
        }


        /// <summary>
        /// Событие при изменении курсора
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void zedGraph_CursorChanged (object sender, EventArgs e)
        {
            // Разрешим ZedGraph'у изменять курсор при выделении участка на графике,
            // а также при перемещении графика.
            // В обоих случаях курсор будет "захвачен"
            // Если курсор не "захвачен", то установим курсор обратно в виде стрелки.
            // Если нужно запретить изменять курсор в любом случае,
            // то достаточно просто убрать условие.

            if (!zedGraph.Capture)
            {
                zedGraph.Cursor = Cursors.Arrow;
            }
        }

        private double f (double x)
        {
            if (x == 0)
            {
                return 1;
            }

            return Math.Sin (x) / x;
        }


        private void DrawGraph ()
        {
            GraphPane pane = zedGraph.GraphPane;

            // Очистим список кривых
            pane.CurveList.Clear ();

            // Создадим список точек
            PointPairList list = new PointPairList ();

            double xmin = -50;
            double xmax = 50;

            // Заполняем список точек
            for (double x = xmin; x <= xmax; x += 0.01)
            {
                // добавим в список точку
                list.Add (x, f (x));
            }

            // Создадим кривую
            LineItem myCurve = pane.AddCurve ("", list, Color.Blue, SymbolType.None);

            // Вызываем метод AxisChange (), чтобы обновить данные об осях.
            zedGraph.AxisChange ();

            // Обновляем график
            zedGraph.Invalidate ();
        }
    }

Вернуться к остальным примерам

Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
5 stars

Рейтинг 5.0/5. Всего 6 голос(а, ов)



СЕлена 24.04.2012 - 15:37

Вывод подсказки

При наведении курсора мыши на график внутри ZedGraph, компонент не меняет курсор мыши, он всегда в виде стрелки.
Поэтому не могу ни вывести подсказки, ни передвинуть график. Что делаю не так?


Подписаться на комментарии
Автор:
Тема:
 Ваш комментарий
 
 
Введите код 822