我在文本框中显示MD5哈希结果时遇到问题。代码使用命令行正常工作。代码如下所示:
private void textBox1_TextChanged(object sender, System.EventArgs e)
{
textBox1.Text = GetMD5HashFromFile();
}
private static string GetMD5HashFromFile()
{
FileStream file = new FileStream(@"C:\Desktop\test.txt", FileMode.Open);
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] retVal = md5.ComputeHash(file);
file.Close();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < retVal.Length; i++)
{
sb.Append(retVal[i].ToString("x2"));
}
return sb.ToString();
}
我想计算哈希并直接在文本框中显示哈希字符串。我的编程概念是错误的还是有一些缺失的步骤?谢谢!
答案 0 :(得分:0)
当用户在TextBox中输入文本时(或由于任何其他原因TextChanged
属性发生更改时),将调用Text
事件处理程序。将散列字符串分配给Text
属性是错误的。
您可以将它放在其他地方,也许是在按钮点击处理程序中:
<StackPanel>
<TextBox x:Name="textBox1"/>
<Button Content="Set Text" Click="ButtonClick"/>
</StackPanel>
private void ButtonClick(object sender, RoutedEventArgs e)
{
textBox1.Text = GetMD5HashFromFile();
}