首先抱歉我的英语不好。 我是C#的初学者,我制作了一个Windows窗体应用程序,但如果文本框为空,我就无法禁用一个按钮。 我尝试了一些Enabled方法,但它们没有用。希望有人可以帮我解决这个问题。非常感谢你
public partial class ModulusForm : Form
{
public double nje;
public double dy;
public double pergjigja;
public double rezultati;
public ModulusForm()
{
InitializeComponent();
Button btn = new Button();
btn.Click += new EventHandler(butoniGjenero_Click);
}
private void butoniPerfundo_Click(object sender, EventArgs e)
{
this.Close();
}
private void butoniGjenero_Click(object sender, EventArgs e)
{
Random random = new Random();
nje = random.Next(1, 100);
dy = random.Next(1, 100);
if (nje > dy)
{ textboxPyetja.Text = "X = " + nje + " " + "dhe" + " " + "Y = " + dy; }
else if (nje > dy)
{
nje = random.Next(1, 100);
dy = random.Next(1, 100);
}
rezultati = nje / dy;
}
private void butoniPastro_Click(object sender, EventArgs e)
{
textboxPyetja.Clear();
textboxPergjigja.Clear();
textboxPergjigjaSakt.Clear();
}
private void butoniVerteto_Click(object sender, EventArgs e)
{
try
{
pergjigja = double.Parse(textboxPergjigja.Text);
}
catch
{
var informim = MessageBox.Show("Rishiko fushat!", "Verejtje", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
if (textboxPergjigja.Text == "")
{
//nothin' baby
}
else
{
if (textboxPyetja.Text == "")
{
var informim = MessageBox.Show("Fusha e pyetjes eshte null!", "Verejtje", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
if (pergjigja == rezultati)
{
textboxPergjigjaSakt.Text = "Pergjigja eshte e sakte";
}
else
{
textboxPergjigjaSakt.Text = "Gabim." + " " + "Pergjigja e sakte eshte: " + "" + rezultati;
}
comboboxVargu.Items.Add(nje + " / " + dy + " = " + rezultati);
}
}
}
}
}
答案 0 :(得分:3)
归功于@Cody Gray,已经暗示过这一点;我刚刚扩展了它,因此您可以看到如何实现以及如何工作
<强>概述强>
您可以在textboxPergjigja.Text
的文字发生变化时为事件处理程序连接。
在您创建的处理程序中,您可以评估您的按钮是否应为Enabled
- 使用string.IsNullOrWhiteSpace()
检查进行设置。
<强>首先强>
在表单的构造函数中,订阅textboxPergjigja.Text
文本框的TextChanged
事件。
像这样:
public ModulusForm()
{
InitializeComponent();
Button btn = new Button();
btn.Click += new EventHandler(butoniGjenero_Click);
// Add the subscription to the event:
textboxPergjigja.TextChanged += textboxPergjigja_TextChanged;
}
下一步:强>
添加一个与该事件的正确委托签名匹配的处理程序。
像这样:
public textboxPergjigja_TextChanged(object sender, TextChangedEventArgs e)
{
// If the text box is not "empty", it will be enabled;
// If the text is "empty", it will be disabled.
butoniVerteto.Enabled = !string.IsNullOrWhiteSpace(textBoxPergjigja.Text);
}
这样,每当textBoxPergjigja
文本框中的文本发生更改时;评估已运行,您的按钮将始终正确启用/禁用。
希望这有帮助! :)
其他信息
你也可以使用textBox.Text.IsNullOrEmpty()
,它仍然有用 - 正如@Cody
由于以下原因,我使用string.IsNullOrWhiteSpace()
而不是textBox.Text.IsNullOrEmpty()
:
.IsNullOrEmpty()
方法仅检查textBox.Text
是null
还是总字符数等于0。这可能造成的问题是,如果用户仅在文本框中输入空格,则不再是Empty
或null
;因此,此检查将返回true
。如果程序的逻辑要求在文本框中输入实际值,则此逻辑可能存在缺陷。
string.IsNullOrWhiteSpace()
检查将检查3个条件 - 如果输入string
为null
,Empty
和包含只有空格字符(空格,换行符等),也是。我希望这会增加一些额外的成果,为你做出明智的决定。
答案 1 :(得分:2)
希望它有用!
private void YourTextBox_TextChanged(object sender, EventArgs e)
{
if (String.IsNullOrEmpty(YourTextBox.Text))
YourButton.Enabled = false;
else
YourButton.Enabled = true;
}
答案 2 :(得分:1)
试试这个:
if (String.IsNullOrEmpty(textboxPergjigja.Text))
butoniVerteto.Enabled = false;
else
butoniVerteto.Enabled = true;
答案 3 :(得分:1)
处理TextBox的TextChanged事件。 (在设计时双击文本框控件,这将自动为您创建文本更改事件。)
private void textboxPyetja_OnTextChanged(..blah blah)
{
if(String.IsNullOrWhitespace(txtTargetTextbox.Text)
{
//disable your control
}
else
{
//enable your control
}
}
答案 4 :(得分:0)
在txtbox中添加编辑文本的事件。当文本更改时,启用按钮
答案 5 :(得分:0)
将textBox1
更改为文本框名称,然后将button1
更改为按钮名称
if (textBox1.Text == "")
{
button1.Enabled = false;
}
else
button1.Enabled = true;