br Posted March 16, 2012 Report Share Posted March 16, 2012 boa noite desenvolvi um tabuleiro de xadrez através de uma matriz e de picturebox agora queria ao clicar em cima de um dos quadrados me desse as coordenadas ou alguma referencia à sua posição. alguem me pode ajudar? cumprimentos o código é o seguinte: int[][] matriz; PictureBox[][] tabuleiro; public Form1() { InitializeComponent(); iniciar(); } public void iniciar() { matriz = new int[8][]; tabuleiro= new PictureBox[8][]; for (int i = 0; i < 8; i++) { matriz[i] = new int[8]; tabuleiro[i] = new PictureBox[8]; } int lx=0, ly=0; bool flag_inicio=true; for (int x = 0; x < 8; x++) { bool flag = flag_inicio; for (int y = 0; y < 8; y++) { matriz[x][y] = flag == true ? -1 : 0; flag = !flag; } flag_inicio = !flag_inicio; } for (int x = 0; x < 8; x++) { lx = 0; for (int y = 0; y < 8; y++) { tabuleiro[x][y] = new PictureBox(); tabuleiro[x][y].Location = new Point(ly, lx); tabuleiro[x][y].Size = new System.Drawing.Size(50, 50); tabuleiro[x][y].SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; if (matriz[x][y] == 0) tabuleiro[x][y].Image = Properties.Resources.branco; if (matriz[x][y] == 1) tabuleiro[x][y].Image = Properties.Resources.preto; Controls.Add(tabuleiro[x][y]); pictureBox1.Controls.Add(tabuleiro[x][y]); lx += 50; } ly += 50; } } } } Link to comment Share on other sites More sharing options...
renafi Posted March 16, 2012 Report Share Posted March 16, 2012 Queres mesmo as coordenadas onde clicaste, ou só qual a picturebox que clicaste? Se for a segunda opção, é possível veres qual é a picturebox, o problema é que não tens nenhuma identificação sobre cada picturebox. Mas vais fazer o seguinte: primeiro tens de adicionar o evento click ao objecto de cada picturebox que criares. private void teste_Load(object sender, EventArgs e) { // local onde crias o evento quando criares o objecto PictureBox p = new PictureBox(); p.Name = "teste"; p.Click += new EventHandler(p_Click); } No evento, descobres qual é a picturebox. É por isso que sugiro que identifiques cada picturebox void p_Click(object sender, EventArgs e) { PictureBox p = (PictureBox)sender; // fazes uma pesquisa pelo nome da PictureBox } Se precisares de mais ajuda, diz Oracle Certified Professional - AdministraçãoOracle Certified Professional - Pl/sqlMCPD - Microsoft Certified Professional DeveloperMCTS - Microsoft Certified Technology Specialist Link to comment Share on other sites More sharing options...
br Posted March 16, 2012 Author Report Share Posted March 16, 2012 sim quero so as coordenadas de cada picturebox! adicionei o nome e o evento a cada uma. e fiz assim: void tabuleiro_click(object sender, EventArgs e) { pbTabuleiro = (PictureBox)sender; label1.Text = "clicou em "+pbTabuleiro.Name; } no nome eu pus assim ("t"+x+","+y) mas eu agora preciso de tirar o x e o y para usar noutros métodos Link to comment Share on other sites More sharing options...
softklin Posted March 16, 2012 Report Share Posted March 16, 2012 Em cada PictureBox, tens a propriedade Tag que te permite guardar lá meta-dados. Podes por lá as coordenadas, em vez de as extraíres do nome. Por exemplo, na criação de cada PictureBox tabuleiro[x][y] = new PictureBox(); // resto das definições aqui... tabuleiro[x][y].Tag = new int[] {x, y}; Ao tentar ler os dados, no evento do clique, basta-te aceder à propriedade Tag e obteres de lá os dados. Não te esqueças de fazer um cast para array de inteiros, porque essa propriedade tem como tipo object: void tabuleiro_click(object sender, EventArgs e) { pbTabuleiro = (PictureBox)sender; int[] cord = (int[])pbTabuleiro.Tag; label1.Text = "Coordenadas: (" + cord[0] + "," + cord[1] + ")"; } Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now