我有一个4个按钮列表,我在表单中显示,我有一个单词列表(没有设置字数限制)。表单开始时,单词列表中的第4个单词出现在按钮上(每个按钮一个单词)。我还有两个更小的按钮,用于滚动左侧或右侧较大按钮上的文本值(单词)。
下面,在scrollRightButton_Click方法中,单词成功向左移动(向右滚动),更改按钮列表中按钮的文本值。
但是,在scrollLeftButton_Click方法中,文本值不会向左滚动回到单词列表的开头。
我使用名为shiftCount的变量来提供索引的移位。这可能是也可能不是问题。我对使用数组索引的规则不太熟悉。我向控制台写入了shiftCount的值,因此你可以看到当点击右边时值上升,当点击左边时下降,但是当点击左边时,这个int值似乎没有变化。
我认为问题很简单,但我似乎无法成功google一个有效的解决方案。任何帮助将不胜感激。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Windows.Forms;
namespace ButtonScroll
{
public partial class MainUI : Form
{
const string CATSFILE = "categories.dat";
List<Button> buttonList = new List<Button>();
string listEntry;
List<string> cats = File.ReadAllLines(CATSFILE).ToList();
int shiftCount = 1;
public MainUI()
{
InitializeComponent();
// Add each button to the list
buttonList.Add(catButton1);
buttonList.Add(catButton2);
buttonList.Add(catButton3);
buttonList.Add(catButton4);
// Add category names to buttons
for (int i = 0; i < buttonList.Count; i++)
{
listEntry = cats[i];
buttonList[i].Text = listEntry;
}
}
private void scrollRightButton_Click(object sender, EventArgs e)
{
int threshhold = cats.Count - 3;
if (shiftCount < threshhold)
{
for (int i = 0; i < buttonList.Count; i++)
{
listEntry = cats[i + shiftCount];
buttonList[i].Text = listEntry;
}
shiftCount++;
Console.Write(shiftCount);
}
}
private void scrollLeftButton_Click(object sender, EventArgs e)
{
if (shiftCount >= 2)
{
shiftCount--;
for (int i = 0; i < buttonList.Count; i++)
{
listEntry = cats[i + shiftCount];
buttonList[i].Text = listEntry;
}
Console.Write(shiftCount);
}
}
}
}
示例categories.dat文件
Drinks
Breakfast
Lunch
Dinner
Dessert
Party
Brunch
答案 0 :(得分:1)
尝试从int shiftCount = 0;
开始
然后设置
private void scrollRightButton_Click(object sender, EventArgs e)
{
int threshhold = cats.Count - 3;
if (shiftCount < threshhold)
{
shiftCount++;
for (int i = 0; i < buttonList.Count; i++)
{
listEntry = cats[i + shiftCount];
buttonList[i].Text = listEntry;
}
Console.Write(shiftCount);
}
}
并在if (shiftCount >= 2)
方法
if (shiftCount >= 1)
更改为scrollLeftButton_Click