我创建了功能区表单(XtraMain),并将IsMdiContainer属性设置为true,我还添加了documentManager控件,将MdiParent设置为XtraMain,我添加了此代码以打开子表单
public void ViewChildForm(XtraForm _form)
{
if (!IsFormActived(_form))
{
_form.MdiParent = this;
_form.Show();
}
}
private bool IsFormActived(XtraForm form)
{
bool IsOpenend = false;
if (MdiChildren.Count() > 0)
{
foreach (var item in MdiChildren)
{
if (form.Name == item.Name)
{
tabbedView1.ActivateDocument(item);
IsOpenend = true;
}
}
}
return IsOpenend;
}
我在单击按钮时使用此代码打开子窗体
private void bbtnEmployee_ItemClick(object sender, ItemClickEventArgs e)
{
FrmEmployee frme = new FrmEmployee();
frme.Name = "FrmEmployee";
ViewChildForm(frme);
}
当表单包含LayoutControl时,我的问题就开始了,例如,我有单击该按钮时打开的代码
private void btnBonLivraison_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
LayoutControl lc = new LayoutControl();
lc.Dock = DockStyle.Top;
LookUpEdit OrderNumber = new LookUpEdit();
OrderNumber.Properties.TextEditStyle = TextEditStyles.DisableTextEditor;
OrderNumber.Properties.DataSource = shippProdu.GetOrderNumber();
OrderNumber.Properties.DisplayMember = "N° Bon de livraison";
OrderNumber.Properties.ValueMember = "N° Bon de livraison";
lc.AddItem(Resources.selectOrderNumber, OrderNumber).TextVisible = true;
lc.Height = 70;
this.Controls.Add(lc);
this.Dock = DockStyle.Top;
lc.BestFit();
第二次我单击按钮tabHeader消失,这是什么原因引起的?如何解决它。在我使用documentManager之前,我使用了XtraTabControl,如果我单击一个按钮来打开LayoutControl,然后尝试打开另一个表单即使已经打开了第二个表单,焦点仍然保留在第一个表单中,如果我要进入第二个表单,我必须首先单击第一个表单的标签,然后单击第二个表单的标签,预先感谢。 这是我的主要形式
答案 0 :(得分:1)
如果DocumentManager驻留在与您添加LayoutControl相同的表单内,则这是预期的行为。 DocumentManager将特殊文档的宿主放置在主窗体上,并将其Dock属性设置为Fill。这就是为什么将LayoutControl放置在同一窗体上并将其停靠到窗体边缘是不正确的。
如果需要在同一窗体上同时显示选项卡式文档和LayoutControl,请不要使用MDI模式。考虑使用单独的UserControl。将您的DocumentManager放在此处。然后,将此UserControl放在您的窗体上。请注意,在这种情况下,由于LayoutControl应该填充所有可用区域,因此UserControl的Dock属性应该设置为Top或Bottom。