コード例 #1
0
 public DbNode(DbNode <Button> next)
 {
     //使用 default 关键字,此关键字对于引用类型会返回空,对于数值类型会返回零。
     //对于结构,此关键字将返回初始化为零或空的每个结构成员,具体取决于这些结构是值类型还是引用类型
     this._data = default(Button);
     this._next = next;
     this._prev = null;
 }
コード例 #2
0
        // 构造函数 6个

        public DbNode(Button data, int type, double time, DbNode <Button> prev, DbNode <Button> next)
        {
            this._data = data;
            this._type = type;
            this._time = time;
            this._prev = prev;
            this._next = next;
        }
コード例 #3
0
        /// <summary>
        /// 返回链表的长度
        /// </summary>
        /// <returns></returns>
        public int Count()
        {
            DbNode <Button> p      = Head;
            int             length = 0;

            while (p != null)
            {
                length++;
                p = p.Next;
            }
            return(length);
        }
コード例 #4
0
        /// <summary>
        /// 在链表最后插入node
        /// </summary>
        /// <param name="item"></param>
        public void AddLast(DbNode <Button> item)
        {
            DbNode <Button> newNode = item;
            DbNode <Button> p       = new DbNode <Button>();

            if (Head == null)
            {
                Head = newNode;
                return;
            }
            p = Head; //如果head不为空,head就赋值给第一个节点
            while (p.Next != null)
            {
                p = p.Next;
            }
            p.Next       = newNode;
            newNode.Prev = p;
        }
コード例 #5
0
        /// <summary>
        /// 在位置i后插入node Button
        /// </summary>
        /// <param name="item"></param>
        /// <param name="i"></param>
        public void AddAfter(Button item, int i)
        {
            if (IsEmpty() || i < 0)
            {
                Console.WriteLine("The double linked list is empty or the position is uncorrect.");
                return;
            }

            if (0 == i) //在头之后插入元素
            {
                DbNode <Button> newNode = new DbNode <Button>(item);
                newNode.Next   = Head.Next;
                Head.Next.Prev = newNode;
                Head.Next      = newNode;
                newNode.Prev   = Head;
                return;
            }

            DbNode <Button> p = Head; //p指向head
            int             j = 0;

            while (p != null && j < i)
            {
                p = p.Next;
                j++;
            }

            if (j == i)
            {
                DbNode <Button> newNode = new DbNode <Button>(item);
                newNode.Next = p.Next;
                if (p.Next != null)
                {
                    p.Next.Prev = newNode;
                }
                newNode.Prev = p;
                p.Next       = newNode;
            }
            else
            {
                Console.WriteLine("The position is uncorrect.");
            }
        }
コード例 #6
0
        /// <summary>
        /// 根据元素的值查找索引
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public int IndexOf(Button value)
        {
            if (IsEmpty())
            {
                Console.WriteLine("The list is empty.");
                return(-1);
            }

            DbNode <Button> p = new DbNode <Button>();

            p = Head;
            int i = 0;

            while (p.Next != null && !p.Data.Equals(value))//查找value相同的item
            {
                p = p.Next;
                i++;
            }
            return(i);
        }
コード例 #7
0
        /// <summary>
        /// 移除指定位置的node
        /// </summary>
        /// <param name="i"></param>
        /// <returns></returns>
        public Button RemoveAt(int i)
        {
            if (IsEmpty() || i < 0)
            {
                Console.WriteLine("The double linked list is empty or the position is uncorrect.");
                return(default(Button));
            }

            DbNode <Button> q = new DbNode <Button>();

            if (0 == i)
            {
                q         = Head;
                Head      = Head.Next;
                Head.Prev = null;//删除掉了第一个元素
                return(q.Data);
            }

            DbNode <Button> p = Head;
            int             j = 0;

            while (p.Next != null && j < i)
            {
                j++;
                q = p;
                p = p.Next;
            }

            if (i == j) //?
            {
                p.Next.Prev = q;
                q.Next      = p.Next;
                return(p.Data);
            }
            else
            {
                Console.WriteLine("The position is uncorrect.");
                return(default(Button));
            }
        }
コード例 #8
0
        /// <summary>
        /// 在位置i前插入node Button
        /// </summary>
        /// <param name="item"></param>
        /// <param name="i"></param>
        public void AddBefore(DbNode <Button> item, int i)
        {
            if (IsEmpty() || i < 0)
            {
                Console.WriteLine("The double linked list is empty or the position is uncorrect.");
                return;
            }

            if (0 == i) //在头之前插入元素
            {
                DbNode <Button> newNode = item;
                newNode.Next = Head;    //把头改成第二个元素
                Head.Prev    = newNode;
                Head         = newNode; //把新元素设置为头
                return;
            }

            DbNode <Button> n = Head;
            DbNode <Button> d = new DbNode <Button>();
            int             j = 0;

            while (n.Next != null && j < i)
            {
                d = n; //把d设置为头
                n = n.Next;
                j++;
            }

            {
                if (j == i)
                {
                    DbNode <Button> newNode = item;
                    d.Next       = newNode;
                    newNode.Prev = d;
                    newNode.Next = n;
                    n.Prev       = newNode;
                }
            }
        }
コード例 #9
0
        //新建任务
        private void skinButton1_Click(object sender, EventArgs e)
        {
            n++;
            if (n <= 3)
            {
                string Title = "";
                //声明一个字符串变量,用于生成新增选项卡的名称
                foreach (Control c in tabControl1.TabPages)
                {
                    if (c.Text == "unknown1")
                    {
                        b[1] = 1;
                    }
                    if (c.Text == "unknown2")
                    {
                        b[2] = 1;
                    }
                    if (c.Text == "unknown3")
                    {
                        b[3] = 1;
                    }
                }
                if (b[1] != 0)
                {
                    if (b[2] != 0)
                    {
                        Title = "unknown3";
                    }
                    else
                    {
                        Title = "unknown2";
                    }
                }
                else
                {
                    Title = "unknown1";
                }

                TabPage MyTabPage = new TabPage(Title);//创建TabPage对象
                MyTabPage.BackColor = Color.White;
                //使用TabControl控件的TabPages 属性的Add方法添加新的选项卡
                tabControl1.TabPages.Add(MyTabPage);
                tabControl1.SelectedTab = MyTabPage;
                MyTabPage.Paint        += new PaintEventHandler(tabPage1_Paint);
                //设置TabPages界面可以拖入控件
                tabControl1.SelectedTab.DragDrop  += new DragEventHandler(tabPage1_DragDrop);
                tabControl1.SelectedTab.DragEnter += new DragEventHandler(tabPage1_DragEnter);
                tabControl1.SelectedTab.AllowDrop  = true;


                //在初始页面生成开始、结束按钮

                Button START = new Button();
                START.Image    = button1.Image;
                START.Size     = new Size(80, 80);
                START.Location = new Point(83, 43);
                MyTabPage.Controls.Add(START);
                START.MouseDown += new MouseEventHandler(OnMouseDown);
                START.MouseMove += new MouseEventHandler(OnMouseMove);
                DbNode <Button> start = new DbNode <Button>(START, 0, 0, null, null);
                start.X   = START.Location.X;
                start.Y   = START.Location.Y;
                k[l].Head = start;



                Button END = new Button();
                END.Image    = button2.Image;
                END.Size     = new Size(80, 80);
                END.Location = new Point(83, 343);
                MyTabPage.Controls.Add(END);
                END.MouseDown += new MouseEventHandler(OnMouseDown);
                END.MouseMove += new MouseEventHandler(OnMouseMove);
                DbNode <Button> end = new DbNode <Button>(END, 1, 0, null, null);
                end.X = END.Location.X;
                end.Y = END.Location.Y;
                k[l].AddLast(end);
                /* dblink.AddLast(END);*/
            }
            else
            {
                MessageBox.Show("最多只能拥有三个选项卡!");
            }
        }
コード例 #10
0
        public int buttonnumber; //buttonnumber 是判断 mousedown 时所在的按钮


        private void tabPage1_DragDrop(object sender, DragEventArgs e)
        {
            //拖放完毕之后,自动生成新控件
            Button btn = new Button();

            btn.Size     = move.Size;
            btn.Location = tabControl1.SelectedTab.PointToClient(new Point(e.X, e.Y));
            //用这个方法计算出客户端容器界面的X,Y坐标。否则直接使用X,Y是屏幕坐标
            tabControl1.SelectedTab.Controls.Add(btn);
            btn.ContextMenuStrip = contextMenuStrip1;
            btn.MouseDown       += new MouseEventHandler(OnMouseDown);
            btn.MouseMove       += new MouseEventHandler(OnMouseMove);
            switch (buttonnumber)
            {
            case 2:
            {
                btn.Image = Properties.Resources.move;
                DbNode <Button> a = new DbNode <Button>(btn, 2, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 3:
            {
                btn.Image = Properties.Resources.back;
                DbNode <Button> a = new DbNode <Button>(btn, 3, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 4:
            {
                btn.Image = Properties.Resources.turnleft;
                DbNode <Button> a = new DbNode <Button>(btn, 4, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 5:
            {
                btn.Image = Properties.Resources.turnright;
                DbNode <Button> a = new DbNode <Button>(btn, 5, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 6:
            {
                btn.Image = Properties.Resources.follow;
                DbNode <Button> a = new DbNode <Button>(btn, 6, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 7:
            {
                btn.Image = Properties.Resources.stop;
                DbNode <Button> a = new DbNode <Button>(btn, 7, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }
            //延时 delay

            case 8:
            {
                btn.Image = Properties.Resources.延时;
                DbNode <Button> a = new DbNode <Button>(btn, 8, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 10:
            {
                btn.Image = Properties.Resources.循环开始11;
                DbNode <Button> a = new DbNode <Button>(btn, 10, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 11:
            {
                btn.Image = Properties.Resources.循环开始21;
                DbNode <Button> a = new DbNode <Button>(btn, 11, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 12:
            {
                btn.Image = Properties.Resources.循环开始31;
                DbNode <Button> a = new DbNode <Button>(btn, 12, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 13:
            {
                btn.Image = Properties.Resources.无限循环开始;
                DbNode <Button> a = new DbNode <Button>(btn, 13, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 20:
            {
                btn.Image = Properties.Resources.循环结束1;
                DbNode <Button> a = new DbNode <Button>(btn, 20, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 21:
            {
                btn.Image = Properties.Resources.循环结束2;
                DbNode <Button> a = new DbNode <Button>(btn, 21, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 22:
            {
                btn.Image = Properties.Resources.循环结束3;
                DbNode <Button> a = new DbNode <Button>(btn, 22, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 23:
            {
                btn.Image = Properties.Resources.无限循环结束;
                DbNode <Button> a = new DbNode <Button>(btn, 23, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 30:
            {
                btn.Image = Properties.Resources.小车快速左转;
                DbNode <Button> a = new DbNode <Button>(btn, 30, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 31:
            {
                btn.Image = Properties.Resources.小车快速右转;
                DbNode <Button> a = new DbNode <Button>(btn, 31, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 32:
            {
                btn.Image = Properties.Resources.小车慢速做转;
                DbNode <Button> a = new DbNode <Button>(btn, 32, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 33:
            {
                btn.Image = Properties.Resources.小车慢速右转;
                DbNode <Button> a = new DbNode <Button>(btn, 33, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 41:
            {
                btn.Image = Properties.Resources.电机停转;
                DbNode <Button> a = new DbNode <Button>(btn, 41, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 42:
            {
                btn.Image = Properties.Resources.电机正转;
                DbNode <Button> a = new DbNode <Button>(btn, 42, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 43:
            {
                btn.Image = Properties.Resources.电机反转;
                DbNode <Button> a = new DbNode <Button>(btn, 43, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 44:
            {
                btn.Image = Properties.Resources.左电机转动;
                DbNode <Button> a = new DbNode <Button>(btn, 44, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 45:
            {
                btn.Image = Properties.Resources.右电机转动;
                DbNode <Button> a = new DbNode <Button>(btn, 45, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 50:
            {
                btn.Image = Properties.Resources.蜂鸣;
                DbNode <Button> a = new DbNode <Button>(btn, 50, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 51:
            {
                btn.Image = Properties.Resources.乐曲1;
                DbNode <Button> a = new DbNode <Button>(btn, 51, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 52:
            {
                btn.Image = Properties.Resources.乐曲2;
                DbNode <Button> a = new DbNode <Button>(btn, 52, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 53:
            {
                btn.Image = Properties.Resources.乐曲3;
                DbNode <Button> a = new DbNode <Button>(btn, 53, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 54:
            {
                btn.Image = Properties.Resources.乐曲4;
                DbNode <Button> a = new DbNode <Button>(btn, 54, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 55:
            {
                btn.Image = Properties.Resources.乐曲5;
                DbNode <Button> a = new DbNode <Button>(btn, 55, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 56:
            {
                btn.Image = Properties.Resources.乐曲6;
                DbNode <Button> a = new DbNode <Button>(btn, 56, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            //灯光控制
            case 60:
            {
                btn.Image = Properties.Resources.前进等;
                DbNode <Button> a = new DbNode <Button>(btn, 60, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 61:
            {
                btn.Image = Properties.Resources.倒车灯;
                DbNode <Button> a = new DbNode <Button>(btn, 61, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 62:
            {
                btn.Image = Properties.Resources.亮左转灯;
                DbNode <Button> a = new DbNode <Button>(btn, 62, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 63:
            {
                btn.Image = Properties.Resources.亮右转灯;
                DbNode <Button> a = new DbNode <Button>(btn, 63, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 64:
            {
                btn.Image = Properties.Resources.流水灯;
                DbNode <Button> a = new DbNode <Button>(btn, 64, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 65:
            {
                btn.Image = Properties.Resources.停止灯;
                DbNode <Button> a = new DbNode <Button>(btn, 65, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 66:
            {
                btn.Image = Properties.Resources.顺时针亮一圈;
                DbNode <Button> a = new DbNode <Button>(btn, 66, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 67:
            {
                btn.Image = Properties.Resources.逆时针亮一圈;
                DbNode <Button> a = new DbNode <Button>(btn, 67, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 68:
            {
                btn.Image = Properties.Resources.小灯闪烁一次;
                DbNode <Button> a = new DbNode <Button>(btn, 68, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }

            case 69:
            {
                btn.Image = Properties.Resources.摩斯电码__2_;
                DbNode <Button> a = new DbNode <Button>(btn, 69, 0);
                k[l].AddBefore(a, k[l].Count() - 1);
                break;
            }
            }
        }
コード例 #11
0
 public DbNode(Button data)
 {
     this._data = data;
     this._prev = null;
     this._next = null;
 }
コード例 #12
0
        /// <summary>
        /// 打印双向链表的每个元素
        /// </summary>
        public string Print()
        {
            string          s       = "";
            DbNode <Button> current = new DbNode <Button>();

            current = this.Head;
            bool            a = false, b = false, c = false, d = false;
            DbNode <Button> recycle1 = new DbNode <Button>();
            DbNode <Button> recycle2 = new DbNode <Button>();
            DbNode <Button> recycle3 = new DbNode <Button>();
            DbNode <Button> recycle4 = new DbNode <Button>();

            while (current != null)
            {
                if (current.Type != 10 && current.Type != 11 && current.Type != 12 && current.Type != 13 && current.Type != 20 && current.Type != 21 && current.Type != 22 && current.Type != 23)
                {
                    s      += current.Type + "        " + current.Time + "\r\n";
                    current = current.Next;
                }
                else
                {
                    if (current.Type == 10)
                    {
                        a        = true;
                        recycle1 = current.Next;
                        current  = current.Next;
                    }
                    if (current.Type == 11)
                    {
                        b        = true;
                        recycle2 = current.Next;
                        current  = current.Next;
                    }
                    if (current.Type == 12)
                    {
                        c        = true;
                        recycle3 = current.Next;
                        current  = current.Next;
                    }
                    if (current.Type == 13)
                    {
                        d        = true;
                        recycle4 = current.Next;
                        current  = current.Next;
                    }
                    if (current.Type == 20)
                    {
                        if (a == true)
                        {
                            a       = false;
                            current = recycle1;
                            s      += current.Type + "        " + current.Time + "\r\n";
                            current = current.Next;
                        }
                        else
                        {
                            current = current.Next;
                        }
                    }
                    if (current.Type == 21)
                    {
                        if (b == true)
                        {
                            b       = false;
                            current = recycle2;
                            s      += current.Type + "        " + current.Time + "\r\n";
                            current = current.Next;
                        }
                        else
                        {
                            current = current.Next;
                        }
                    }
                    if (current.Type == 22)
                    {
                        if (c == true)
                        {
                            c       = false;
                            current = recycle3;
                            s      += current.Type + "        " + current.Time + "\r\n";
                            current = current.Next;
                        }
                        else
                        {
                            current = current.Next;
                        }
                    }
                    if (current.Type == 23)
                    {
                        if (d == true)
                        {
                            current = recycle4;
                            s      += current.Type + "        " + current.Time + "\r\n";
                            current = current.Next;
                        }
                        else
                        {
                            current = current.Next;
                        }
                    }
                }
            }

            return(s);
        }
コード例 #13
0
 /// <summary>
 /// 清空双链表
 /// </summary>
 public void Clear()
 {
     this.Head = null;
 }
コード例 #14
0
 //构造函数
 public DbLinkedList()
 {
     Head = null;
 }
コード例 #15
0
 public DbNode()
 {
     this._data = default(Button);
     this._prev = null;
     this._next = null;
 }