none
c# winform 下 lable 在属性设置窗口中 RRS feed

  • 问题

  •  

    c#  winform  下  lable 在属性设置窗口中  Anchor为Top  ,Right

    可是在窗体加载的过程中我给它赋值了;这个时候lable的Anchor为什么不起作用了呢?它又变回默认的Top ,Left了

    如果我把赋值的语句去之,它就正常了;这是为什么啊;其它的控件为什么不这样呢?


    大其心,可容天下之物; 虚其心,可受天下之善;

    2011年4月6日 3:07

答案

全部回复

  • Hi lfofiug,

    一般情况下,都是在窗体控件的属性窗口设置Anchor的值。如topleft

    你的代码是怎么写的?能贴上来吗?

    我用vs2008 vs2010 做了个测试,不管是在窗体设置为什么属性值,我只要在代码中设置了Anchor的值,Anchor的值就是我代码中设置的。而且会正常的运行。

    我的代码是这样的:

                设置一个值:

                            label1.Anchor = AnchorStyles.Right;

                设置多个值:

                                    label1.Anchor = (AnchorStyles.Top | AnchorStyles.Right);

    这里有个关于介绍Anchor 属性的网页:

                    Control.Anchor 属性 (System.Windows.Forms)


    Best Regards,
    Rocky Yue[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年4月7日 7:25
    版主
  • 我也做了个测试;VS2010

     

    一、我只在属性窗口中作设置lable的anchor与text的属性值;很正常;

    二、我在属性窗口中设置lable的anchor属性(不是默认属性),在代码中设置text属性;这里label的anchor的属性会回到默认属性;也就是说我要属性窗口中修改的属性不起作用了

     


    大其心,可容天下之物; 虚其心,可受天下之善;
    2011年4月7日 8:04
  •  

    我发现原因了,原来是我继承了一个接口造成的

     private void Easeland_MdiChildActivate(object sender, EventArgs e)
            {
                ToolStripManager.RevertMerge(mainTool);
                if (this.ActiveMdiChild != null)
                {
                    if ((ActiveMdiChild as ICiEase).CCiEase != null)
                    {
                        ToolStripManager.Merge((ActiveMdiChild as ICiEase).CCiEase, mainTool);
                    }
                    if (mainTool.Items.Count > 0)
                    {
                        mainTool.Visible = true;
                    }
                    else
                    {
                        mainTool.Visible = false;
                    }
                }
            }

    可是这个只是合并工具栏,怎么会对label的anchor有影响呢?


    大其心,可容天下之物; 虚其心,可受天下之善;
    2011年4月7日 8:30
  • 你这个程序是做什么的啊? 我怎么试都还原不了你的问题。怎么试都能成功。要是你能透露更多信息就好了
    Best Regards,
    Rocky Yue[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年4月7日 8:44
    版主
  • 定义一个接口:

     public interface ICiEase
        {
            ToolStrip CCiEase
            { get; }
        }

    建一个主窗体,和一个子窗体;子窗体继承如上的接口

     ToolStrip ICiEase.CCiEase
            {
                get { return toolStrip1; }
            }

    在主窗体加添加事件

    private void Form_MdiChildActivate(object sender, EventArgs e)
            {
                ToolStripManager.RevertMerge(mainTool);
                if (this.ActiveMdiChild != null)
                {
                    if ((ActiveMdiChild as ICiEase).CCiEase != null)
                    {
                        ToolStripManager.Merge((ActiveMdiChild as ICiEase).CCiEase, mainTool);
                    }
                    if (mainTool.Items.Count > 0)
                    {
                        mainTool.Visible = true;
                    }
                    else
                    {
                        mainTool.Visible = false;
                    }
                }
            }

    在子窗体中添加一个工具栏控件;OK了

    这个时候你添加label,设置 anchor: top  right

    在代码里设置text属性;你就会发现问题了


    大其心,可容天下之物; 虚其心,可受天下之善;
    2011年4月7日 10:18
  • 还是还原不了,如果你还没解决这个问题的话,就把你的项目给我吧,我看看是什么情况。

    我的E-mail: v-zyue@microsoft.com

     


    Best Regards,
    Rocky Yue[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年4月8日 2:38
    版主
  • 过几天,我精简一下给你;要是都给你了;老板不杀了我才怪呢
    大其心,可容天下之物; 虚其心,可受天下之善;
    2011年4月8日 8:28
  • 如果我是老板,先裁了你再说。
    Senior Support Engineer
    2011年4月21日 8:56
  • 应该在添加Lable到窗口之前设置。


    胡超
    2011年4月23日 9:49