Quelqu'un peut-on me laisser savoir par certains code comment puis-je appeler une fonction située dans la classe de formulaire d'une autre classe?
Certains code seront de grande aide! P>
Merci P>
EDIT: Ceci est mon code actuel P>
public partial class frmMain : Form
{
//*******Class Instances*******
ImageProcessing IP = new ImageProcessing();
//********************
public void StatusUpdate(string text)
{
tlsStatusLabel.Text = text;
}//
public frmMain()
{
InitializeComponent();
}//
}
class ImageProcessing
{
private void UpdateStatusLabel(frmMain form, string text)
{
form.StatusUpdate(text);
}//
private UpdateLabel()
{
UpdateStatusLabel(frmMain, "Converting to GreyScale");
}
}
5 Réponses :
Vous devrez créer une nouvelle instance de formulaire, puis l'appeler à l'aide de l'instance. Si c'est statique, vous pouvez simplement l'appeler en appelant Form1.Method (). Je vous suggère de déplacer cette méthode courante à une autre classe. P> Si La méthode courante est utilisée dans l'interface utilisateur, puis créer une classe de formulaire de base et dériver toutes vos formulaires avec cette classe de formulaire de base. Maintenant, déplacez cette méthode courante sur la forme de base. Vous pouvez ensuite utiliser la méthode de l'un quelconque du formulaire dérivé de celui-ci. P> p>
C'est assez facile. Soit transmettre une référence à un formulaire existant dans l'appel, soit créer une nouvelle instance de votre formulaire, puis appelez votre méthode, tout comme n'importe quel autre: ou en faites une méthode statique pour que vous ne puissiez pas 't doit créer une instance (mais elle ne pourra pas modifier Windows de formulaire ouverte). P> update strong> p> Il ressemble à la classe d'imageProcessing ne fait jamais référence à la forme. Je modifierais légèrement votre code: p> puis un petit tweek dans le constructeur de formulaire: p>
Merci, mais comment j'appellerais la fonction DosomoqLeelse? Mon problème est de taper le "formulaire"? J'essaie d'insérer le nom du formulaire mais je reçois une erreur que le nom du formulaire est un type mais utilisé comme variable
@Mouthpiec - Si vous publiez une partie de votre code existant, nous pourrions peut-être vous donner une meilleure idée de ce que vous devez faire.
Postez votre code, vous devez faire quelque chose de très faux pour obtenir cette erreur du compilateur.
Merci Justin ... toujours ne fonctionne toujours pas :( Je reçois une erreur dans le traitement de l'image IP = nouveau traitement de l'image (ceci); dire que "ceci" est un mot inconnu. (Mais ce constructeur doit avoir 1 argument.
Si la méthode n'est pas liée à l'UI, une fois de votre exemple, je comprends que ce n'est pas le cas, vous pouvez créer une autre classe qui contiendra cette méthode, puis l'utiliser dans votre classe de formulaire et dans tous les autres endroits où vous souhaitez Utilisez-le. P>
Un moyen rapide et sale consiste à créer une référence du formal de laforme de votre programme.cs comme indiqué ci-dessus.
Vous pouvez également créer une classe statique pour gérer les appels à votre formulaire principal: P> XXX PRE>
Mettez ce qui précède dans votre fichier MainForm.cs à l'intérieur de l'espace de noms, mais séparé de votre classe MainForm. puis lorsque vous initiez le MainForm.cs Ajoutez cette poignée d'événement à votre formulaire. P>
Ensuite, mettre cet événement appelez dans votre classe principale MainForm.cs. P> UpdateStatusBarMessage.ShowStatusMessage ("Hello World!");
Merci! J'ai essayé votre option mais je reçois une erreur dans "OnNewStatusMessage (Strmessage);" dire que OnNewStatusMessage n'est pas défini sur une instance d'un objet
Je voulais juste dire Ty Ty Ty Ty Ty Ty Ty Ty Ty Lol. Étant donné que j'ai appris à écrire mes propres contrôles et à les utiliser et à ne pas encombrer la forme principale M y avec du code qui ne serait pas là, ce fil m'a aidé à Soooooooooooooooooo de nombreuses bonnes manières. Bravo!
Merci pour la solution élégante! C'était très facile à comprendre et j'ai pu obtenir ce travail sans attelage. :)
Vous pouvez le faire de manière simple:
1- Créer une classe publique et définir une variable statique publique comme celle-ci: p> 2- dans la fonction de charge sur le formulaire Écrivez cette ligne: p> 3- Enfin, dans votre classe personnalisée, vous pouvez appeler toutes les fonctions publiques à l'intérieur du formulaire: P> public class MyClass
{
public void Func1()
{
Globals.form.DoSomthing();
}
}
Dupliqué possible de Composant de formulaire d'accès d'une autre classe