请问一下 
1.我在winfrom 里面 自动用循环生成了 若干个自定义控件 然后用代码给它做了 右键菜单 现在出现了一个问题 就是 我如何判断 我在哪个控件里面点的右键 或者 如何得到我所右击的控件里面的内容2 我的自定义控件 比较简单 一个图片框 两个 Label  
|-----|Label 1
|图片 |
|-----|Label 2
外形和上面那个差不多 可是 由于Label 2 中 内容比较多 所以我希望 Label 2 在达到特定长度 或者字数的时候 自动换行 请问该怎么做

解决方案 »

  1.   

    判断事件函数里的sender就好了
      

  2.   

    1、第一个问题,可以判断事件的sender参数。typeof sender来判断。2、可以设置Size,然后AutoSize=false,把label拉得高一点。
      

  3.   


    问题2 我现在 不能提前确定 Label 2 里面 会输入多少字 范围 大概是 1 - 200 的字数 如果直接拉label 会导致 在内容少的时候 很难看 是否可以根据其 字数的多或少 来自动调整其大小 
      

  4.   

    居然没看到你第二个问题取消掉autosize后设置AutoEliipsis=true,这样超出部分会省略为...如果想全部显示而不省略任何内容,你只能在指定字数后插入换行符也可以用textbox取代label,隐藏textbox的边框和设置背景色,能完全模拟出label效果。
      

  5.   

    调用同一事件
    Label l =sender as Label;
    Environment.NewLine
    label1.Height = rows * 20;//
      

  6.   

    这种情况下,如果大小是可变的,建议你将label的dock改成fill或者bottom,应该能解决
      

  7.   


    我的意思是 按照你刚刚的说法 在指定位置 插入 换行符 这样的话 控件大小变更以后 依旧会在同样的位置换行 
    label 的 dock 设置成fill 会莫名奇妙的覆盖掉我文本框 不知到是不是我其他地方 弄错了   自定义控件的 dock fill 自定义控件 放在 SplitContainer 里面 SplitContainer 面板的大小可以调节 调节以后 还是会在同样的地方换行。。话说 问题一的 那个 是否可以给我个实例 
      

  8.   

    dock是有覆盖作用的,所以要使用dock布局,记得用多层panel来分布好结构。因为没看到你的界面不好分析。
    并且用dock功能,就必须将autosize设成false及AutoEliipsis=true。
    第一个很简单,sender就是你点击时点到的那个控件,如果是你自己定义的控件:YourControl c = Sender as YourControl;
      

  9.   

    本帖最后由 lxcnn 于 2010-06-12 07:22:38 编辑
      

  10.   

    Sender 的判断要在鼠标点击事件的处理函数里
    大概是
    MouseClick_EventHandler(Object Sender,EventArgs e){
         ListUser lu = Sender as ListUser;
    }