如何使用WinForms设置控件的Z顺序
我正在写一个自定义的TextBox
,获得焦点后,改变其边框风格。
由于添加边框会导致控件与相邻的控件重叠,因此我暂时将文本框放到对话框的前面(使用textBox.BringToFront()
)。
但是,一旦编辑完成并且焦点丢失,我想将控制按照Z顺序发回原来的位置。
这是可能的(最好以一种简单的方式!)
调用父Controls
集合的GetChildIndex
和SetChildIndex
方法。
在VB中没有Z顺序,但可以使用GetChildIndex
和SetChildIndex
方法手动获取和设置其索引。
这里有一个如何使用它的例子。 您可能需要保留每个控件索引的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);