2011-07-07 22 views
-2

私は入力を取るPopUpウィンドウを実装しています。それにはOKボタン(送信ボタン)とキャンセルボタンが含まれています.OKボタンを押すと入力値が取り込まれます。なぜ私はあなたにその理由を説明します。ここにポップアップフォームのコードがあります。POPupウィンドウのキャンセルボタンを設定してください!

public partial class PopUp : Form { 

    public PopUp() 
    { 
     InitializeComponent(); 
    } 

    private void OK_Click(object sender, EventArgs e) 
    { 
     ((Scrollbar.Form1)this.Owner).OK_Click(textBox1.Text,textBox2.Text,textBox3.Text,textBox4.Text); 
     this.Close(); 
    } 

    private void Cancel_Click(object sender, EventArgs e) 
    { 

     ((Scrollbar.Form1)this.Owner).Cancel_Click(); 
     this.Close(); 
    } 
} 

と私のメインフォームのOK_clickとcancel_click関数。 MouseUpイベントは、私は、私はキャンセルボタンを押したときにも、一つ「」ずつかかわらず、1でOKボタンを「」増分の値を押すたびに2回だけを発生する必要があり

public void OK_Click(string tbox1, string tbox2, string tbox3, string tbox4) 
{ 
    g[b] = Int32.Parse(tbox1); 
    h[b] = Int32.Parse(tbox2); 
    i[b] = Int32.Parse(tbox3); 
    j[b] = Int32.Parse(tbox4); 
    b++; 
} 

public void Cancel_Click() 
{ 

} 


Form ChildForm = null; 
private void pictureBox1_MouseUp(object sender, MouseEventArgs e) 
{ 
    if (a < 2) 
    { 
     ChildForm = new PopUp(); 
     ChildForm.ShowDialog(this); 
     l[a] = e.X; 
     m[a] = e.Y; 
     a++; 
    } 

} 

その場合、私は値を1回だけ入力することができます。私は 'a'のキャンセルボタンの値を押すと、1つ減少する必要があります。アドバンスのキャンセルボタンをクリックした後でも、マウスアップイベントを2回だけ実装する方法を提案してください。

+0

あなたの書式は、私は同意 –

+0

雅悪いです、もう一度質問を読んでください!私はいくつかの変更を行った – raghu

+1

あなたの変更は明らかではありません。あなたのフォーマットは悪いです。 –

答えて

0

あなたのポップアップウィンドウは、Formから派生したものです。

protected override void OnClosing(CancelEventArgs e) 
    { 
     // some decisional logic here 
     if(..condition...) 
      e.Cancel =true; //this will prevent the form from closing 
     base.OnClosing(e); 
    } 

をダブルイベントやsomethignを発明しないでください:最も単純初めてをクリックして、私は右のあなたの問題を理解していれば、何か他のものを作るためにCANCELに閉じてからフォームを防ぐsolutionto、このように、フォームのOnClosingイベントを上書きすることです可能な限りそのように、これが混乱の最初のパスであるように。

使用するフレームワークの「自然な」可能性を使用します。私はこれをサポートするためにコードを少し並べ替える必要があると思います。

これがあなたが求めていたものでない場合は、よりよく説明してください。よろしくです。 よろしくお願いします。

+0

申し訳ありませんが、完全な意味を変更しました。質問をもう一度確認してください。 – raghu

+0

「キャンセルボタンをクリックしても2回だけマウスアップイベントを実装する方法」と私はまだ解決策があると思います。 OnClosingオーバーライドでそのようなものを処理します。 – Tigran

1

ポップアップダイアログをすべて間違って実装しています。ベースFormオブジェクトはDialogResultプロパティを持ちます。 MainFormでロジックを決定するために、それを使用する必要があります。

まず、MyPopup:

// Set properties on your buttons either in VS Designer or programmatically 
this.button1.DialogResult = System.Windows.Forms.DialogResult.OK; 
// other properties 

this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel; 
// other properties 

次に、あなたのMainFormに:

// Display popup expecting a DialogResult.OK or DialogResult.Cancel 
void ShowPopup () 
{ 
    MyPopup popup = new MyPopup (); 

    if (popup.ShowDialog() == DialogResult.OK) 
    { 
     // process popup textbox text values 
    } 
    else 
    { 
     // process popup cancel action 
    } 
} 
関連する問題