C#可以';更新文本框时看不到文本
本文关键字:文本 看不到 更新 可以 | 更新日期: 2023-09-27 18:25:11
我想知道是否有人能帮我解决一个小问题。我试图更新另一个类的文本框,但文本框中没有显示,即使它是在我打印到屏幕时发送的。
我使用的代码如下:
程序.cs
namespace Search
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
try
{
Application.SetCompatibleTextRenderingDefault(false);
}
catch (InvalidOperationException e)
{
}
Application.Run(new Form1());
}
public static readonly Form1 MainLogWindow = new Form1();
}
}
HexToASCII:
public class HexToASCII
{
Output o = new Output();
public void hexToAscii(String hex, int textBox)
{
//Convert the string of HEX to ASCII
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hex.Length; i += 2)
{
string hs = hex.Substring(i, 2);
sb.Append(Convert.ToChar(Convert.ToUInt32(hs, 16)));
}
//Pass the string to be output
string convertedHex = sb.ToString();
Program.MainLogWindow.UpdateTextBox(convertedHex);
}
}
表格1:
private delegate void NameCallBack(string varText);
public void UpdateTextBox(string input)
{
if (InvokeRequired)
{
textBox2.BeginInvoke(new NameCallBack(UpdateTextBox), new object[] { input });
}
else
{
textBox2.Text = textBox2.Text + Environment.NewLine + input;
}
}
我试着用一个新线程ThreadStartts=delegate()来运行它。。。但我无法更新文本框。对不起,我对c#很陌生,有人能解释一下这个问题吗?这样我就可以理解它,并为下次学习做好准备。非常感谢:)
这就是问题所在:
static void Main()
{
...
Application.Run(new Form1());
}
public static readonly Form1 MainLogWindow = new Form1();
您正在创建两个表单:其中一个表单正在显示(带有Application.Run
),但您正在更改另一个表单上文本框的内容:
Program.MainLogWindow.UpdateTextBox(convertedHex);
您一开始还没有展示如何调用hexToAscii
——就我个人而言,我会尽量避免对这样的GUI元素进行静态引用,但您可以通过将Main
方法更改为使用来使代码正常工作
Application.Run(MainLogWindow);