Кто не null, ActiveControl? Я же делаю его null, иначе форма не принимает фокус и KeyDown ей не приходит.
По-моему это не убирает фокус.
А вызов фокуса на самой форме вообще хз что делать должен.
На это влияет KeyPreview.
Всё приходит.

Кроме таба, его можно добавить так Tab and KeyDown event
Но обычно хватает стандартного поведения, иначе как клавиатурой фокус менять.
Убирает. Добавьте кнопку и по ней будет видно. С кнопки точно убирает.
В параллельной вселенной он должен делать SetFocus(formHandle); как на WinAPI и фокус не должен сам никуда слетать.
сделайте
private void form1_MouseDown(object sender, MouseEventArgs e)
{
ActiveControl = null;
Focus();
}
и проверьте.
Стрелки видимо меняют фокус если текущий контрол их не обрабатывает.
А зачем так делать? Просто e.Handled = true; если обработали клавиши.
Мне надо обрабатывать нажатия только если ни один контрол не активен. Конечно, можно, наверное, при каждом нажатии как-то перебрать все контролы и проверить их активность. Но это опять костыли костыли костыли.
Да и при том, при нажатии на стрелки фокус всё-равно куда-то уходит, так что, не помогло бы.
Так это делается как и
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
Debug.WriteLine(e.KeyCode);
Debug.WriteLine($"ActiveControl = {ActiveControl}");
if (ActiveControl != null)
{
return;
}
if (e.KeyCode == Keys.Up)
{
Debug.WriteLine("⬆️");
e.Handled = true;
}
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
ActiveControl = null;
Focus();
}
protected override bool IsInputKey(Keys keyData)
{
return keyData == Keys.Up || base.IsInputKey(keyData);
}

Еще не пробовал, но в чём тут магия? Почему так контролы не будут активироваться при нажатии стрелок?
Проверил - абсолютно то же самое. Нажимаю на стрелки и ListBox активируется. Зачем это сделано и как отключить?
И, кстати, по ссылке там совершенно другая проблема, с данной темой никак не связанная.
Или имелось ввиду создать наследников от ListBox / Button и этот код туда вставить? Но похоже, что нет.
Листбокс не причем.
Задача же
Если добавить IsInputKey у формы, то когда нет фокуса стрелки будут попадать в KeyDown тоже.

У листбокса и текстбокса оно и так есть и ловится.
Если у кнопок и т.п. тоже надо, то вроде можно без наследников
https://stackoverflow.com/a/1318308/964478
Control.PreviewKeyDown Event (System.Windows.Forms) | Microsoft Docs
ну и, естественно, чтобы при нажатии клавиш фокус с формы никуда не уходил, иначе
уже активен
Так он и не уходит если они в IsInputKey формы.
уходит
Выше показано, что нет.
Так что либо нет KeyPreview, либо что-то другое странное в коде.
Вы там только вверх нажимаете, а надо во все стороны. В одном из предыдущих постов я делал поправку на это.
Так надо просто добавить все стрелки )
Я добавлял и нифига 
А в коде что сейчас?
Ну вот так можно сделать.
InitializeComponent();
foreach (Control control in Controls)
{
control.PreviewKeyDown += (ox, ex) =>
{
if (ex.KeyData == Keys.Up || ex.KeyData == Keys.Down)
{
ex.IsInputKey = true;
}
};
}
Это если надо чтобы при любом фокусе. А тут задача только когда нет фокуса, так что IsInputKey или PreviewKeyDown только у формы нужен.
нет фокуса на чем?
На элементах формы.
В коде выше кликом по форме снимается.