如何使用showdialog(.NET Compact Framework)使表单居中

时间:2010-01-16 07:48:37

标签: c# .net compact-framework

我想在.NET Compact Framework中使用Form.ShowDialog()启动一个弹出窗体。我没有在.NET CF Form对象中看到任何像StartPosition这样的属性。

有人可以建议我如何在.NET CF 3.5中居中弹出窗口吗?

6 个答案:

答案 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