Как отключить навигацию на WinForm со стрелками в C#?

не волнуются о "хорошем" семени для генератора случайных чисел. Статистические свойства последовательности не зависят от того, как генератор отобран.

я не соглашаюсь с совет John D. Cook . При отборе вихря Мерсенна со всеми битами, обнуленными кроме одного он первоначально генерирует числа, которые совсем не случайны. Требуется много времени, чтобы генератор взболтал это состояние во что-либо, что прошло бы статистические тесты. Просто установка первых 32 битов генератора к семени будет иметь подобный эффект. Кроме того, если все состояние будет обнулено, то генератор произведет бесконечный, обнуляет.

Правильно написанный код RNG будет иметь правильно записанный алгоритм отбора, который принимает, говорят, что 64 битовых значения и отбирают генератор, таким образом, это произведет достойные случайные числа для каждого возможного входа. Таким образом, если Вы будете пользоваться надежной библиотекой затем, то любое семя сделает. Но если Вы взламываете вместе свою собственную реализацию затем, необходимо быть осторожными.

13
задан ire_and_curses 23 August 2009 в 10:26
поделиться

3 ответа

Что-то вроде:

    private void Form1_Load(object sender, EventArgs e)
    {
        foreach (Control control in this.Controls)
        {
            control.PreviewKeyDown += new PreviewKeyDownEventHandler(control_PreviewKeyDown);
        }
    }

    void control_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
    {
        if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
        {
            e.IsInputKey = true;
        }
    }
16
ответ дан 1 December 2019 в 22:39
поделиться

Вы должны установить KeyPreview в значение true на форме. Обработайте событие KeyDown / KeyUp / KeyPress и установите для e.Handled в обработчике событий значение true для ключей, которые вы хотите игнорировать.

1
ответ дан 1 December 2019 в 22:39
поделиться

В итоге я получил код ниже, который устанавливает функцию КАЖДОГО элемента управления в форме:

(Код основан на коде от andynormancx)



private void Form1_Load(object sender, EventArgs e)
{
    SetFeatureToAllControls(this.Controls);    
}

private void SetFeatureToAllControls(Control.ControlCollection cc)
{
    if (cc != null)
    {
        foreach (Control control in cc)
        {
            control.PreviewKeyDown += new PreviewKeyDownEventHandler(control_PreviewKeyDown);
            SetFeatureToAllControls(control.Controls);
        }
    }
}

void control_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
    {
        e.IsInputKey = true;
    }
}
4
ответ дан 1 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: