如果在C#中的文本框中输入了字符,那么语句应该是什么

本文关键字:语句 是什么 字符 文本 输入 如果 | 更新日期: 2023-09-27 18:00:30

问题1:

正如代码所述,如果在文本框中输入空格,则按钮将保持禁用状态,但如果输入了一个字符或字符串,则应在什么时候写入以启用按钮?我认为应该有一个if语句,但我不知道该语句。

MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
UTF8Encoding utf81 = new UTF8Encoding();
textBox1.Text = BitConverter.ToString(md5.ComputeHash(utf81.GetBytes(textBox30.Text)))
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
UTF8Encoding utf82 = new UTF8Encoding();
textBox2.Text = BitConverter.ToString(sha1.ComputeHash(utf82.GetBytes(textBox30.Text)))
if (string.IsNullOrWhiteSpace(textBox30.Text))
{
btnHash3.Enabled = false;
}
else
{
btnHash3.Enabled = true;
}

问题2

还有一点稍微不同的是,一旦从两个文件流中读取两个文件并显示在两个标签中,我如何启用按钮?

{
System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
System.Security.Cryptography.SHA1 sha1 = System.Security.Cryptography.SHA1.Create();

FileStream file1 = new FileStream(lblBrowse1.Text, FileMode.Open, FileAccess.Read);
FileStream file2 = new FileStream(lblBrowse2.Text, FileMode.Open, FileAccess.Read);

                byte[] hash1 = md5.ComputeHash(file1);
                byte[] hash2 = md5.ComputeHash(file2);
                file1.Seek(0, SeekOrigin.Begin);
                file2.Seek(0, SeekOrigin.Begin);
                byte[] hash3 = sha1.ComputeHash(file1);
                byte[] hash4 = sha1.ComputeHash(file2);
                file1.Seek(0, SeekOrigin.Begin);
                file2.Seek(0, SeekOrigin.Begin);
                file1.Close();
                file2.Close();
                textBox1.Text = BitConverter.ToString(hash1).Replace("-", "");
                textBox2.Text = BitConverter.ToString(hash2).Replace("-", "");
                textBox6.Text = BitConverter.ToString(hash3).Replace("-", "");
                textBox7.Text = BitConverter.ToString(hash4).Replace("-", "")
                if (textBox1.Text == textBox2.Text
                 && textBox6.Text == textBox7.Text)
                {
                    MessageBox.Show("These two files are identical.");
                }
                else
                {
                    MessageBox.Show("These two files are different.");
                }
            }       

任何帮助都将不胜感激。

如果在C#中的文本框中输入了字符,那么语句应该是什么

要回答第一个问题,请使用.Contains检查空格:

bthHash3.Enabled = !myString.Contains(" ");

由于您只是设置了一个布尔值,所以我将if折叠为一行。要回答第二个问题,这稍微取决于您是否处于多线程环境中。当然,您可以随时编写以下内容:

ReadMyFile(file1);
ReadMyFile(file2);
myButton.Enabled = true; 

这是有效的,因为ReadMyFile应该在读取时阻止,所以在所有读取完成之前,启用的行不会被命中。如果你是线程,那么这样做:

int completeCount = 0;
void ThreadedRead()
{
    //Read file synchronously
    completedCount++;
    CheckReadCompletion();
}
void CheckReadCompletion()
{
   if (completedCount == 2)
      myButton.Enabled = true;
}

您将为每个需要读取的文件启动"ThreadedRead"。如果我能澄清什么,请告诉我!

在上面的场景中,您不需要这样做(因为您只是在设置enabled标志),但对于足够复杂的行为,请确保在completedCount和对CheckReadCompletion的调用周围锁定。您可以将其修改为:

int completeCount = 0;
object completionLock = new object();
void ThreadedRead()
{
    //Read file synchronously
    lock (completionLock)
    {
       completedCount++;
       CheckReadCompletion();
    }
}
void CheckReadCompletion()
{
   if (completedCount == 2)
      myButton.Enabled = true;
}

实际上,您不需要if语句,只需使用条件的结果作为Enabled属性的值即可。修剪字符串并检查长度是否大于零,以确定它是否有任何非空格字符:

btnHash3.Enabled = textBox30.Text.Trim().Length > 0;

要在启用按钮之前等待两个结果,请首先创建一个计数器,例如:

int fileCounter = 0;

在将文件内容添加到标签的代码之后,增加计数器并设置按钮状态:

fileCounter++;
someButton.Enabled = fileCounter == 2;