14
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();

        }

ボタンをクリックすると、新しいフォームと新しいフォーム内の textBox1 が表示されます。そして、textBox1 に何かを入力することはできますが、OK または CANCEL ボタンがどこにも表示されません。新しいフォーム デザイナーでそれらを手動で追加する必要がありますか? そして、それらをどのように使用するのですか?

これが私の新しいフォームのコードです。新しいフォーム textBox1 に何かを入力し、textBox1 のテキストを 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
            {
               
            }
        }
    }
}

Form.ShowDialog の OK ボタンと CANCEL ボタンはどこにありますか?

4

5 に答える 5

29

ボタンを自分で追加する必要があります。ボタンを追加してForm、そのプロパティを設定できますDialogResult。これにより、DialogResult が返され、コードを配線しなくてもフォームが閉じられます。メソッドを使用して Form2 の TextBox の値を返す例を次に示します (Form2 には 2 つのボタンがあり、DialogResults がそれぞれ Cancel と Ok に設定されています)。

フォーム1

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();
        }
    }
}

フォーム2

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

    public string getText()
    {
        return textBox1.Text;
    }
}
于 2012-09-16T02:56:59.907 に答える
4

あなたの唯一のタグが C# であり、[OK] および [キャンセル] ボタンを期待していることを考えると、実際には MessageBox 関数を探しているように思えます。メッセージ ボックス ダイアログを表示するためだけに Form を作成して破棄する必要はありません。

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は、同じ名前の WIN32 API 関数のラッパーです。

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

注: 既にウィンドウ ハンドル/フォームがある場合は、それを最初のパラメーターとして MessageBox に渡すようにしてください。

于 2013-09-30T11:41:01.613 に答える
0

基本フォームクラスからフォームを作成する場合はDialogResult、ボタンのプロパティでを返すボタンを定義する必要があります。

これらは、クラスがMS定義の形式であるなどFileDialogで最も役立ちます。MessageBox

于 2012-09-16T03:01:54.797 に答える
0

あなたが望むのは、Visualbasic 名前空間の入力ボックスです。はい、C# で使用できます。

Microsoft.VisualBasic.Interaction.InputBox

于 2012-09-16T02:57:33.380 に答える