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#很陌生,有人能解释一下这个问题吗?这样我就可以理解它,并为下次学习做好准备。非常感谢:)

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);