Amar chand123 Ответов: 1

Проблема в наборе максимального значения в полосе прокрутки в 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 ничего не вернула.

1 Ответов

Рейтинг:
0

Maciej Los

Цитата:
нужно полосу прокрутки показывать по умолчанию в правой стороне а не в левой


Итак, установите это свойство:
Контроль.Свойство RightToLeft (System.Окна.Формы) | Microsoft Docs[^]

Другой свойства HScrollBar[^] для установки перечислены здесь:
- Малый обмен,
- Большое изменение,
- Минимальный,
- Максимальный,
- Ценность.

По-моему, вы пытаетесь использовать HScrollBar как Прогрессбар[^Может быть, вам стоит их заменить?