Classe dérivée et override de méthode

Signaler
Messages postés
36
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
18 juillet 2008
-
Messages postés
36
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
18 juillet 2008
-
Bonjour à tous,

Je suis nouveau sur le forum, et aussi débutant en C#. Après pas mal de recherches qui m ont aidé à comprendre certains principes, je continue à nager sur le même problème, je pense qu il est très simple malgré la longeur de mes explications:

Je bosse sur Visual C# 2005 Express

J ai une form nommée SapSolidedge sur laquelle j'ai groupé certains contrôles (textbox, combobox etc.) dans des GroupBox. La voila:

Voila ce que je veux arriver à faire:

- Je lance le programme, la form SapSolidedge est chargée OK
- Seule la GroupBox "Tipo de archivo" (je travaille en Argentine..) est visible OK
- Aucun des RadioButton n'est coché OK
- Je coche par exemple "Pieza": les GroupBox Obra, Unidad, Equipo, GRF et Plano, Código SAP et "Confirmación de..." doivent être visible instantanément, les autres non ERROR

Je vous explique la méthode que je voudrais employer et qui me pose probème:
Quel que soit le RadioButton coché, les GroupBox Obra, Unidad, Equipo, GRF, Plano et "Confirmación..." doivent être visible. Donc je veux mettre tout ca dans une methode mere "MostrarSobreForm" (MontrerSurForm en francais)

Par contre, si Pieza est coché: Codigo SAP doit être visible aussi
si Conjunto est coché: Rien de plus que la methode mere.
si Conjunto de convenio: "Descripción del archivo" doit être visible
si Plano est coché: Rien de plus que la methode mere

D'où mon idée de faire deux méthode filles "MostrarSobreForm" qui montrent les GroupBox communs à tous (Obra, Unidad, Equipo, GRF et Plano) en appelant la methode mere, et montrent aussi ce qui manque (Codigo SAP si "Pieza est coché par exemple)

Je sais que je dois utiliser "override", "base.MostrarSobreForm", "virtual" et ce genre de choses, mais j ai encore un bug.

LE CODE DE LA CLASSE TipoArchivo
namespace Sap_SolidEdge
{

public
class
TipoArchivo
{

/* Muestra los GrupoBox apropriados sobre la Form según el
tipo de archivo (plano, pieza etc.) elegido */
public
virtual
void MostrarSobreForm(
SapSolidedge form)
{
form.gbxNombrarArchivo.Visible =
true;
form.gbxObra.Visible =
true;
form.gbxUnidad.Visible =
true;
form.gbxEquipo.Visible =
true;
form.gbxGrupoFab.Visible =
true;
form.gbxPlano.Visible =
true;
form.gbxCodigoSap.Visible =
false;
form.gbxDescripcionArchivo.Visible =
false;
form.gbxConfirmacionCreacionArchivo.Visible =
true;
}

}
}

LE CODE DE MA FORM,
namespace Sap_SolidEdge
{

public
partial
class
SapSolidedge :
Form
{

public SapSolidedge()
InitializeComponent();
}

// Carga de la Form
private
void frmSapSolidedge_Load(
object sender,
EventArgs e)
{
}



// Si elige el archivo Pieza / Si l utilisateur coche la RadioButton Pieza, crée un objet
// pieza de la classe Pieza, elle meme derivee dela classe virtuelle TipoArchivo
private
void rbPieza_CheckedChanged(
object sender,
EventArgs e)
{

Pieza pieza =
new
Pieza();

pieza.MostrarSobreForm(form); BUG: "le nom form n'existe pas dans le contexte actuel"

}

}
}

CLASSE ETENDU Pieza, fille de TipoArchivo
namespace Sap_SolidEdge
{

class
Pieza :
TipoArchivo
{

/* Muestra los GrupoBox apropriados sobre la Form según el
tipo de archivo (plano, pieza etc.) elegido */
public
override
void MostrarSobreForm(
SapSolidedge form)
{
form.gbxCodigoSap.Visible =
true;
}
}
}

Voila, je sais, j ai beaucoup ecrit, mais comme je debute, je suis perdu et je sais pas de quoi vous avez besoin pour me filer un coup de main...

Merci d avance a tout ceux qui liront mon message !

1 réponse

Messages postés
36
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
18 juillet 2008

Bon, je me suis répondu seul.

Il fallait juste remplacer à l'endroit du bug:
pieza.MostrarSobreForm(form) par :
pieza.MostrarSobreForm(this)

Voila, ca prouve bien que je debute !