Сделайте экземпляр VkApi статическим, тогда и класс Auth и его методы можно сделать таковыми и всё будет работать:
public static VkApi vk = new VkApi();
Но если же, по каким-то причинам, у Вас это не получается, то Вы можете пойти другим путём.
Создайте статический экземпляр класса Auth в Program.cs.
// Где-нибудь за методом Main(), к примеру.
public static Auth authVk = new Auth();
Далее, в обработчике события button1_Click вызовите нужный Вам метод авторизации:
Program.authVk.GetAuth(tbLogin.Text, tbPassword.Text, tbID);
Я бы сделал bool возвращаемым значением метода GetAuth, чтобы ориентироваться на то, прошла ли авторизация или нет и открывать ли окно показа списка друзей или нет. А в обработчике что-то вроде этого:
if(!Program.authVk.GetAuth(tbLogin.Text, tbPassword.Text, tbID))
MessageBox.Show("Авторизация не прошла. Крепитесь!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
FrndList FrndList = new FrndList();
FrndList.Show();
Hide();
И, в данной ситуации, уже не потребуется передавать владельца " FrndList.Owner = this;", т.к. у нас есть уже статическое поле с авторизованным экземпляром класса, что нам позволит просто в обработчике события загрузки формы списка друзей показать этот список без танцев с бубном:
privatevoidFrndList_Load(object sender, EventArgs e)
{
Program.authVk.GetFriendList(lbFriends);
}