Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2738 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Comment connaitre le type d'un control en VB .Net ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment connaitre le type d'un control en VB .Net ?

n°662676
Rarazor
Posté le 04-03-2004 à 12:30:15  profilanswer
 

Salut à tous,
 
J'ai une question concernant les controles sous VB .Net.
Dans ma fenetre, j'ai différent type de control: des labels, des listes, etc.
 
Avec la boucle suivante:
 

Code :
  1. For I = 0 To Me.Controls.Count() - 1
  2. ..........
  3. Next I


 
... j'aimerai pouvoir 'passé' un à un les controles de ma fenêtre et si ce control est de type label, j'aimerai modifié le contenu de ce label. Mais je n'arrive pas à trouver comment savoir si tel ou tel control est de type label.
 
Merci pour votre aide.
Raoul

mood
Publicité
Posté le 04-03-2004 à 12:30:15  profilanswer
 

n°662743
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-03-2004 à 13:08:17  profilanswer
 

Avec l'opérateur TypeOf, regarde la doc du framework.

n°662779
Rarazor
Posté le 04-03-2004 à 13:42:36  profilanswer
 

Merci pour ton aide !
 
ça donne donc ceci:

Code :
  1. Dim I
  2. For I = 0 To Me.Controls.Count() - 1
  3.   If TypeOf Me.Controls(I) Is Label Then
  4.     Me.Controls(I).Text = "I"
  5.   End If
  6. Next I


 
J'ai 2 autres problèmes, si tu peux également m'éclairer:
- Comment rendre un label transparent ? Sous vb6 c'était simple mais la je trouve pas !
- J'ai créé un usercontrol ! Dans ce usercontrol, j'ai une image et un label. Ensuite, quand je vais dans ma fenêtre (form1), je rajoute 3 controls du type que je viens de créer. Mais dans les propriétés du control, il ne m'est pas possible de modifier le label et l'image  qui se trouve dans mon usercontrol ! Est-ce que je dois obligatoirement remplir ces champs via du code ? Càd:
 

Code :
  1. usercontrol1.label.text = "blablabla"
  2. usercontrol2.label.text = "salut"
  3. usercontrol3.label.text = "bonjour"


Message édité par Rarazor le 04-03-2004 à 13:44:53
n°662822
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-03-2004 à 14:03:42  profilanswer
 

rarazor a écrit :


- Comment rendre un label transparent ? Sous vb6 c'était simple mais la je trouve pas !
Déjà, tu dois commencer par le rendre transparent via la propriété BackColor (label1.BackColor = System.Drawing.Color.Transparent). Mais ça ne le rendra transparent que vis à vis de son conteneur, qui est normalement une Form. Si tu veux le rendre transparent pour rendre visible une image sur la Form, le mieux est de placer cette image dans un Panel (via sa propriété BackgroundImage), puis de positionner le Label sur le Panel
- J'ai créé un usercontrol ! Dans ce usercontrol, j'ai une image et un label. Ensuite, quand je vais dans ma fenêtre (form1), je rajoute 3 controls du type que je viens de créer. Mais dans les propriétés du control, il ne m'est pas possible de modifier le label et l'image  qui se trouve dans mon usercontrol ! Est-ce que je dois obligatoirement remplir ces champs via du code ?
Il faut que tu crées des propriétés avec des accesseurs get/set dans ton usercontrol qui correspondront au label et à l'image. Pour les faire apparaitre dans le Designer, tu dois utiliser les attributs Description, Category et éventuellement DefaultValue. Voir la doc du framework pour plus d'infos.
Pour info, je suis en train de préparer un tuto sur la création de controles utilisateurs en C#, ça pourra certainement te servir. Jette un oeil au forum de temps en temps, ça devrait bientot être prêt.
 

n°662883
Rarazor
Posté le 04-03-2004 à 14:30:04  profilanswer
 

