更新时间:2023-12-06 16:14:58
如果我做的ShowDialog(),并传递 父母它的工作原理......但我真的不 要显示它作为一个对话框。
这是正确的,因为ShowDialog的将设置frm.Parent == nvShowDeals.Parent
由于使用.Show(),然后frm.Parent == NULL从而FormStartPosition.CenterParent被忽略。
因此,要完成这个功能我会做如下修改:
公共DealsForm()
{
的InitializeComponent();
//this.StartPosition = FormStartPosition.CenterParent;
}
// DealsForm_Load事件
私人无效DealsForm_Load(对象发件人,EventArgs的)
{
this.Location = this.Owner.Location; //新的code
}
在这里,我将做如下修改:
私人无效nvShowDeals_LinkClicked(对象发件人,LinkLabelLinkClickedEventArgs E)
{
DealsForm FRM =新DealsForm();
frm.DataSource = this.Deals;
frm.StartPosition = FormStartPosition.Manual; //新的code
frm.Show(本);
}
Is there a way to set the StartPosition of a Windows Forms form using code? It seems whatever I try results in the StartPostion being the default.
Here is what I am doing in the form to display:
public DealsForm()
{
InitializeComponent();
this.StartPosition = FormStartPosition.CenterParent;
}
Here is what I am doing to display the form:
private void nvShowDeals_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
DealsForm frm = new DealsForm();
frm.DataSource = this.Deals;
frm.Show(this);
}
I have tried putting the following in each of the above methods, to no avail:
this.StartPosition = FormStartPosition.CenterParent;
If I set it via the Property Editor ... it works perfectly, but I would really like to do it via code.
Should be a no-brainer ... but for the life of me I can't seem to figure it out ... maybe I need more caffeine.
If I do a ShowDialog()
and pass the parent it works ... but I really don't want to show it as a Dialog.
If I do a ShowDialog() and pass the parent it works ... but I really don't want to show it as a Dialog.
That is correct since ShowDialog would set frm.Parent == nvShowDeals.Parent
Since you are using .Show() then frm.Parent == null thus FormStartPosition.CenterParent is ignored.
So to accomplish this function I would make the following changes:
public DealsForm()
{
InitializeComponent();
//this.StartPosition = FormStartPosition.CenterParent;
}
//DealsForm_Load Event
private void DealsForm_Load(object sender, EventArgs e)
{
this.Location = this.Owner.Location; //NEW CODE
}
And Here I would make the following changes:
private void nvShowDeals_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
DealsForm frm = new DealsForm();
frm.DataSource = this.Deals;
frm.StartPosition = FormStartPosition.Manual; //NEW CODE
frm.Show(this);
}