解决一个吐血问题,在winform编程中修改控件的X,Y坐标值,并不能修改控件的位置

1.  解决一个吐血问题,在winform编程中修改控件的X,Y坐标值,并不能修改控件的位置

解:

问题描述,想实现一个控件排放顺序问题,也就是通过设置顺序的修改控件位置,一开始通过修改控件的X,Y值,怎么修改都不行,以为是对象交换时,实体没有赋值正确,通过打印输出,发现确实都正确了。已经将源控件和目标控件的坐标X,Y值呼唤了,还是不起作用,最后发现,修改控件坐标,只能通过location属性修改,重新给它赋值为Point数据。

代码如下:其中黄色代码为关键部分。

//父亲

                NodeSubNodesopNode = Nodes[tnode.TreeNode.Index - 1];

 

                inttgtnodeID;

                intsrcnodeID;

                intsrcDCPos;

                inttgtDCPos;

                intsrcY;

                inttgtY;

                NodeSubNodestempNodeSubNodes;

                boolsuccess = false;

                NodeSubNodestarget = Nodes[e.NewDisplayNO - 1];//opNode;//.SubNodes[e.NewDisplayNO- 1];

                NodeSubNodessrc = opNode;

 

 

                tgtnodeID =target.Node.NodeEntity.ID;

                srcnodeID = src.Node.NodeEntity.ID;

 

                success =itsCanvasBLL.SetNodeDisplayNO(tgtnodeID, srcnodeID);

                //交换实体

                if(success)

                {//以下四个变量,不能通过交换获取,必须在交换前记住!!!

                    srcDCPos =tnode.TreeNode.Index - 1;

                    tgtDCPos = e.NewDisplayNO - 1;

                    srcY =Nodes[srcDCPos].Node.TreeNode.Y;

                    tgtY =Nodes[tgtDCPos].Node.TreeNode.Y;

                    Console.WriteLine("交换前:");

                    Console.WriteLine(Nodes[tgtDCPos].Node.NodeEntity.NAME+"    "+

                                     Nodes[tgtDCPos].Node.NodeEntity.DISPLAYNO+"   "+

                                     Nodes[tgtDCPos].Node.TreeNode.Text+"   "+

                                      Nodes[tgtDCPos].Node.TreeNode.Index+"    "+

                                     Nodes[tgtDCPos].Node.TreeNode.Y);

                    Console.WriteLine(Nodes[srcDCPos].Node.NodeEntity.NAME+ "   " +

                                      Nodes[srcDCPos].Node.NodeEntity.DISPLAYNO+ "  " +

                                     Nodes[srcDCPos].Node.TreeNode.Text + "   " +

                                     Nodes[srcDCPos].Node.TreeNode.Index + "    " +

                                      Nodes[srcDCPos].Node.TreeNode.Y);

 

                    tempNodeSubNodes = target;

                    Nodes[tgtDCPos] = src;

                    Nodes[srcDCPos] =tempNodeSubNodes;

 

                   Nodes[srcDCPos].Node.NodeEntity.DISPLAYNO = srcDCPos + 1;//tgtDCPos + 1;//Nodes[tgtDCPos].Node.NodeEntity.DISPLAYNO;

                   Nodes[srcDCPos].Node.TreeNode.Index = srcDCPos + 1;//tgtDCPos + 1;//Nodes[tgtDCPos].Node.TreeNode.Index;

                    Nodes[srcDCPos].Node.TreeNode.Y = srcY; //tgtY;// Nodes[tgtDCPos].Node.TreeNode.Y;

                   Nodes[srcDCPos].Node.TreeNode.Location =newPoint(Nodes[srcDCPos].Node.TreeNode.X,srcY);

 

                   Nodes[tgtDCPos].Node.NodeEntity.DISPLAYNO = tgtDCPos + 1;//srcDCPos + 1;//srcY;

                    Nodes[tgtDCPos].Node.TreeNode.Index =tgtDCPos + 1;//srcDCPos + 1;//srcY;

                   Nodes[tgtDCPos].Node.TreeNode.Y = tgtY;//srcY;

                   Nodes[tgtDCPos].Node.TreeNode.Location =newPoint(Nodes[tgtDCPos].Node.TreeNode.X,tgtY);

                    Console.WriteLine("交换后:");

                    Console.WriteLine(Nodes[tgtDCPos].Node.NodeEntity.NAME+ "   " +

                                     Nodes[tgtDCPos].Node.NodeEntity.DISPLAYNO + "   " +

                                     Nodes[tgtDCPos].Node.TreeNode.Text + "   " +

                                     Nodes[tgtDCPos].Node.TreeNode.Index + "    " +

                                     Nodes[tgtDCPos].Node.TreeNode.Y);

                    Console.WriteLine(Nodes[srcDCPos].Node.NodeEntity.NAME+ "   " +

                                     Nodes[srcDCPos].Node.NodeEntity.DISPLAYNO + "   " +

                                     Nodes[srcDCPos].Node.TreeNode.Text + "   " +

                                      Nodes[srcDCPos].Node.TreeNode.Index+ "   " +

                                     Nodes[srcDCPos].Node.TreeNode.Y);

 

                    //修改显示名称

 

 

                    //修改纵坐标

 

 

                    //刷新子节点父亲序号,

                    Nodes[tgtDCPos].RefreshChildrenParentIndex();

                   Nodes[tgtDCPos].RefreshChildrenY();

                   Nodes[srcDCPos].RefreshChildrenParentIndex();

                   Nodes[srcDCPos].RefreshChildrenY();

                }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵海燕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值