Добавление некоторых значений для кнопки прокрутки в devexpress

Я хочу, чтобы скорости передачи, такие как 2400, 4800,..., 57600, 115200, можно было выбрать с помощью кнопки прокрутки.

Я не вижу способа сделать это с помощью кнопки управления devexpress, поскольку (насколько я понимаю) можно установить только целый диапазон значений (например, 2400, 2401, 2402,... 57599, 57600). Я ошибаюсь? Есть ли лучший способ в devexpress, чтобы пользователь мог установить скорость передачи данных?


person Arlecchino12    schedule 03.09.2014    source источник


Ответы (2)


Событие, которое вы ищете, называется «Вращение».

Установите минимальное значение на 2400, максимальное значение на 115200.

Затем поместите свою логику в код события вращения:

private void spinEdit1_Properties_Spin(object sender, DevExpress.XtraEditors.Controls.SpinEventArgs e)
{
    if (e.IsSpinUp)
    {
        spinEdit1.EditValue = 4800;
        e.Handled = true;
    }
    else
    {
        spinEdit1.EditValue = 2400;
        e.Handled = true;
    }
}

Примечание: этот пример работает только до 4800 и до 2400, но вы поняли идею. Вы также можете использовать часть кода nempoBu4 в сочетании с этим :)

person Markus Doerig    schedule 05.09.2014

Вы можете использовать событие BaseEdit.CustomDisplayText для отображения пользовательских значений. Просто создайте массив со скоростью передачи данных и установите максимальное значение на верхнюю границу массива.
Вот пример:

private int[] _baudRates = new int[] { 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 76800, 115200, 230400 };

public Form1()
{
    InitializeComponent();

    //...
    spinEdit1.Properties.MinValue = 0;
    spinEdit1.Properties.MaxValue = _baudRates.Length - 1;
    spinEdit1.Properties.TextEditStyle = TextEditStyles.DisableTextEditor;
    //...
}

private int GetBaudRate(object value)
{
    return _baudRates[Convert.ToByte(value)];
}

private void spinEdit1_CustomDisplayText(object sender, CustomDisplayTextEventArgs e)
{
    e.DisplayText = GetBaudRate(e.Value).ToString();
}
person nempoBu4    schedule 03.09.2014
comment
Я понимаю идею, но боюсь, это не сработает. Изменил spinEdit1.Properties.MaxValue = _baudRates.Length - 1; на spinEdit1.Properties.MaxValue = _baudRates[_baudRates.Length - 1];, но я все еще получаю значения, увеличивающиеся на 1 (2400, 2401, 2402...). Думаю, мне нужно копнуть глубже в BaseEdit.CustomDisplayText... - person Arlecchino12; 03.09.2014