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按钮在哪里?
答案 0 :(得分:21)
您需要自行添加,您可以将按钮添加到Form
并设置其DialogResult
属性。这将返回DialogResult并关闭表单,而无需连接任何代码。下面是一个使用Method返回Form2上TextBox的值的示例(Form2上有两个按钮,其DialogResults设置为Cancel和Ok)。
<强> 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();
}
}
}
<强>窗体2 强>
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public string getText()
{
return textBox1.Text;
}
}
答案 1 :(得分:2)
鉴于你唯一的标签是C#,并且你期望一个OK和CANCEL按钮,在我看来你实际上在寻找MessageBox功能。 仅仅为了显示消息框对话框而创建和处理表单是不可取的。
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。
答案 2 :(得分:0)
你想要的是visualbasic命名空间的输入框,是的你可以在c#
中使用它答案 3 :(得分:0)
如果您从基本表单类创建表单,则需要定义一个按钮,该按钮在按钮的属性中返回DialogResult
。
这些在FileDialog
,MessageBox
等中最有用。其中类是MS定义的形式。