Δυναμικός χειρισμός components στο Visual studio.net 2003,2005

0

Χειρισμός πολλών ίδιου τύπου Components μέσω πίνακα αντικειμένων και γεγονότων μέσω μόνο μίας συνάρτησης σε Visual CSharp (C#) και Visual Basic 2003,2005

Θυμάστε πόσο απλά μπορούσατε να δημιουργήσετε πολλά ίδιου τύπου χειριστήρια και να τα χειριστείτε με ένα κοινό όνομα και κοινά γεγονότα, χρησιμοποιώντας απλά έναν δείκτη; π.χ. picturebox[0], picturebox[1], picturebox[2] κτλ. και με μία συνάρτηση τύπου Pirture_click(index as integer) να γράψετε κοινό κώδικα για όλα τα χειριστήρια που επιθυμείτε; Όλα αυτά τα κάνατε στο Visual studio 6. Πώς γίνεται όμως αυτό στο Visual studio 2003 ή 2005;

Δυστυχώς τα δύο τελευταία πακέτα δεν επιτρέπουν να ορίσετε με το ίδιο όνομα πολλά χειριστήρια και έτσι πρέπει να γράψετε λίγο παραπάνω κώδικα (αν βέβαια έχετε πολλά όμοια χειριστήρια και θέλετε να αποφύγετε πολλές περισσότερες γραμμές κώδικα)

Θα χρησιμοποιήσουμε την C# για να δούμε πώς αυτό πραγματοποιείται

using System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;

namespace multi_panel

{

public partial class Form1 : Form

{

//Δημιουργία πίνακα αντικειμένων τύπου PictureBox

PictureBox[] m_pic = new PictureBox[5];

public Form1()
{
InitializeComponent();

//Κάθε αντικείμενο του πίνακα “δείχνει” σε μία εικόνα

m_pic[0] = pictureBox1;
m_pic[1] = pictureBox2;
m_pic[2] = pictureBox3;
m_pic[3] = pictureBox4;
m_pic[4] = pictureBox5;

}

private void bt_make_Click(object sender, EventArgs e)

{

//Ο παρακάτω κώδικας καθορίζει την εικόνα του κάθε PictureBox

//και δημιουργεί ένα γεγονός Click για όλες της εικόνες

//Έτσι κάθε φορά που κάνετε Click σε μία εικόνα καλείται ο ίδιος κώδικας

int c = 0;

foreach (PictureBox pc in m_pic) //διατρεξε όλες τις εικόνες που έχουν //οριστεί στον πίνακα m_pic

{

c++;

//όρισε την είκονα του απο τον ένα αρχείο image1.jpg,image2.jpg,image3.jpg κ.τ.λ.

pc.BackgroundImage = Image.FromFile(“image” + c.ToString() + “.jpg”);

//Δημιούργησε ένα συμβάν για κάθε αντικείμενο

pc.Click += new System.EventHandler(this.my_click);

}

}

//κάλείται απο τα χειριστήρια που έχουν οριστεί να καλούν αυτή την συνάρτηση

private void my_click(object sender, System.EventArgs e) {

//μετατροπή του αντικειμένου sender σε PictureBox

PictureBox pc = (PictureBox)sender;

//Διέτρεξε όλα τα αντικείμενα του πίνακα m_pic

for (int a = 0; a < m_pic.Length; a++)
{

//όταν βρεθεί πιο απο αυτά πατήθηκε εμφάνισε ένα σχετικό μήνυμα

if (pc == m_pic[a]) MessageBox.Show(Πατήθηκε το + (a+1).ToString() + εικονίδιο);

}

}

}

}

Blog Widget by LinkWithin

Γράψε ένα σχόλιο

© 2012 DigitalNews. All rights reserved.