je ne comprend pas bien pour mon usercontrol...
As-tu un exemple concret sous la main ?
Comment faire ceci "Il faut que tu crées des propriétés avec des accesseurs get/set dans ton usercontrol" ?


Message édité par Rarazor le 04-03-2004 à 14:30:57
n°662904
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-03-2004 à 14:40:47  profilanswer
 

rarazor a écrit :

je ne comprend pas bien pour mon usercontrol...
As-tu un exemple concret sous la main ?


J'en ai, mais en C#.
Par exemple, tu créés un controle qui trace une fractale, dont tu désires modifier le nombte d'itérations via le Designer.
- Tu créés une variable membre private. Cette variable ne sera pas accessible de l'extérieur :

Code :
  1. private int iterations = 512;


- Néanmoins, tu souhaites pouvoir la modifier à partir des clients qui utiliseront ton controle, et par le Designer. Tu dois donc la transformer en propriété :

Code :
  1. [Description("Nombre d'itérations." )]
  2. [Category("Paramètres" )]
  3. [DefaultValue(512)]
  4. public int Iterations
  5. {
  6.    get {return iterations;}
  7.    set {iterations = value;}
  8. }


L'attribut Description correspond à la description qui apparaitra dans la fenêtre de propriétés, l'attribut Category correspond à la catégorie (Appearance, Behavior, etc... Paramètres ici) et le DefaultValue correspond à la valeur par défaut de l'attribut, celle qui n'apparaitra pas en gras dans la fenêtre de propriétés.
Le get te permet de lire la propriété, et le set te permet d'y écrire.
En VB, l'équivalent serait :

Code :
  1. Private iterations As Int
  2. <Description("Nombre d'itérations." )>
  3. <Category("Paramètres" )>
  4. <DefaultValue(512)>
  5. Public Property Iterations() As Int
  6.    Get
  7.       Return iterations
  8.    End Get
  9.    Set
  10.       iterations = Value
  11.    End Set
  12. End Property


 
Attends le tuto que je suis en train de finir, ça te paraitra beaucoup plus clair.


Message édité par Harkonnen le 04-03-2004 à 14:41:38
n°662909
Rarazor
Posté le 04-03-2004 à 14:43:23  profilanswer
 

Merci encore pour ton aide !

n°662924
Rarazor
Posté le 04-03-2004 à 14:48:57  profilanswer
 

