队列任务列表框c#,它加载que中的第一个项目并刷新

本文关键字:第一个 项目 刷新 que 加载 列表 任务 队列 | 更新日期: 2023-09-27 18:21:49

好的,在c#中,我尝试了很多方法来获得一个列表框,以获取由其他程序填充的文本文件的内容,并列出内容。如果某些条件为true,则根据文本文件中列表框中第一项的内容执行程序。程序运行后,它会从文本文件中删除执行行(这是我的程序无法继续的地方),我希望列表框刷新或重新加载文本文件,再次根据第一行文本文件的内容加载程序。

现在,如果使用列表框不是办法,我会洗耳恭听的。我只想能够显示队列中的内容。我的程序的其余部分运行得很好,只是这一部分,我似乎不明白。我尝试过使用FileWatcher和bindsource,但也许我做错了什么。我是c#的新手,所以任何帮助都将不胜感激。如果需要的话,我可以把我的代码片段显示在这里。谢谢

编辑:这是我当前的一些代码。到目前为止,我一直在尝试不同的方法,这是非常残酷的。我还没有设置它来加载任何内容,仍然试图在文本文件更改时更新它。

public partial class Form1 : Form
{

    private FileSystemWatcher _watcher;
   List<string> myList =  new List<string>();
    public Form1()
    {
        InitializeComponent();
        myList = System.IO.File .ReadLines("C:''inetpub''wwwroot''imomo''Orders.txt").ToList();
        BindingSource binding = new BindingSource(myList.ToList(), null);
        GPSCOM.DataSource = binding;
        _watcher = new FileSystemWatcher();
        _watcher.Path = Path.GetDirectoryName("C:''inetpub''wwwroot''imomo");
        _watcher.Filter=Path.GetFileName("C:''inetpub''wwwroot''imomo''Orders.txt");
        _watcher.SynchronizingObject = GPSCOM;
        _watcher.EnableRaisingEvents = true;
        _watcher.Changed += new FileSystemEventHandler(fileSystemWatcher1_Changed);
        _watcher.Error += new ErrorEventHandler(GPSCOMerror);
        GPSCOM.SelectionMode = SelectionMode.One;
        //myList.FirstOrDefault();
         if (serialPort.IsOpen)
        {
            return;
        }
        else
        {
            for (; ; )
            {
                switch ((string)GPSCOM.SelectedItem)
                {
                    case "task1":
                        var lines = System.IO.File.ReadAllLines("C:''inetpub''wwwroot''imomo''Orders.txt");
                        System.IO.File.WriteAllLines("C:''inetpub''wwwroot''imomo''Orders.txt", lines.Skip(1).ToArray());
                        //BindingSource binding = new BindingSource(myList.ToList(), null);
                        myList = System.IO.File.ReadLines("C:''inetpub''wwwroot''imomo''Orders.txt").ToList();
                        GPSCOM.DataSource = binding;
                        GPSCOM.SelectionMode = SelectionMode.One;
                        myList.FirstOrDefault();
                        GPSCOM.SetSelected(0, true);
                        GPSCOM.Refresh();
                        return;
                    case "task2":
                        var lines1 = System.IO.File.ReadAllLines("C:''inetpub''wwwroot''imomo''Orders.txt");
                        System.IO.File.WriteAllLines("C:''inetpub''wwwroot''imomo''Orders.txt", lines1.Skip(1).ToArray());
                        //BindingSource binding = new BindingSource(myList.ToList(), null);
                        myList = System.IO.File.ReadLines("C:''inetpub''wwwroot''imomo''Orders.txt").ToList();
                        GPSCOM.DataSource = binding;
                        GPSCOM.SelectionMode = SelectionMode.One;
                        myList.FirstOrDefault();
                        GPSCOM.SetSelected(0, true);
                        GPSCOM.Refresh();
                        return;
                    case "Task3":
                        var lines2 = System.IO.File.ReadAllLines("C:''inetpub''wwwroot''imomo''Orders.txt");
                        System.IO.File.WriteAllLines("C:''inetpub''wwwroot''imomo''Orders.txt", lines2.Skip(1).ToArray());
                        //BindingSource binding = new BindingSource(myList.ToList(), null);
                        myList = System.IO.File.ReadLines("C:''inetpub''wwwroot''imomo''Orders.txt").ToList();
                        GPSCOM.DataSource = binding;
                        GPSCOM.SelectionMode = SelectionMode.One;
                        myList.FirstOrDefault();
                        GPSCOM.SetSelected(0, true);
                        GPSCOM.Refresh();
                        return;
                    case "":
                        return;
                }
            }
            }
    }

private void GPSCOM_SelectedIndexChanged(对象发送方,EventArgs e){

        BindingSource binding = new BindingSource(myList.ToList(), null);
        myList = System.IO.File.ReadLines("C:''inetpub''wwwroot''imomo''Orders.txt").ToList();
      GPSCOM.DataSource = binding;
        GPSCOM.Refresh(); 
    }        
    private void fileSystemWatcher1_Changed(object sender, FileSystemEventArgs e)
    {
        BindingSource binding = new BindingSource(myList.ToList(), null);
        myList = System.IO.File.ReadLines("C:''inetpub''wwwroot''imomo''Orders.txt").ToList();
       GPSCOM.DataSource = binding;
        GPSCOM.Refresh();

         }
    }

队列任务列表框c#,它加载que中的第一个项目并刷新

你需要这样的东西吗?

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            listBox1.DataSource = TaskQue.GetTasks();
        }
        private void Execute(object sender, EventArgs e)
        {
            string task = TaskQue.Pop();
            //execute task;
            listBox1.DataSource = TaskQue.GetTasks();
        }
        private void AddTask(object sender, EventArgs e)
        {
            TaskQue.Push(textBox1.Text);
            listBox1.DataSource = TaskQue.GetTasks();
        }
    }
    public class TaskQue
    {
        public static string txtPath = "C:/a.txt";
        public static string Pop()
        {
            StreamReader sr = new StreamReader(txtPath);
            string result = sr.ReadLine();
            string remaining = sr.ReadToEnd();
            sr.Close();
            StreamWriter sw = new StreamWriter(txtPath, false);
            sw.Write(remaining);
            sw.Close();
            return result;
        }
        public static void Push(string s)
        {
            StreamWriter sw = new StreamWriter(txtPath, true);
            sw.WriteLine(s);
            sw.Close();
        }
        public static IEnumerable<string> GetTasks()
        {
            return new List<string>(File.ReadLines(txtPath));
        }
    }