如何使用WinForms设置控件的Z顺序

我正在写一个自定义的TextBox ,获得焦点后,改变其边框风格。

由于添加边框会导致控件与相邻的控件重叠,因此我暂时将文本框放到对话框的前面(使用textBox.BringToFront() )。

但是,一旦编辑完成并且焦点丢失,我想将控制按照Z顺序发回原来的位置。

这是可能的(最好以一种简单的方式!)

调用父Controls集合的GetChildIndexSetChildIndex方法。

在VB中没有Z顺序,但可以使用GetChildIndexSetChildIndex方法手动获取和设置其索引。

这里有一个如何使用它的例子。 您可能需要保留每个控件索引的logging,以便在完成时设置它。

像这样的东西可能是你之后的东西:

 // Get the controls index int zIndex = parentControl.Controls.GetChildIndex(textBox); // Bring it to the front textBox.BringToFront(); // Do something... // Then send it back again parentControl.Controls.SetChildIndex(textBox, zIndex);