C# 交换两个按钮控件

C# 交换两个按钮控件,c#,winforms,user-controls,C#,Winforms,User Controls,想办法交换两个按钮有点困难。让我们深入了解并向您展示代码: int mCatID; int mTempPos; mCatID = mCatButList[mValidCatNumber - 1].mCatID - 1; if (mTempOldPos.ToString() != txtCatPos.Text) // Attempt to

想办法交换两个按钮有点困难。让我们深入了解并向您展示代码:

            int mCatID;
            int mTempPos;                

            mCatID = mCatButList[mValidCatNumber - 1].mCatID - 1;               

            if (mTempOldPos.ToString() != txtCatPos.Text) // Attempt to change position
            {
                foreach (DataRow row in mIMenu.mCategoryList.Rows) // Check if space is taken
                {
                    if (row[2].ToString() == txtCatPos.Text) // Space is taken
                    {
                         mCatOldIDX = mTempOldID - 2;
                        mTempDesc = mIMenu.mCategoryList.Rows[mCatOldIDX][1].ToString();

                        mIMenu.mCategoryList.Rows[mCatOldIDX][1] = row[1].ToString(); // desc
                        mIMenu.mCategoryList.Rows[mCatOldIDX][2] = (int)row[2];        // pos                     

                        row[1] = mTempDesc;
                        row[2] = mTempOldPos; //RP change new location to old   

                        mCatOldIDX = 0;

                        mIMenu.mCategoryList.AcceptChanges();

                        break;
                    }
                }
               // mIMenu.mCategoryList.DefaultView.Sort = "POS asc";

                CreateCatButList();
                DisplayMenuCategories(); 

[编辑]我已经修改了代码,现在它似乎确实交换了按钮控件的位置一次。但是,如果我交换两个控件,然后用另一个按钮交换其中一个按钮,它似乎会弄乱所有其他按钮上的所有位置值!?这真的开始困扰我了。。为什么它第一次起作用,然后对其他人不起作用?我试着接受改变,但仍然没有效果。。这一切都与数据表
mIMenu.mCategoryList
中的值有关,其中列
[1]
是说明,
[2]
是位置。令人沮丧的是,为什么一旦更改了值,它就会工作,而一旦状态更改为“已修改”,它就会决定恢复到旧的位置值?

如果您想交换UI上的2个按钮,为什么不只修改按钮的位置?无需更改链接到按钮的事件,并且需要使用所有“pos”来设置按钮的顺序,就像在其他地方使用的一样。这是我试图编码的后端,位置是数据库中的一个值[2]=POS:-/为什么需要交换位置两个按钮?如果你能提供更多关于你要做什么的细节,可能会有更好的替代方案。如果你能想象一个2列8行长的网格(所以它是一组垂直的按钮)。当用户单击其中一个按钮时,这些选项将显示在这些按钮右侧的另一个网格中,这就是我将其全部链接到“mIMenu.mCategoryList”数据表的原因。我想要的只是当用户更改文本字段中该按钮的位置以移动到新位置时。。如果这个位置被(另一个按钮)占据,就换掉按钮。。控制位置的值是
mIMenu.mCategoryList.Rows[RowIDX][2]