2012-09-16 30 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(); 

     } 

Khi tôi nhấp vào nút, tôi thấy Biểu mẫu mới và textBox1 trong Biểu mẫu mới và tôi có thể nhập nội dung textBox1 nhưng tôi không thấy bất kỳ nơi nào có nút OK hoặc CANCEL. Tôi có nên thêm chúng manualy trong thiết kế mẫu mới? Và làm thế nào để sử dụng chúng sau đó?Tôi làm cách nào để sử dụng Form.ShowDialog?

Đây là mã trong Biểu mẫu mới của tôi những gì tôi muốn làm là nhập nội dung nào đó vào hộp văn bản Form mới1 và chuyển văn bản trong textBox1 đến 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 
      { 

      } 
     } 
    } 
} 

Vì vậy, các nút OK và CANCEL của Form.ShowDialog là gì?

Trả lời

20

Bạn sẽ cần tự thêm chúng, bạn có thể thêm các nút vào số Form và đặt thuộc tính DialogResult thuộc tính của mình. Thao tác này sẽ trả về hộp thoại DialogResult và đóng Biểu mẫu mà không cần phải kết nối bất kỳ mã nào. Dưới đây là một ví dụ sử dụng một phương thức để trả về giá trị của TextBox trên Form2 (Có hai nút trên Form2 với DialogResults của họ được thiết lập để Cancel và Ok respivly).

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

nếu bạn tạo biểu mẫu từ lớp biểu mẫu cơ bản, bạn cần xác định nút trả về DialogResult trong thuộc tính của nút.

Chúng hữu ích nhất trong số FileDialog, MessageBox v.v. trong đó lớp là biểu mẫu được MS xác định.

0

Vì thẻ duy nhất của bạn là C# và bạn mong đợi nút OK và CANCEL, có vẻ như với tôi rằng bạn đang thực sự tìm kiếm chức năng MessageBox. Tạo và xử lý Biểu mẫu chỉ vì mục đích hiển thị hộp thoại hộp thư là không cần thiết.

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 là một wrapper cho cùng tên Win32 API Chức năng:

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

Lưu ý: Nếu bạn đã có một cửa sổ xử lý/Mẫu chắc chắn để vượt qua nó như là tham số đầu tiên MessageBox .

Các vấn đề liên quan