Проблема в наборе максимального значения в полосе прокрутки в C#
Я пытаюсь установить максимальное значение полосы прокрутки из числа строк базы данных, но оно не работает, поэтому, пожалуйста, помогите мне в этой проблеме
И при необходимости полоса прокрутки показывает значение по умолчанию в правой стороне а не в левой
Что я уже пробовал:
private void DataEntry_Load(object sender, EventArgs e) { AutoDate1(); fillCombo(); ScrollBar(); } private void ScrollBar() { String connstring = ConfigurationManager.ConnectionStrings["Data"].ConnectionString; OleDbConnection con = new OleDbConnection(connstring); string Query = "select Count(SrNumber) from customer"; OleDbCommand cd = new OleDbCommand(Query, con); { con.Open(); int c = Convert.ToInt16(cd.ExecuteScalar()); hScrollBar1.Maximum = c; } }
Richard Deeming
Это Windows Forms? WPF? Что-то еще?
И вы не объяснили, что значит "не работает".
Amar chand123
В winform и я хочу, чтобы моя полоса прокрутки бар максимальное значение показывают, как пар моей базе данных количество строк я имею в виду например моя база данных таблица имеет 10 строк, то я хочу, если я нажимаю правой кнопкой на полосе прокрутки то в 10 Кнопкой Мыши мой прокрутки установки показывают в последнее и если я нажимаю левую кнопку 10 раз, затем выделите позицию вернитесь в первую позицию, но когда я использую этот код не работает полоса прокрутки полоса прокрутки не пойти налево или направо
Richard MacCutchan
Достаточно ли велики ваши данные, чтобы превысить размер окна? Полосы прокрутки появляются только тогда, когда все данные не могут поместиться в окне. И вряд ли ваше окно будет слишком маленьким для 10 рядов.
Amar chand123
я хочу использовать свою полосу прокрутки как кнопку Next Perv и я использую этот код
частная hScrollBar1_Scroll недействительным(объект отправителя, ScrollEventArgs е)
{
если (электронная.Старого значения в < адрес электронной.Значение)
btnNext.PerformClick();
если (электронная.Старого значения &ГТ; электронная.Значение)
btnPrev.PerformClick();
}
Richard MacCutchan
Так в чем же проблема?
Amar chand123
проблема в том, что когда я использую свой код ScroolBar ();, то полоса прокрутки отображается следующим образом
https://pasteboard.co/J8kR3tu.jpg
но в моей базе данных у меня есть 10 строк
я хочу положение прокрутки перейти слева направо после 10 кликов но как вы видите положение прокрутки показать заливку уже в полосе прокрутки
Richard MacCutchan
Да, потому что вы не используете его правильно. Взгляните на это Полосу прокрутки.Максимальное Имущества (Системы.Окна.Формы) | Microsoft Docs[^]. Полоса прокрутки должна перемещаться только в том случае, если объем отображаемых данных превышает ширину или высоту элемента управления, к которому он прикреплен. Поэтому вам нужно установить другие значения, чтобы заставить его действовать так, как вы хотите. Лучше было бы использовать кнопки.
Amar chand123
я использую replace Maximum для этой работы но только небольшую проблему если количество строк равно делению 100 в десятичном значении
hScrollBar1.SmallChange=100/c;
Richard MacCutchan
Не используйте абсолютные значения, они никогда не будут работать. Вам нужно рассчитать значения, основанные на количестве отображаемых элементов и размере окна. Но если окно уже достаточно велико, чтобы отобразить все данные, то, как я уже упоминал, полоса прокрутки не будет создана правильно. Поэтому вам нужно сделать некоторые дополнительные вычисления, чтобы заставить полосу прокрутки думать, что только некоторые данные могут быть показаны в окне.
Richard MacCutchan
Вам не нужна функция Convert, Select Count возвращает число. Но причина, по которой он не работает, скорее всего, заключается в том, что ваша команда SELECT ничего не вернула.