С# Winforms Панель прокрутки Прыжок при изменении фокусаC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 С# Winforms Панель прокрутки Прыжок при изменении фокуса

Сообщение Anonymous »

Я столкнулся с парой похожих вопросов, однако опубликованные решения не сработали в моем случае.
Некоторые подробности:
Я создаю a Dashboard, у меня есть основная панель содержимого (прокручиваемая), заполненная пользовательским элементом управления в зависимости от выбранной страницы.
В пользовательском элементе управления у меня есть несколько различных графиков и таблиц для создания информационной панели.
У меня есть специальная подсказка, которая появляется рядом с курсором при наведении курсора. Он работает отлично, пока я не нажму на любой из графиков. Затем всякий раз, когда подсказка инструмента перемещается в позицию курсора, полоса прокрутки переходит в, казалось бы, случайную позицию в верхней части пользовательского элемента управления.
Я смог сделать вывод, что переход происходит во время работы инструмента. Процесс перемещения подсказки:
Код подсказки:

Код: Выделить всё

 private void ytdSalesChart_GetToolTipText(object sender, ToolTipEventArgs e)
{

Chart control = sender as Chart;

Panel parent = this.Parent as Panel;

int ScrollPosStart = parent.VerticalScroll.Value;

Debug.WriteLine($"Moving Tooltip! Scroll Pos: {ScrollPosStart}");
if (e.HitTestResult.ChartElementType == ChartElementType.DataPoint)
{
int i = e.HitTestResult.PointIndex;
int seriesI = control.Series.IndexOf(e.HitTestResult.Series);
DataPoint dp = e.HitTestResult.Series.Points[i];

if (!chartTip.Visible)
{
chartTip.Visible = true;
}
chartTip.SetTitle(e.HitTestResult.Series.Name.Trim());
chartTip.SetValLbl("Value: " + FormatNumber(dp.YValues[0]));
chartTip.SetSeries("Branch: " + dp.AxisLabel);

chartTip.SetSeriesColor(control.PaletteCustomColors[seriesI]);
chartTip.Location = new Point(control.Parent.Location.X + e.X + 10, control.Parent.Location.Y + e.Y + 10);
chartTip.BringToFront();
Debug.WriteLine($"Finished Moving Tooltip! Scroll Pos: {parent.VerticalScroll.Value}");
parent.VerticalScroll.Value = ScrollPosStart;
this.ActiveControl = null; This helped but did not fix the issue also added to the on_click for the charts (helped more cases)
}
else
{
chartTip.Visible = false;
}

}
Когда возникает ошибка, я получаю следующий результат (имейте в виду, что это рассылка спама в мою консоль для тестирования, и все это происходит за долю секунды, когда я навожу курсор на диаграмму для всплывающей подсказки). ):
Он делает разные вещи в зависимости от условий:
Когда меня прокручивают вверх (0), он делает следующее

Код: Выделить всё

Moving Tooltip! Scroll Pos: 0
Finished Moving Tooltip! Scroll Pos: 194
Moving Tooltip! Scroll Pos: 87
Третья строка — это второй запуск ytdSalesChart_GetToolTipText, поскольку ошибка прокрутки снова срабатывает при перемещении курсора мыши.
Любая информация /понимание того, что происходит, будет полезно.

Подробнее здесь: https://stackoverflow.com/questions/788 ... us-changes
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»