C# 当列表框中的最后一项下移时,如何使messagebox显示?

C# 当列表框中的最后一项下移时,如何使messagebox显示?,c#,listbox,C#,Listbox,当用户试图向下移动列表框中的最后一项时,我需要一个messagebox来显示该项已经位于底部。该应用程序允许用户在列表中输入更多项目,因此在达到某个数字时显示消息(如顶部)将不起作用,以下是我当前的代码: private void MoveUpButton() { if (selectedPlayersListBox.SelectedItem == null || selectedPlayersListBox.SelectedIndex < 0)

当用户试图向下移动列表框中的最后一项时,我需要一个messagebox来显示该项已经位于底部。该应用程序允许用户在列表中输入更多项目,因此在达到某个数字时显示消息(如顶部)将不起作用,以下是我当前的代码:

    private void MoveUpButton()
    {
        if (selectedPlayersListBox.SelectedItem == null || selectedPlayersListBox.SelectedIndex < 0)
            MessageBox.Show("A player under \"Selected Players\" must be selected");

        if (selectedPlayersListBox.SelectedIndex == 0)
            MessageBox.Show("Player is already at the top of the list.");

        else
        {
            MoveItem(-1);
        }
    }

    private void MoveDownButton()
    {
        if (selectedPlayersListBox.SelectedItem == null || selectedPlayersListBox.SelectedIndex < 0)
            MessageBox.Show("A player under \"Selected Players\" must be selected");

        else
        {
            MoveItem(1);
        }
    }

    private void MoveItem(int direction)
    {
        int newIndex = selectedPlayersListBox.SelectedIndex + direction;

        if (newIndex < 0 || newIndex >= selectedPlayersListBox.Items.Count)
            return;

        object selected = selectedPlayersListBox.SelectedItem;

        selectedPlayersListBox.Items.Remove(selected);
        selectedPlayersListBox.Items.Insert(newIndex, selected);
        selectedPlayersListBox.SetSelected(newIndex, true);
    }
private void MoveUpButton()
{
如果(SelectedPlayerListBox.SelectedItem==null | | SelectedPlayerListBox.SelectedIndex<0)
MessageBox.Show(“必须选择“所选玩家”下的玩家”);
如果(SelectedPlayerListBox.SelectedIndex==0)
Show(“玩家已经在列表的顶端了。”);
其他的
{
项目(-1);
}
}
私有void MoveDownButton()
{
如果(SelectedPlayerListBox.SelectedItem==null | | SelectedPlayerListBox.SelectedIndex<0)
MessageBox.Show(“必须选择“所选玩家”下的玩家”);
其他的
{
第(1)项;
}
}
私有项目(内部方向)
{
int newIndex=selectedPlayersListBox.SelectedIndex+方向;
如果(newIndex<0 | | newIndex>=SelectedPlayerListBox.Items.Count)
返回;
所选对象=SelectedPlayerListBox.SelectedItem;
SelectedPlayerListBox.Items.Remove(已选择);
SelectedPlayerListBox.Items.Insert(新建索引,选中);
SelectedPlayerListBox.SetSelected(新建索引,true);
}
如上所述,MoveUpButton工作正常,但MoveDownButton给我带来了麻烦


感谢您提供的任何帮助。

它看起来就像MoveUp按钮,只是您需要检查所选的索引是否等于Count-1:

    private void MoveDownButton()
    {
        if (selectedPlayersListBox.SelectedItem == null || selectedPlayersListBox.SelectedIndex < 0)
            MessageBox.Show("A player under \"Selected Players\" must be selected");
        else if (selectedPlayersListBox.SelectedIndex == selectedPlayersListBox.Items.Count - 1)
            MessageBox.Show("Player is already at the bottom of the list.");
        else
        {
            MoveItem(1);
        }
    }
private void MoveDownButton()
{
如果(SelectedPlayerListBox.SelectedItem==null | | SelectedPlayerListBox.SelectedIndex<0)
MessageBox.Show(“必须选择“所选玩家”下的玩家”);
else if(SelectedPlayerListBox.SelectedIndex==SelectedPlayerListBox.Items.Count-1)
Show(“玩家已经在列表的底部了。”);
其他的
{
第(1)项;
}
}

上下移动的另一种方式

公共部分类Form1:Form{

public Form1() {
    InitializeComponent();
    btnMoveUp.Enabled = false;
    btnMoveDown.Enabled = false;
}

private void lstPlayers_SelectedIndexChanged(object sender, EventArgs e) {          
    btnMoveUp.Enabled = (lstPlayers.SelectedIndex != 0);
    btnMoveDown.Enabled = (lstPlayers.SelectedIndex != lstPlayers.Items.Count - 1);
}

    private void btnMoveUp_Click(object sender, EventArgs e) {
        var index = lstPlayers.SelectedIndex;
        var item = lstPlayers.SelectedItem;
        lstPlayers.Items.Insert(index - 1, item);
        lstPlayers.Items.RemoveAt(index + 1);
        lstPlayers.SetSelected(index - 1, true);
    }

    private void btnMoveDown_Click(object sender, EventArgs e) {
        var index = lstPlayers.SelectedIndex;
        var item = lstPlayers.SelectedItem;
        lstPlayers.Items.Insert(index + 2, item);
        lstPlayers.Items.RemoveAt(index);
        lstPlayers.SetSelected(index + 1, true);
    }       
}

可能是《谢谢你》的翻版。我不知道为什么我想不起来,可能意味着我应该休息一下。