【问题标题】:C# Items don't appear in ListViewC# 项目不会出现在 ListView 中
【发布时间】:2017-10-18 10:28:51
【问题描述】:

我正在编写一个简单的任务列表应用程序作为 Windows 窗体和 C# 的练习,我对这两者都很陌生。我正在使用以下代码尝试在 listView 中显示进程 ID(我在 Visual Studio 的设计视图中创建),但是当我运行它时,项目不会出现。

[STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        var currentWindow = new taskMngrWndw();
        Application.Run(currentWindow);
        Process[] processList = Process.GetProcesses();
        foreach (Process proc in processList)
        {
            string processID = Convert.ToString(proc.Id);
            currentWindow.taskView.Items.Add(new ListViewItem(processID));
        }
        currentWindow.taskView.Refresh();
    }

我做错了什么?

【问题讨论】:

  • 你追踪到了吗?为什么这个区域的进程列表部分?
  • @BugFinder 就像我说的那样,我真的很绿,所以我不确定踪迹是什么意思,我认为这是最适合它的地方 - 如果它在表格中.cs 文件?
  • 将您的 ListView 视图属性设置为“详细信息”
  • 您不应将代码添加到 Windows 窗体应用程序中的 Main() 方法(除非您确切知道自己在做什么)。如果您希望您的代码在 Form 中初始化 ListView 的项目,然后将该代码添加到表单本身(即在表单构造函数中,或在表单的 Load 事件中)。
  • @LocEngineer 已经完成

标签: c# winforms


【解决方案1】:

问题是在主窗体关闭(即您的应用程序正在退出)之前,此行不会返回:

Application.Run(currentWindow);

因此,填充列表视图的代码仅在表单关闭并关闭后运行。相反,将该代码移动到表单中,例如在 Form Load 事件中:

private void taskMngrWndw_Load(object sender, EventArgs e)
{
    FillProcesses();
}

private void FillProcesses()
{
    Process[] processList = Process.GetProcesses();
    foreach (Process proc in processList)
    {
        string processID = Convert.ToString(proc.Id);
        taskView.Items.Add(new ListViewItem(processID));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    相关资源
    最近更新 更多