1

我正在尝试通过 TweetInvi API 获取 Tweet ID,但总是得到空点异常。我没有选择,无法理解我做错了什么。这是我的代码。当我从视图中选择所需的项目并按转推时会出现问题。

namespace MIF_TwitterApplication
{
public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();
        Auth.SetUserCredentials("KEY", "KEY", "KEY",
            "KEY");
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        var user = User.GetAuthenticatedUser();

        //PROFILE
        profileImage.ImageLocation = user.ProfileImageUrlFullSize;

        nameLabel.Text = user.Name;
        usernameLabel.Text = "@" + user.ScreenName;
        followersLabel.Text = "Followers: " + user.FollowersCount;



    }
    //Tweeting with PICS
    private void tweetBtn_Click(object sender, EventArgs e)
    {
        if (tweetBox.Text != "")
        {
            if (imgUploadPath.Text != "")
            {
                byte[] file = File.ReadAllBytes(imgPreview.ImageLocation);
                Tweet.PublishTweetWithImage(tweetBox.Text, file);
                imgPreview.ImageLocation = "";
                imgUploadPath.Text = "";
                tweetBox.Clear();
                MessageBox.Show("Tweet posted!");
            }
            else
            {
                Tweet.PublishTweet(tweetBox.Text);
                MessageBox.Show("Tweet posted!");
                tweetBox.Clear();
            }

        }
        else
        {
            MessageBox.Show("Please enter text!");
            tweetBox.Clear();
        }
    }

    private void addImg_Click(object sender, EventArgs e)
    {
        OpenFileDialog ofd = new OpenFileDialog();
        ofd.ShowDialog();
        imgPreview.ImageLocation = ofd.FileName;
        imgUploadPath.Text = ofd.FileName;
    }

    private void dropImg_Click(object sender, EventArgs e)
    {
        imgPreview.ImageLocation = "";
        imgUploadPath.Text = "";

    }

    private void timelineBtn_Click(object sender, EventArgs e)
    {
        var user = User.GetAuthenticatedUser();
        var getTweets = Timeline.GetHomeTimeline(40);

        listView1.Clear();
        listView1.View = View.Details;
        listView1.GridLines = true;
        listView1.FullRowSelect = true;

        listView1.Columns.Add("Tweet", 570);
        listView1.Columns.Add("Created By", 130);
        listView1.Columns.Add("Create Time", 130);
        listView1.Columns.Add("Likes", 60);
        listView1.Columns.Add("Retweets", 70);
        int x = 0;
        foreach (var t in getTweets)
        {

            ListViewItem listItem = new ListViewItem(t.Text);
            listItem.SubItems.Add(t.CreatedBy.ScreenName.ToString());
            listItem.SubItems.Add(t.CreatedAt.ToString());
            listItem.SubItems.Add(t.FavoriteCount.ToString());
            listItem.SubItems.Add(t.RetweetCount.ToString());
            listView1.Items.Add(listItem);
            listView1.Items[x].Tag = t.Id;

        }
    }

    private void postsBtn_Click(object sender, EventArgs e)
    {
        var user = User.GetAuthenticatedUser();
        var getTweets = Timeline.GetUserTimeline(user, 40);

        listView1.Clear();
        listView1.View = View.Details;
        listView1.GridLines = true;
        listView1.FullRowSelect = true;

        listView1.Columns.Add("Tweet", 570);
        listView1.Columns.Add("Created By", 130);
        listView1.Columns.Add("Create Time", 130);
        listView1.Columns.Add("Likes", 60);
        listView1.Columns.Add("Retweets", 70);
        int x = 0;
        foreach (var t in getTweets)
        {

            ListViewItem listItem = new ListViewItem(t.Text);
            listItem.SubItems.Add(t.CreatedBy.ScreenName.ToString());
            listItem.SubItems.Add(t.CreatedAt.ToString());
            listItem.SubItems.Add(t.FavoriteCount.ToString());
            listItem.SubItems.Add(t.RetweetCount.ToString());
            listView1.Items.Add(listItem);
            listView1.Items[x].Tag = t.Id;

        }
    }

    private void retweetBtn_Click(object sender, EventArgs e)
    {
        var checkedItems = listView1.SelectedItems;
        long a = (long)listView1.SelectedItems[0].Tag;
        var user = User.GetAuthenticatedUser();

        var retweet = Tweet.PublishRetweet(a);
        MessageBox.Show("Retweet was successfull");
        listView1.Items.Clear();
    }
}

}

长时间中断,我不知道如何获得那个长推文 ID

这是完整的代码

4

1 回答 1

0

问题是我的 X 没有正确递增,因为它超出了 for 循环。

    int x = 0;

    foreach (var t in getTweets)
    {

        ListViewItem listItem = new ListViewItem(t.Text);
        listItem.SubItems.Add(t.CreatedBy.ScreenName.ToString());
        listItem.SubItems.Add(t.CreatedAt.ToString());
        listItem.SubItems.Add(t.FavoriteCount.ToString());
        listItem.SubItems.Add(t.RetweetCount.ToString());
        listView1.Items.Add(listItem);
        listView1.Items[x].Tag = t.Id;

        x = x +1;

    }
于 2018-03-21T18:56:52.280 回答