首页 文章

queue task listbox c#在que中加载第一个项目并刷新

提问于
浏览
0

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

现在如果使用列表框不是要走的路,我全都听见了 . 我只是希望能够显示队列中的内容 . 我的程序的其余部分运行良好,只是这一部分,我似乎无法搞清楚 . 我曾尝试使用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(object sender,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();


         }
    }

1 回答

  • 0

    你需要这样的东西吗?

    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));
            }
        }
    

相关问题