【问题标题】:Navigating through a grid of panels在面板网格中导航
【发布时间】:2017-09-11 16:13:15
【问题描述】:

我正在尝试使用一个小网格面板和四个方向按钮在 C# 中创建一个小项目,如下所示:

但我不知道如何使用这些面板创建简单的导航系统。 “字符”只是一个彩色面板。所有面板都以它们前面的坐标命名(p11 到 p66) 有没有办法执行某种功能,可以获取“字符”的位置并在同一位置为面板着色?

示例

int coords = 21;

private void Up_Click(object sender, EventArgs e)
{
    Move(10);
}

Void Move(int coordchange)
{
    pcoords.BackColor = Color.White;
    coords = coords + coordchange
    pcoords.BackColor = Color.Black;
}

pcoords 部分应该是您当前所在的面板。那是我不知道如何制作的部分。

【问题讨论】:

    标签: c# winforms panel


    【解决方案1】:
    public class Panels
    {
         public Panel[, ] PanelsArray=new Panel[6,6] ;
         int xcoordinate;
         int ycoordinate;
         public Panel CurrentPanel{get{return PanelsArray[xcoordinate,ycoordinate];}
         public void MoveUp()
         {
             BeforeMove();
             if(ycoordinate>0) ycoordinate--;
             OnMove();
         }
         //declare MoveDown, MoveLeft and MoveRight similiarly
         ...
         private void BeforeMove()
         {
             CurrentPanel.BackColor=Color.White;
         }
         private void OnMove()
         {
            CurrentPanel.BackColor=Color.Black;
         }
    }
    

    然后在表单类中

    public partial class Form1 : Form
    {
        public Panels Panels=new Panels();
        public Form1()
        {
                InitializeComponent();
                Panels.PanelsArray[0,0]=p00;
                PanelsPanelsArray[1,0]=p10;
                Panels.PanelsArray[2,0]=p20;
                //...
                Panels.PanelsArray[5,5]=p55;
    
        }
    ...
    

    您可能需要添加代码来设置起始颜色和坐标。

    【讨论】:

    • 感谢您提供的示例,但这究竟是如何工作的?一般来说,我对编程有点陌生,所以我不知道在我的程序中放置在哪里或它到底做了什么。谢谢你的回答。
    • @TheFoun 面板类将所有面板存储在一个二维数组(面板)中。 xcoordinate 和 Ycoordinate 存储当前面板的 x 和 y 坐标。 CurrentPanel 属性从 x 和 y 坐标找到数组中的当前面板并将其返回。 MoveUp 函数更改 y 坐标,beforeMove 和 OnMove 函数确保 CurrentPanel 的颜色正确。在您向我展示您的完整代码之前,我无法向您展示如何将其放入您的代码中。
    • 这只是一个带有四个按钮事件的基本 winforms 代码(我知道我必须将 BeforMove、Direction 和 OnMove 函数放入按钮事件中。imgur.com/a/onw7j
    • @TheFoun。即便如此,如果您显示您正在编写此代码的 winforms(部分)类,我将能够为您提供最好的帮助。
    • @TheFoun。如果您向我展示包含 winforms 类和事件处理程序等的代码,我将能够为您提供最好的帮助。
    猜你喜欢
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 2017-03-13
    • 2020-01-27
    • 1970-01-01
    相关资源
    最近更新 更多