我想在.NET Compact Framework中使用Form.ShowDialog()启动一个弹出窗体。我没有在.NET CF Form对象中看到任何像StartPosition这样的属性。
有人可以建议我如何在.NET CF 3.5中居中弹出窗口吗?
答案 0 :(得分:12)
您可以制作一个为您工作的扩展方法:
public static class FormExtensions
{
public static void CenterForm(this Form theForm)
{
theForm.Location = new Point(
Screen.PrimaryScreen.WorkingArea.Width / 2 - theForm.Width / 2,
Screen.PrimaryScreen.WorkingArea.Height / 2 - theForm.Height / 2);
}
}
你这样称呼它:
TheDialogForm f = new TheDialogForm();
f.CenterForm();
f.ShowDialog();
答案 1 :(得分:6)
如果您希望弹出窗体默认显示在屏幕中央,您可以在表单属性中设置它的起始位置,它应该听起来像'中心父级'。
这样的事情:
form1.StartPosition = FormStartPosition.CenterScreen;
答案 2 :(得分:6)
如果没有为Dialog定义Parent,请使用
login.StartPosition = FormStartPosition.CenterScreen;
login.ShowDialog();
其中login是Form
对象
或者如果您在现有的父Form
login.StartPosition = FormStartPosition.CenterParent;
login.ShowDialog();
如果您认为该属性始终与您相同,也可以在Form
的“属性”对话框中设置此属性。默认情况下,它应该设置为CenterParent,如果您在某些情况下在父Form
之前调用Form
(例如首次登录屏幕等),则无法使用它。
答案 3 :(得分:2)
我知道这是旧帖子,但我有同样的问题,我用这种方式解决了:
我创建了一个接口:
public interface FormExtensions
{
void CenterForm(Form forma);
}
我在我的课程上实现了界面后:
public partial class frmFirma : Form, FormExtensions
{
public frmFirma()
{
InitializeComponent();
}
public void CenterForm(Form forma)
{
forma.Location = new Point(
Screen.PrimaryScreen.WorkingArea.Width / 2 - forma.Width / 2,
Screen.PrimaryScreen.WorkingArea.Height / 2 - forma.Height / 2);
}
}
然后我可以创建一个实例:“frmFirma”调用方法“CenterForm”:
private void pictureBox1_DoubleClick(object sender, EventArgs e)
{
Formas.frmFirma firma = new Formas.frmFirma();
firma.CenterForm(firma);
firma.ShowDialog();
}
我希望这适用于某人。
答案 4 :(得分:1)
这是最简单的方法
Form f= new AmrDealForm();
f.CenterToScreen();
f.ShowDialog();
答案 5 :(得分:0)
在'frmDialog_Activated event
中设置表单的左侧和顶部属性Private Sub frmDialog_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
Me.Left = (frmMain.Width - Me.Width) / 2 ' AS Your Wish
Me.Top = (frmMain.Height - Me.Height) / 2 + 165 '' AS Your Wish
End Sub