Morpheus_God
@Morpheus_God

Передача списка друзей в другую форму. Как сделать?

Добрый день. Пробую написать программу с библиотекой VkNet. Простой мессенджер, который позволит отправлять и получать сообщение друзьям ВКонтакте.
------------------------------------
Небольшой апдейт вопроса.
Было решено поместить все что связано с VkNet в отдельный класс.
using System;
using System.Windows.Forms;
using VkNet;
using VkNet.Enums.Filters;
using VkNet.Exception;

namespace vkmessenger
{
    public class Auth
    {
        VkApi vk = new VkApi();
        Settings scope = Settings.All;

        public void GetAuth(string login,string pass, int AppID)
        {
            try
            {
                vk.Authorize(new ApiAuthParams
                {
                    ApplicationId = AppID,
                    Login = login,
                    Password = pass,
                    Settings = scope
                });
            }
            catch(Exception ex)
            {

            }
        }
        public void GetFriendList(ListBox lb)
        {
                var friends = vk.Friends.Get(vk.UserId.Value, ProfileFields.FirstName | ProfileFields.LastName);
                foreach (var friend in friends)
                {
                    lb.Items.Add(friend.FirstName + " " + friend.LastName);
                }
        }
    }
}

На форме авторизации я сделал так.
using System;
using System.Windows.Forms;
using VkNet;
using VkNet.Enums.Filters;
using VkNet.Exception;

namespace vkmessenger
{
    public partial class Form1 : Form
    {
        Auth auth = new Auth();

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
                auth.GetAuth(tbLogin.Text, tbPassword.Text, tbID);
                FrndList FrndList = new FrndList();
                FrndList.Owner = this;
                FrndList.Show();
                Hide();
        }
    }
}


И получить список друзей в другой форме
using System;
using System.Windows.Forms;
using VkNet;
using VkNet.Enums.Filters;
using VkNet.Exception;


namespace vkmessenger
{
    public partial class FrndList : Form
    {
        Auth auth = new Auth();

        public FrndList()
        {
            InitializeComponent();
        }
    private void FrndList_Load(object sender, EventArgs e)
        {
            auth.GetFriendList(lbFriends);
        }
        private void FrndList_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }
    }
}

Но не работает. Я понимаю в чем вероятная ошибка. На второй форме я опять создаю экземпляр который не имеет данных из первой формы об авторизации. Как выйти из ситуации, как передать в другую форму информацию о том, что уже создан экземпляр класса и работать надо с экземпляром из первой формы? Если пробовать создать static класс для авторизации, то IDE ругается "Нельзя объявлять члены экземпляра в статическом классе" оно в принципе и понятно. Как выйти из ситуации?
  • Вопрос задан
  • 229 просмотров
Решения вопроса 1
@andoral
по идее сразу после создания экземпляра VkApi поле UserId у тебя пустое же? Тогда если ты используешь его как аргумент метода, то это скорее всего и вызывает ошибку
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы