给个思路 没做过winform

暴走的车轮 2009-10-27 04:26:19
在winform 中 我点一个按钮 给一个TextBox 赋值

可能按钮事件中的处理需要很长时间,比如说10分钟,我需要向TextBox输出处理信息。现在问题是,按钮事件执行完毕后TextBox才会显示输出的信息,我想做到事件处理的时候就逐行输出到TextBox
不知道我表达明白没?
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
llj821215 2009-10-27
  • 打赏
  • 举报
回复
用backgroupworker控件试一下
fengniumaxi 2009-10-27
  • 打赏
  • 举报
回复
可能命名有点难懂,但基本可以表达出来意思,你可以自己运行下,虽然看着不太一样,但思路什么的都是一样的。
暴走的车轮 2009-10-27
  • 打赏
  • 举报
回复
谢谢楼上两位。结贴!~~
fengniumaxi 2009-10-27
  • 打赏
  • 举报
回复
表达基本明白

我随便给你发个例子,这是我当时遇到这个问题写的一个Demo,呵呵

private MyMethod my;
static Form2 f2 = null;
static Timer timer = null;
static bool result = false;
public Form1()
{
timer = new Timer();
timer.Interval = 10;
timer.Tick += new EventHandler(timer_tick);
timer.Start();
InitializeComponent();
my = new MyMethod(method);
}
private int method()
{
System.Threading.Thread.Sleep(5000);
return 100;
}
private void MethodComplete(IAsyncResult iar)
{
if (iar == null) return;
if (tb5.InvokeRequired)
{
write writeIntoTB = new write(RefreshTB);
tb5.BeginInvoke(writeIntoTB, (iar.AsyncState as MyMethod).EndInvoke(iar).ToString());
}
else
{
RefreshTB((iar.AsyncState as MyMethod).EndInvoke(iar).ToString());
}
result = true;
}
private void RefreshTB(string s)
{
tb5.Clear();
tb5.Text = s;
}
private void bt5_Click(object sender, EventArgs e)
{
result = false;
IAsyncResult iar = my.BeginInvoke(MethodComplete, my);
f2 = new Form2();
f2.ShowDialog();
}
private void timer_tick(object sender, EventArgs e)
{
if (result)
{
if (f2 != null)
{
f2.Close();
}
}
}


lovefootball 2009-10-27
  • 打赏
  • 举报
回复
如果用线程处理的话,那你更新控件的时候得用委托来做
Google "invokerequired"
lovefootball 2009-10-27
  • 打赏
  • 举报
回复
赋值完毕加一句
Application.DoEvents();
暴走的车轮 2009-10-27
  • 打赏
  • 举报
回复
是不是我需要单独创建一个线程进行处理?
一、软件开发环境以及开发工具: 框架:.NET Framework 4.0 工具:Visual Studio 2017 插件:DevExpress 18.1.7 环境:IIS 7 二、实现步骤 (1)在项目中创建一个名为WinformAutoUpdate.APP的Winform窗体应用工程,并将默认的Form1.cs窗体文件重命名为MainFrm.cs作为主程序窗体 创建主程序窗体 (2)在项目中再创建一个名为AutoUpdateTask的Winform应用程序工程,并将默认的Form1.cs窗体文件重命名为AutoUpdateTaskFrm.cs作为更新程序窗体 创建更新程序窗体 (3)在更新程序窗体中放入图上所示的相关控件; 进度条控件用于显示更新进度,放入一个Button按钮控件用于用户根据提示进行操作! 实现思路: 1、将更新程序放入磁盘的目录下面,并将其放在已经发布了的IIS中 当用户在运行主程序窗体并点击左上角的更新按钮时,弹出程序更新窗体,并先自动从IIS中拉取updateList.xml文件,然后与本地程序作对比,检测是否需要升级软件; 如果有新版本发布,则点击“立即更新”按钮,程序将从IIS中拉取新发布的ZIP软件包,并自动解压到主程序目录中,覆盖主程序目录中的相关文件(这里值得注意的是,在解压程序之前,我们需要先结束主程序的进程,不然会因主程序进程正在使用而导致报错,另外,我们用到的插件是ICSharpCode.SharpZipLib.dll第三方动态链接库,网上有现成的,可以直接Down下来用);

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