关于控制台控制同一工程中窗体内控件的问题

.Net技术 码拜 8年前 (2016-07-12) 763次浏览
刚才开的帖子,本人不能回复了,所以只好再开一个:
本人有一个工程如下:
Program.cs 主入口
tcp.cs 客户端连接时的一些处理
testform.cs 本人新增的一个窗体,这个窗体中有一个listview控件,通过数据库得到用户列表
程序运行时,本人在控制台打开testfrmo窗体,显示出用户列表,然后当客户端连接本人时,程序运行到tcp.cs处理
这时,本人希望能自动刷新testform中listview里的用户列表,或说是重新执行一下取用户列表的方法,例如getuser();
在上个帖子中,有人给了本人一段代码,本人在单独的工程中测试是OK的,但是在本人当前的工程中,用他的代码打开窗体会假死
问一下是什么原因?还有什么其他的可以控制窗体控件的办法?
关于控制台控制同一工程中窗体内控件的问题
下面是上个帖子中别人给的代码:

using System;
using System.Threading;
using System.Windows.Forms;
class Program
{
    [STAThread]
    static void Main(string[] args)
    {
        Form form = new Form() { Text = "控制台输入可以控制标题,exit退出"};
        ThreadPool.QueueUserWorkItem(ControlThread, form);
        Application.Run(form);
    }
    static void ControlThread(object state)
    {
        Form form = (Form)state;
        while (true)
        {
            string line = Console.ReadLine();
            form.BeginInvoke((Action)delegate
            {
                if (line == "exit") form.Close();
                else form.Text = line;
            });
        }
    }
}
解决方案

20

你不把你代码放出来鬼知道怎么回事,别人的代码运行至少没啥问题

20

而且别人给你的代码,你随便创建一个 winform 工程看看,对比一下 Program.cs 文件看看,就明白了。

20

说白一点,你所谓的“在控制台程序中控制……”,而别人给你“在winform程序中输入…….”。就是这么回事儿,你本人在“本人在单独的工程中测试是OK的”的时候,还是先本人改变一下本人之前的混乱思路为好。

20

唉算了,本人还是再跟你说明白一点吧。这个可真是个体力活。
假设你之前只会什么“控制台程序”,你费了好大劲写了什么代码了,现在你发现原来需要一些窗体,那么怎么办?
真正去创建一个窗体程序就好了,然后把原来的控制台里边的程序该扔掉的扔掉、可以复用的复用。
你对比你在问题中描述的需求,那就是一个窗体应用的 UI 设计需求。那就用窗体程序的框架来重构。用什么蹩脚的组合代码呢?

30

控制台和winform是不一样的,winform有UI方面跨线程访问的问题

60

直接创建一个WinForm项目,用真正的UI交互逻辑创建窗体,而不是去“模拟”它

60

一个常年混迹论坛回帖无数的人,怎么会栽在这种小问题上

30

这不可以吧?
控制台在等待输入的时候是无法干预的

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于控制台控制同一工程中窗体内控件的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)