2012-09-16 25 views
9
private void button2_Click(object sender, EventArgs e) 
     { 
      ChangeLink cl = new ChangeLink(); 
      // Show testDialog as a modal dialog and determine if DialogResult = OK. 
      if (cl.ShowDialog() == DialogResult.OK) 
      { 
       // Read the contents of testDialog's TextBox. 
       // cl.AcceptButton.DialogResult = DialogResult.OK; 
       this.label4.Text = cl.textBox1Text; 
      } 
      else 
      { 
       this.label4.Text = "Cancelled"; 
      } 
      cl.Dispose(); 

     } 

Quando faccio clic sul pulsante vedo il nuovo Form e il textBox1 nel nuovo Form e posso digitare nel testoBox1 qualcosa, ma non vedo da nessuna parte i pulsanti OK o CANCEL. Dovrei aggiungerli manualmente nel nuovo designer di moduli? E come usarli allora?Come si usa Form.ShowDialog?

Questo è il codice nel mio nuovo modulo quello che volevo fare è digitare qualcosa nel nuovo modulo TextBox1 e passare il testo nel textBox1 a Form1 label4.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace GatherLinks 
{ 
    public partial class ChangeLink : Form 
    { 
     public ChangeLink() 
     { 
      InitializeComponent(); 


     } 

     public string textBox1Text 
     { 
      get 
      { 
       return textBox1Text = textBox1.Text; 
      } 
      set 
      { 

      } 
     } 
    } 
} 

Quindi dove sono i pulsanti OK e CANCEL del Form.ShowDialog?

risposta

20

È necessario aggiungerli da soli, è possibile aggiungere i pulsanti al numero Form e impostare la proprietà DialogResult. Ciò restituirà DialogResult e chiuderà il modulo senza dover collegare alcun codice. Ecco un esempio che utilizza un metodo per restituire il valore di TextBox su Form2 (Ci sono due pulsanti su Form2 con i loro dialogResults impostati su Cancel e Ok rispettosamente).

Form1

public partial class Form1 : Form 
{ 
    Form2 frm2; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     frm2 = new Form2(); 
     DialogResult dr = frm2.ShowDialog(this); 
     if (dr == DialogResult.Cancel) 
     { 
      frm2.Close(); 
     } 
     else if (dr == DialogResult.OK) 
     { 
      textBox1.Text = frm2.getText(); 
      frm2.Close(); 
     } 
    } 
} 

Form2

public partial class Form2 : Form 
{ 
    public Form2() 
    { 
     InitializeComponent(); 
    } 

    public string getText() 
    { 
     return textBox1.Text; 
    } 
} 
0

se si crea un modulo dalla classe modulo di base è necessario definire un pulsante che restituisce lo DialogResult nelle proprietà del pulsante.

Questi sono i più utili in FileDialog, MessageBox ecc. Dove la classe è un modulo definito da MS.

0

Dato che il tuo solo tag è C# e ci si aspetta un pulsante OK e CANCEL, mi sembra che si stia effettivamente cercando la funzione MessageBox. La creazione e l'eliminazione di un modulo solo per mostrare una finestra di dialogo non è necessaria.

if (MessageBox.Show("boxtext", "boxcaption" MessageBoxButtons.OKCancel) == DialogResult.OK) 
{ 
// Read the contents of testDialog's TextBox. 
// cl.AcceptButton.DialogResult = DialogResult.OK; 
this.label4.Text = cl.textBox1Text; 
}else 
{ 
    this.label4.Text = "Cancelled"; 
} 

MessageBox è un wrapper per lo stesso nome Win32 API Funzione:

int WINAPI MessageBox(
    _In_opt_ HWND hWnd, 
    _In_opt_ LPCTSTR lpText, 
    _In_opt_ LPCTSTR lpCaption, 
    _In_  UINT uType 
); 

Nota: Se si dispone già di una finestra-handle/Form assicurarsi di passare come il primo parametro da MessageBox .