Вы можете сделать это, отправив сообщение LB_SETCARETINDEX в список:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern uint SendMessage(IntPtr hWnd, uint msg, uint wParam, uint lParam);
public const uint LB_SETCARETINDEX = 0x019E;
public const uint LB_GETCARETINDEX = 0x019F;
[...]
public int OutlineIndex
{
get
{
return (int) WinAPI.SendMessage(Handle, WinAPI.LB_GETCARETINDEX, 0, 0);
}
set
{
if (value < 0 || value >= Items.Count)
throw new ArgumentException("OutlineIndex cannot be negative or greater than the size of the collection.", "value");
WinAPI.SendMessage(Handle, WinAPI.LB_SETCARETINDEX, (uint) value, 0);
}
}