标签中的大字符串导致应用程序挂起(C#Windows)

标签中的大字符串导致应用程序挂起(C#Windows),c#,.net,windowsformsintegration,C#,.net,Windowsformsintegration,我有一个windows应用程序,从数据库中获取数据并将其绑定到标签。我正在使用计时器和滚动标签,当字符串大约为150个字符时,这可以正常工作,但当字符串大约为30000个字符时,它只是挂起应用程序 lblMsg1.AutoEllipsis = true; private void timer1_Tick(object sender, EventArgs e) { try { if (

我有一个windows应用程序,从数据库中获取数据并将其绑定到标签。我正在使用计时器和滚动标签,当字符串大约为150个字符时,这可以正常工作,但当字符串大约为30000个字符时,它只是挂起应用程序

       lblMsg1.AutoEllipsis = true;
  private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                if (lblMsg1.Right <= 0)
                {
                    lblMsg1.Left = this.Width;
                }
                else
                    lblMsg1.Left = lblMsg1.Left - 5;

                this.Refresh();
            }
            catch (Exception ex)
            {

            }
        }

public void bindData()
{
lblMsg.Text = "Some Large text";
}

 public void Start()
        {
            try
            {
                timer1.Interval = 150;
                timer1.Start();
            }
            catch (Exception ex)
            {
                Log.WriteException(ex);
            }
        }
lblMsg1.AutoEllipsis=true;
私有无效计时器1_刻度(对象发送方,事件参数e)
{
尝试
{

如果(lblMsg1.Right不是标签,请使用文本框并根据需要设置滚动条、多行和换行符属性。禁用文本框编辑(从而使其行为类似于标签),使用只读属性。

使用文本框而不是标签,并根据需要设置滚动条、多行和换行符属性。要禁用文本框的编辑(从而使其行为类似于标签),请使用只读属性。

我想您是在尝试创建新闻标签? 我不确定标签的设计是否能容纳这么大的字符串。 改用picturebox并更新代码

在窗体类中定义两个变量。一个用于保存文本偏移量,另一个用于保存图片框的图形对象。如下所示:

private float textoffset = 0;
System.Drawing.Graphics graphics = null;
在表单onload中,执行以下操作:

private void Form1_Load(object sender, EventArgs e)
{
    textoffset = (float)pictureBox1.Width; // Text starts off the right edge of the window
    pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
    graphics = Graphics.FromImage(pictureBox1.Image);
}
然后,计时器应如下所示:

private void timer1_Tick(object sender, EventArgs e)
{
    graphics.Clear(BackColor);
    graphics.DrawString(newstickertext, new Font(FontFamily.GenericMonospace, 10, FontStyle.Regular), new SolidBrush(Color.Black), new PointF(textoffset, 0));
    pictureBox1.Refresh();
    textoffset = textoffset-5;
}

我猜你是在尝试创建一个新闻摘要? 我不确定标签的设计是否能容纳这么大的字符串。 改用picturebox并更新代码

在窗体类中定义两个变量。一个用于保存文本偏移量,另一个用于保存图片框的图形对象。如下所示:

private float textoffset = 0;
System.Drawing.Graphics graphics = null;
在表单onload中,执行以下操作:

private void Form1_Load(object sender, EventArgs e)
{
    textoffset = (float)pictureBox1.Width; // Text starts off the right edge of the window
    pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
    graphics = Graphics.FromImage(pictureBox1.Image);
}
然后,计时器应如下所示:

private void timer1_Tick(object sender, EventArgs e)
{
    graphics.Clear(BackColor);
    graphics.DrawString(newstickertext, new Font(FontFamily.GenericMonospace, 10, FontStyle.Regular), new SolidBrush(Color.Black), new PointF(textoffset, 0));
    pictureBox1.Refresh();
    textoffset = textoffset-5;
}


采取形式我也需要滚动文本。可以用textbox实现滚动吗?是的,当然可以,替换textbox没有帮助,它仍然挂起应用程序。如果文本很小,它可以工作,但如果数据很大,它挂起应用程序。请启用TextBoxBase.Double Buffered as true,并查看采取形式我也需要滚动文本。可以scro吗使用textbox可以实现吗?是的,当然你可以替换textbox也没有帮助,它仍然会挂起应用程序。如果文本很小,它可以工作,但如果数据很大,它会挂起应用程序。请启用TextBoxBase。Double Buffered as true and See我不认为C#中的标签设计为包含这么多字符。它们设计为描述另一个对象,例如文本框、单选按钮等,最多大约250个字符,而不是30个字符,000@Kendo这就是我的应用程序挂起的原因吗?可能有更好的控件可以使用,包括Visakh V A提到的文本框,它具有多行支持、滚动条和只读的附加属性。它也可能是文本显示的方式存储在数据库中。记录越大,从数据库中检索所需的时间就越长。在这种情况下,将文本存储为二进制可能会有所帮助。看看这个答案:我不认为C#中的标签被设计为包含这么多字符。它们被设计为另一个对象的描述,例如文本框、单选按钮等大约250个字符,而不是30个,000@Kendo这就是我的应用程序挂起的原因吗?可能有更好的控件可供使用,包括Visakh V A提到的文本框,它具有多行支持、滚动条和只读的附加属性。这也可能是文本存储在数据库中的方式。记录越大,检索所需的时间越长从数据库中删除。在这种情况下,将文本存储为二进制可能会对您有所帮助。请看以下答案:使用此选项不会挂起应用程序,但我根本看不到文本(不是滚动,也不是静态)。你能指出它可能在哪里吗?它显示一个黑色的滚动条-----------请发布你的源代码,然后我可以帮助修复它。尝试将背景颜色更改为Color.White或将新的SolidBrush(Color.black)更改为new SolidBrush(Color.Red)或其他东西,以检查背景颜色和文本颜色是否不相同(这样你就不会在picturebox中看到任何东西)。使用它不会挂起应用程序,但我根本看不到文本(不是滚动,不是静态)。你能指出它可能在哪里吗?它显示一个黑色的滚动条-----------请发布你的源代码,然后我可以帮助修复它。尝试将背景颜色更改为Color.White或将新的SolidBrush(Color.black)更改为new SolidBrush(Color.Red)或其他东西,以检查背景颜色和文本颜色是否不相同(这样你就不会在图片框中看到任何东西)。