Вопрос:
как включить масштабирование в элементе управления диаграммой Microsoft с помощью колеса мыши
У меня есть код ниже, мне нужно знать, как сделать это событие? в каком классе это..
private void chData_MouseWheel(object sender, MouseEventArgs e) { try { if (e.Delta < 0) { chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset(); chart1.ChartAreas[0].AxisY.ScaleView.ZoomReset(); } if (e.Delta > 0) { double xMin = chart1.ChartAreas[0].AxisX.ScaleView.ViewMinimum; double xMax = chart1.ChartAreas[0].AxisX.ScaleView.ViewMaximum; double yMin = chart1.ChartAreas[0].AxisY.ScaleView.ViewMinimum; double yMax = chart1.ChartAreas[0].AxisY.ScaleView.ViewMaximum; double posXStart = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) — (xMax — xMin) / 4; double posXFinish = chart1.ChartAreas[0].AxisX.PixelPositionToValue(e.Location.X) + (xMax — xMin) / 4; double posYStart = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) — (yMax — yMin) / 4; double posYFinish = chart1.ChartAreas[0].AxisY.PixelPositionToValue(e.Location.Y) + (yMax — yMin) / 4; chart1.ChartAreas[0].AxisX.ScaleView.Zoom(posXStart, posXFinish); chart1.ChartAreas[0].AxisY.ScaleView.Zoom(posYStart, posYFinish); } } catch { } } Ответ №1
Я думаю, что вышеупомянутый ответ должен быть,
chData.MouseWheel + = новый MouseEventHandler (chData_MouseWheel);
Но в соответствии с тем, что я узнал, диаграмма mouse-wheel не работает, пока вы не ставите фокус на управление диаграммой в своем коде. Таким образом, я использовал mouse-enter элемента управления диаграммы, чтобы установить фокус на диаграмму и оставить событие мыши элемента управления диаграммы, чтобы вернуть управление его родительскому объекту.
Итак, вам нужно добавить строки ниже в свой код, привязать мышь и мыши, чтобы ввести события управления диаграммой соответственно, а также добавить вышеприведенную строку.
private void chartTracking_MouseEnter(object sender, EventArgs e) { this.chartTracking.Focus(); } private void chartTracking_MouseLeave(object sender, EventArgs e) { this.chartTracking.Parent.Focus(); } Ответ №2
У вас есть метод-обработчик для события MouseWheel. Вам необходимо прикрепить метод обработчика к событию MouseWheel для элемента управления диаграммой. Из подписи метода я предполагаю, что ваш элемент управления диаграммой имеет название chData, поэтому вы можете использовать следующий код в своем конструкторе форм:
chData.MouseWheel += new EventHandler(chData_MouseWheel);
Конечно, вы также можете связать обработчик с событием во время разработки. Для этого используйте окно “Свойства” и нажмите на молнию на панели инструментов, чтобы перейти к представлению “События”. Затем найдите событие MouseWheel, щелкните стрелку раскрывающегося списка и выберите подпись метода обработчика. Это заставит дизайнера написать указанный выше код в файл кода для вашей формы.
Кроме того, в вашем коде есть гигантский красный флаг: пустой catch блок. Если вы не обрабатываете исключение или ничего не делаете с ним, вы не должны его ловить. Это не Покемон, нет награды за то, что они поймали их всех.