2017-02-09 4 views
2

私はこれから1つのフォームを開き、別のフォームを開き、親フォームの中央に表示します。そこで私はこのコードを使用しました:別のフォームの中央に小さいフォームを作成する

using (var form = new Login()) 
{ 
    var result = form.ShowDialog(this); 
    if (result == DialogResult.OK) 
    { 
     MessageBox.Show(form.getClientID); 
    } 
} 

私はStartPositionをCenterParentに設定しました。私はそれがうまくいけばそれは動作しますが、問題はここの "this"です:var result = form.ShowDialog(this);しかし、私はそれがどこからchildformになるべきかを伝えるべきか分かりません。 ログインフォームでの私のコードは次のようになります。

public string getClientID { get; set; } 

public Login() 
{ 
    InitializeComponent(); 
} 

private void loginButton_Click(object sender, EventArgs e) 
{ 
    this.getClientID = this.clientID.Text; 
    this.DialogResult = DialogResult.OK; 
    this.Close(); 
} 

すべてのヘルプは大歓迎です!

EDIT: これは私がvar result = form.ShowDialog(this)に乗るエラーです:

An Exception error of type "System.ArgumentException" has occurred in System.Windows.Forms.dll. Additional Information: A circular control reference has been issued. A control can not own itself or be superordinate.

+4

不明。それは動作するかどうか?そしてそれがうまくいくなら問題は何ですか? – Steve

+0

@Steveそれまでボタンがクリックされていますが、このエラーが表示されます: "System.Windows.Forms.dllで" System.ArgumentException "という型の例外エラーが発生しました 追加情報:コントロールが自分自身を所有することはできませんし、上級者でもありません。 "(ドイツ語から英語に翻訳されている)、このエラーはポップアップします。" var result = form.ShowDialog(this); " –

答えて

1

修正は実際には非常に簡単で、thisを削除し、使用して文の開始時にこの行を追加します。

form.StartPosition = FormStartPosition.CenterParent; 
+0

あなたは今はクラッシュすることなく動作しますが、中央にはありません。左上に表示されます。私はそれを私のメインフォームのInitializeComponent()の後に呼び出します。これについての修正もありますか? :) –

+0

メインフォームまたはウィンドウの左上? – EpicKip

+0

私はメインフォームから開いたら、真ん中に完全に開きます。また、いつ呼びたいと思いますか?それがロードされるとき?ユーザーがボタンを押したとき? – EpicKip

関連する問題