winforms - 在 Windows 窗体. NET 中,始终对另一个控件保留一个控制

  显示原文与译文双语对照的内容
0 0

假设有两个重叠的控件:

  • 控件
  • 控制B

我想在所有情况下控制控制B 。

控件B的z-order 可以通过调用 BringToFront() 或者通过调用 Parent.SetChildIndex(ControlB, 0) 在父节点中设置它的索引来动态更改。 所以每当发生这种情况时,我希望控制A 出现在ControlB前面。

我正在寻找一些事件发生在 z-order 改变时,我可以以带来控制A 到前面。 是否有这样的事件? 或者有什么方法可以做到这一点?

时间:原作者:5个回答

0 0

别在油漆事件上of垃圾。 特别是,当控件关闭时,WM_PAINT不会发送,因这里代码期望它们的操作不会发生。

更控制的方法是当控件的位置改变时处理。

更改控件以从这里( 将基类更改为所使用的任何内容) 派生并设置该字段:

firstControl.ChildControl = secondControl;
public class AlwaysParentingControl : TextBox
{
 private const Int32 WM_WINDOWPOSCHANGED = 0x47;
 public Control ChildControl { get; set; }
 protected override void WndProc(ref Message m)
 {
 if( m.Msg == WM_WINDOWPOSCHANGED && ChildControl!= null)
 ChildControl.BringToFront();
 base.WndProc(ref m);
 }
}
原作者:
...