Il me dit que Iteration est déja déclaré :-( ... Bon je vais attendre ton tutoriel !

n°662929
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-03-2004 à 14:50:28  profilanswer
 

rarazor a écrit :

Il me dit que Iteration est déja déclaré :-( ... Bon je vais attendre ton tutoriel !


Euh, oui, sous VB, les noms de variables ne sont pas case sensitive il me semble.
Essaie plutot :
 

Code :
  1. Public Property NbIter() As Int
  2.   Get
  3.      Return iterations
  4.   End Get
  5.   Set
  6.      iterations = Value
  7.   End Set
  8. End Property

n°662944
Rarazor
Posté le 04-03-2004 à 14:57:59  profilanswer
 

J'ai aussi des problèmes avec ça:
  <Description("Nombre d'itérations." )>
  <Category("Paramètres" )>
  <DefaultValue(512)>  
Il n'aime pas la syntaxe...

mood
Publicité
Posté le 04-03-2004 à 14:57:59  profilanswer
 

n°662947
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-03-2004 à 14:59:49  profilanswer
 

Regarde dans la doc du framework, les mots clés DescriptionAttribute, CategoryAttribute, DefaultValueAttribute, il y a des exemples d'utilisation en VB (je connais très peu VB.NET)

n°662968
Rarazor
Posté le 04-03-2004 à 15:18:02  profilanswer
 

En faite, il ne reconnaissait pas Description, Category et DefaultValue parce qu'il manquait "Imports System.ComponentModel" en haut de mon code...
Tout marche maintenant ! Merci ;-)
Le code exact pour VB .Net, c'est ceci:

Code :
  1. <Description("Nombre d'itérations." ), Category("Paramètres" ), DefaultValue(512)> _
  2.     Public Property NbIter() As Integer
  3.         Get
  4.             Return iterations
  5.         End Get
  6.         Set(ByVal Value As Integer)
  7.             iterations = Value
  8.         End Set
  9.     End Property

n°940458
BGhalmi
Posté le 07-01-2005 à 16:53:57  profilanswer
 

Salut à tous,
 
<form id="frmTest" method="post" runat="server">
   <table width="100%" border="0">
      <tr>
         <td>  Repeater control with Paging functionality</td>
      </tr>
      <tr>
         <td>  <asp:label id="lblCurrentPage" runat="server"></asp:label></td>
      </tr>
      <tr>
         <td>  <asp:button id="cmdPrev" runat="server" text=" << " onclick="cmdPrev_Click"></asp:button>
             <asp:button id="cmdNext" runat="server" text=" >> " onclick="cmdNext_Click"></asp:button></td>
      </tr>
   </table>
   <table border="1">
      <asp:repeater id="repeaterItems" runat="server">
         <itemtemplate>
            <tr>
               <td>  <b><%# DataBinder.Eval(Container.DataItem, "ItemName" ) %></b></td>
               <td>  <b><%# DataBinder.Eval(Container.DataItem, "ItemDescription" ) %></b></td>
               <td>  <b><%# DataBinder.Eval(Container.DataItem, "ItemPrice" ) %></b></td>
               <td>  <b><%# DataBinder.Eval(Container.DataItem, "ItemInStock" ) %></b></td>
            </tr>
         </itemtemplate>
      </asp:repeater>
   </table>
         
   <p> </p>
   <asp:Button runat="server" Text="Cause a Postback" />
</form>
 
 
<script runat="server" language="C#">
 
      public int CurrentPage
      {
         get
         {
            // look for current page in ViewState
            object o = this.ViewState["_CurrentPage"];
            if (o == null)
               return 0;   // default to showing the first page
            else
               return (int) o;
         }
 
         set
         {
            this.ViewState["_CurrentPage"] = value;
         }
      }
 
      private void Page_Load(object sender, System.EventArgs e)
      {
         // Call the ItemsGet method to populate control,
         // passing in the sample data.
         ItemsGet();
      }
 
      private void ItemsGet()
      {
         // Read sample item info from XML document into a DataSet
         DataSet Items = new DataSet();
         Items.ReadXml(MapPath("Items.xml" ));
 
         // Populate the repeater control with the Items DataSet
         PagedDataSource objPds = new PagedDataSource();
         objPds.DataSource = Items.Tables[0].DefaultView;
         objPds.AllowPaging = true;
         objPds.PageSize = 3;
 
         objPds.CurrentPageIndex = CurrentPage;  
 
         lblCurrentPage.Text = "Page: " + (CurrentPage + 1).ToString() + " of "  
            + objPds.PageCount.ToString();
 
         // Disable Prev or Next buttons if necessary
         cmdPrev.Enabled = !objPds.IsFirstPage;
         cmdNext.Enabled = !objPds.IsLastPage;
 
         repeaterItems.DataSource=objPds;
         repeaterItems.DataBind();
      }
 
      private void cmdPrev_Click(object sender, System.EventArgs e)
      {
         // Set viewstate variable to the previous page
         CurrentPage -= 1;
 
         // Reload control
         ItemsGet();
      }
 
      private void cmdNext_Click(object sender, System.EventArgs e)
      {
         // Set viewstate variable to the next page
         CurrentPage += 1;
 
         // Reload control
         ItemsGet();
      }
</script>

n°940463
BGhalmi
Posté le 07-01-2005 à 16:57:03  profilanswer
 

Salut à tous,
 
Je veux traduire ce petit code de c# en vb.net. Merci de votre aide.
 
<form id="frmTest" method="post" runat="server">
   <table width="100%" border="0">
      <tr>
         <td>  Repeater control with Paging functionality</td>
      </tr>
      <tr>
         <td>  <asp:label id="lblCurrentPage" runat="server"></asp:label></td>
      </tr>
      <tr>
         <td>  <asp:button id="cmdPrev" runat="server" text=" << " onclick="cmdPrev_Click"></asp:button>
             <asp:button id="cmdNext" runat="server" text=" >> " onclick="cmdNext_Click"></asp:button></td>
      </tr>
   </table>
   <table border="1">
      <asp:repeater id="repeaterItems" runat="server">
         <itemtemplate>
            <tr>
               <td>  <b><%# DataBinder.Eval(Container.DataItem, "ItemName" ) %></b></td>
               <td>  <b><%# DataBinder.Eval(Container.DataItem, "ItemDescription" ) %></b></td>
               <td>  <b><%# DataBinder.Eval(Container.DataItem, "ItemPrice" ) %></b></td>
               <td>  <b><%# DataBinder.Eval(Container.DataItem, "ItemInStock" ) %></b></td>
            </tr>
         </itemtemplate>
      </asp:repeater>
   </table>
         
   <p> </p>
   <asp:Button runat="server" Text="Cause a Postback" />
</form>
 
 
<script runat="server" language="C#">
 
      public int CurrentPage
      {
         get
         {
            // look for current page in ViewState
            object o = this.ViewState["_CurrentPage"];
            if (o == null)
               return 0;   // default to showing the first page
            else
               return (int) o;
         }
 
         set
         {
            this.ViewState["_CurrentPage"] = value;
         }
      }
 
      private void Page_Load(object sender, System.EventArgs e)
      {
         // Call the ItemsGet method to populate control,
         // passing in the sample data.
         ItemsGet();
      }
 
      private void ItemsGet()
      {
         // Read sample item info from XML document into a DataSet
         DataSet Items = new DataSet();
         Items.ReadXml(MapPath("Items.xml" ));
 
         // Populate the repeater control with the Items DataSet
         PagedDataSource objPds = new PagedDataSource();
         objPds.DataSource = Items.Tables[0].DefaultView;
         objPds.AllowPaging = true;
         objPds.PageSize = 3;
 
         objPds.CurrentPageIndex = CurrentPage;  
 
         lblCurrentPage.Text = "Page: " + (CurrentPage + 1).ToString() + " of "  
            + objPds.PageCount.ToString();
 
         // Disable Prev or Next buttons if necessary
         cmdPrev.Enabled = !objPds.IsFirstPage;
         cmdNext.Enabled = !objPds.IsLastPage;
 
         repeaterItems.DataSource=objPds;
         repeaterItems.DataBind();
      }
 
      private void cmdPrev_Click(object sender, System.EventArgs e)
      {
         // Set viewstate variable to the previous page
         CurrentPage -= 1;
 
         // Reload control
         ItemsGet();
      }
 
      private void cmdNext_Click(object sender, System.EventArgs e)
      {
         // Set viewstate variable to the next page
         CurrentPage += 1;
 
         // Reload control
         ItemsGet();
      }
</script>


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Comment connaitre le type d'un control en VB .Net ?

 

Sujets relatifs
merge cells : comment connaitre sa taille[WBEM] Comment peut on connaitre la config de son PC en java ??
Problème de linkage sur une appli C sous .NETNaviguation au clavier : Type MCE
[JAVA]Connaitre le repertoire à partir d'un File ?[Devis] Structure PHP d un site de type "webzine"
Limitation de Crystal Reports VS .NET[VBA] prob simple sur le control source
[HTML] comment faire ce type de frame ? enfin de page plutot ...MYSQL : type BIGINT
Plus de sujets relatifs à : Comment connaitre le type d'un control en VB .Net ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR