示例#1
0
        private void RowColumnNumTextChanged(object sender, EventArgs e)
        {
            if (int.TryParse(NumRowsEntry.Text, out row) && int.TryParse(NumColumnsEntry.Text, out col) && row > 0 && col > 0)
            {
                this.Grid.Controls.Clear();
                buttons.Clear();
                start = new ManagedPoint(-1, -1);
                end   = new ManagedPoint(-1, -1);

                graph = ManagedGridHelper.CreateGrid(col, row);
                int ID = 0;
                for (int i = 0; i < row; ++i)
                {
                    for (int j = 0; j < col; ++j)
                    {
                        Button button = new Button();
                        buttons.Add(button);
                        this.Grid.Controls.Add(button);
                        button.Dock     = System.Windows.Forms.DockStyle.Top;
                        button.Location = new System.Drawing.Point(0, 0);
                        button.Name     = ID.ToString();
                        ++ID;
                        button.UseVisualStyleBackColor = true;
                        button.MouseDown += Button_MouseClick;
                    }
                }

                horizontalTolerance = buttons[0].Margin.Horizontal * row;
                verticalTolerance   = buttons[0].Margin.Vertical * col;

                UpdateButtons();
            }
            else
            {
                NumRowsEntry.Text    = row.ToString();
                NumColumnsEntry.Text = col.ToString();
            }
        }
示例#2
0
        private void Button_MouseClick(object sender, MouseEventArgs e)
        {
            switch (e.Button)
            {
            case MouseButtons.Left:
            {
                Button b = sender as Button;
                int    x, y;
                GetButtonGraphCoords(b, out x, out y);

                if (graph[x, y].Type != ManagedNodeType.Start)
                {
                    if (start != invalidPoint)
                    {
                        graph[start.X, start.Y].Type = ManagedNodeType.Normal;
                    }
                    graph[x, y].Type = ManagedNodeType.Start;
                    start            = new ManagedPoint(x, y);
                }
                else
                {
                    graph[x, y].Type = ManagedNodeType.Normal;
                    start            = invalidPoint;
                }
            }
            break;

            case MouseButtons.Right:
            {
                Button b = sender as Button;
                int    x, y;
                GetButtonGraphCoords(b, out x, out y);

                if (graph[x, y].Type != ManagedNodeType.End)
                {
                    if (end != invalidPoint)
                    {
                        graph[end.X, end.Y].Type = ManagedNodeType.Normal;
                    }
                    graph[x, y].Type = ManagedNodeType.End;
                    end = new ManagedPoint(x, y);
                }
                else
                {
                    graph[x, y].Type = ManagedNodeType.Normal;
                    end = invalidPoint;
                }
            }
            break;

            case MouseButtons.Middle:
            {
                Button b = sender as Button;
                int    x, y;
                GetButtonGraphCoords(b, out x, out y);
                ManagedPoint Point = new ManagedPoint(x, y);
                if (graph[x, y].Type == ManagedNodeType.Wall)
                {
                    graph[x, y].Type = ManagedNodeType.Normal;
                }
                else
                {
                    graph[Point].Type = ManagedNodeType.Wall;
                    if (start == Point)
                    {
                        start = invalidPoint;
                    }
                    else if (end == Point)
                    {
                        end = invalidPoint;
                    }
                }
            }
            break;
            }

            UpdateTextures();
        }