0

アプリケーション、TextBlockと2つのボタンがあり、ボタンをクリックするとテキストがTextBlockに表示されます(Q.txtのテキストは100行を超えて1行ずつ読み取られます)。

public class QWork
{
   public static int counter = 0;

   public static string GetQ()
    {
        var qFile = new List<string>();

        string pathFile = "Q.txt";
        Uri uri = new Uri(pathFile, UriKind.Relative);
        StreamResourceInfo sri = Application.GetResourceStream(uri);
        using (StreamReader sr = new StreamReader(sri.Stream))
        {
            string line = "";
            while (line != null)
            {
                line = sr.ReadLine();
                if (line != null)
                    qFile.Add(line);  // Add to list
            }
            return qFile[counter];
        }
    }
}

ボタンイベントハンドラー:

    private void RightButton_Click(object sender, RoutedEventArgs e)//Next text
    {
        qTextBlock.Text = QWork.GetQ();
        QWork.counter++;
    }

    private void LeftButton_Click(object sender, RoutedEventArgs e)//Previous text
    {
        qTextBlock.Text = QWork.GetQ();
        QWork.counter --;
    }

問題:LeftButtonをクリックすると、最初の行に次の行が表示されますが、前の行の後にのみ表示されます。教えてください、どうすれば修正できますか。

ありがとう!

4

1 に答える 1

2

多分これはあなたを助けることができます

int counter = 0;
List<string> qs = null;

private void LoadQs()
{
    qs = new List<string>();
    qs.Add("aaa");
    qs.Add("bbb");
    qs.Add("ccc");
}

private string GetQ(bool increase)
{
    if (increase)
        counter++;
    else
        counter--;

    if (counter >= qs.Count)
        counter = 0;
    else if (counter <= 0)
        counter = qs.Count;

    string q = qs[counter];

    return q;
}
于 2012-06-29T06:50:48.823 に答える