如题,我有两种固定size的label,其中width是固定一样的,hight一个是显示三行,一个是显示一行,在这两种label中,如果给的string不能完全显示,则末尾截取之后用"...", 现在问题是,在lable的properties中,有一个属性"AutoEllipsis",如果设置为true,则控件自动接取,并在末尾添加"...",但是这个时候,如果将鼠标放上控件,它会出来一个tooltip,用户说不能接受,必须去掉.但是如果将这个属性设置为false,虽然没有了tooltip,同时也没了末尾的"...", 请大家指教一下,怎么处理? 或者有没有什么别的替代办法,达到效果. Thanks.

解决方案 »

  1.   

    主动将tooltip设置为""值行不行?
      

  2.   

    关键没有这个设置啊,label的tooltip是自动出现的,我没有任何设置,并且在label的properties panel中,也找不到对tooltip的设置. :)
      

  3.   

    是不是你自己设置了tooltip?label不会自动添加tooltip的哦
      

  4.   

    请问你用的是第三方控件吗?不是vs自带的吧devExpress?
      

  5.   

    to jiatong1981(末日之痕): 你可以试试, 将属性"AutoEllipsis"设置为true,然后把"AutoSize"设置为false, 给"Text"一个较长的字符串,然后你就能看见了. :)
      

  6.   

    那你直接将label.text = "请选择将要加载的报文..."不行吗?
      

  7.   

    窗体上放一个ToolTip控件,然后在Load的时候执行如下代码:
    toolTip1.SetToolTip(label1, null);
      

  8.   

    问题是我这里一切ok哦 和你需要的效果一样 我只想问问为何会自动出现tooltip
      

  9.   

    To zswang(伴水清清)(专家门诊清洁工) , 谢谢,我马上试一下,然后在回来给各位汇报.To jiatong1981(末日之痕), 哈哈,不会哦,我不可能逗大家玩儿塞,你按我说的试试没有,我用的就是vs(2005)自带控件, 请你按我的步骤再测试一下看,肯定有的,将属性"AutoEllipsis"设置为true,然后把"AutoSize"设置为false, 给"Text"一个较长的字符串.
    thx
      

  10.   

    To zswang(伴水清清)(专家门诊清洁工): sorry,我试了,还是不行哦,仍然在的.
      

  11.   

    //不放控件也可以,酱紫
    private void Form1_Load(object sender, EventArgs e)
    {
        ToolTip vToolTip = new ToolTip();
        vToolTip.SetToolTip(label1, "nonull"); // 得先设置为有值
        vToolTip.SetToolTip(label1, "");
    }
      

  12.   

    恩,谢谢zswang(伴水清清)(专家门诊清洁工),我试了你的第二种办法,的确可以,Thanks again.我再请教一个问题,
                SizeF strSize = new SizeF();
                Graphics graphics = this.CreateGraphics();
                Font useFont = new Font(/*MSG0*/"Arial", 9);
                strSize = graphics.MeasureString(newRecord.Summary,useFont,this.m_label.Width);
    明明都是只需要显示两行就够了,但是如果this.m_label.Width不一样,他计算出来的高度不一定一样,比如需要高36点几就可以显示两行,但是有时候通过ui,他显示出来也是两行,但是这个strSize.height却是3行的值,我查过msdn,他说这个函数会再字符串末尾加一个空格,所以计算不精确.但是我在96DPI下,就很正常,和我预期一样,但是120DPI下,问题就出来了,我现在就是要利用控件的自动换行功能,让它帮我换行,但是又要知道换行之后,这个控件实际应该多大的hight,有什么好办法吗? 诚心请教
      

  13.   

    //估计是这样,楼主自己调试看看吧TextFormatFlags flags = TextFormatFlags.WordBreak;
    strSize  = TextRenderer.MeasureText(graphics, 
        newRecord.Summary, useFont,
        new Size(this.m_label.Width, 50), flags);