C# 带有拖放功能的DataGridView--基于用户活动更新列表

C# 带有拖放功能的DataGridView--基于用户活动更新列表,c#,datagridview,drag-and-drop,C#,Datagridview,Drag And Drop,一个爱好者试图完成我的第一个真正的应用程序,所以提前谢谢你,如果这是一个无趣的问题,我道歉 我有一个启用拖放功能的datagridview,其中填充了来自团队类的数据,还有一个字典,它根据索引为列表中的项目分配一个值。我还没有实现绑定,因为我还没有让它用于拖放行重新排序 teamList = new List<Team>(){ new Team("Redskins","WAS", "Washington"), new Team("Cowboys", "DAL", "D

一个爱好者试图完成我的第一个真正的应用程序,所以提前谢谢你,如果这是一个无趣的问题,我道歉

我有一个启用拖放功能的datagridview,其中填充了来自团队类的数据,还有一个字典,它根据索引为列表中的项目分配一个值。我还没有实现绑定,因为我还没有让它用于拖放行重新排序

teamList = new List<Team>(){
    new Team("Redskins","WAS", "Washington"),
    new Team("Cowboys", "DAL", "Dallas"),
    new Team("Eagles", "PHI", "Philadelphia"),
    new Team("Giants", "NYG", "New York"),
    new Team("Packers", "GB", "Green Bay")
 };

class Team
{
    public string Mascot { get; private set; }
    public string Key { get; private set; }
    public string City { get; private set; }
}

Dictionary<int, int> powerValues = new Dictionary<int, int>(){
    {1, 113},
    {2, 110},
    {3, 109},
    {4, 108},
    {5, 107}
};

private void printValues()
{   // add Team to DGV wiht PowerRank as index+1 and PowerValue based on Dictionary
    int i = 0;
    foreach (Team team in TeamList)
    {                
        // add all data to a datagrid view
        dataGridView1.Rows.Add(i+1, team.Mascot,powerValues[teamList.IndexOf(team) + 1]); //set the rank
        i++;
    }
}
teamList=新列表(){
新团队(“红人队”、“WAS队”、“华盛顿队”),
新团队(“牛仔”、“达尔”、“达拉斯”),
新团队(“老鹰队”、“费城队”、“费城队”),
新团队(“巨人”、“纽约”、“纽约”),
新团队(“包装工”、“GB”、“绿湾”)
};
班队
{
公共字符串吉祥物{get;private set;}
公共字符串密钥{get;private set;}
公共字符串City{get;private set;}
}
字典powerValues=新字典(){
{1, 113},
{2, 110},
{3, 109},
{4, 108},
{5, 107}
};
私有void printValues()
{//将团队添加到DGV,其中PowerRank作为索引+1,PowerValue基于字典
int i=0;
foreach(团队列表中的团队)
{                
//将所有数据添加到datagrid视图
dataGridView1.Rows.Add(i+1,team.Mascot,powerValues[teamList.IndexOf(team)+1]);//设置排名
i++;
}
}
一旦我达到这一点,我将尝试做两件事:

1) Update List<Team> based on drag and drop change
2) Re-assign PowerRank and PowerValue based on new index of Team
1)基于拖放更改更新列表
2) 根据团队的新索引重新分配PowerRank和PowerValue
我尝试了几件事,但都没有用——有什么正确的想法或观点吗?

我通过一种新的方法绕过了#2,但这并不是我所希望的优雅的解决方案,因此有待改进。还在做#2

private void rebuildishranking()
{
对于(int i=0;i
有帮助吗?我用那篇文章来帮助实现拖放,但我仍然无法让它与绑定列表一起工作——不支持重新排序。它还引用了重新分配“Priority”属性,但我看不到任何关于如何实际执行的细节。
    private void reEstablishRanking()
    {
        for (int i = 0; i < defaultPR.TeamList.Count; i++)
        {
            dataGridView1.Rows[i].Cells["PowerRank"].Value = (i + 1);
            dataGridView1.Rows[i].Cells["PowerValue"].Value = defaultPR.PRScores[i + 1];
        }
    }