Comment connaitre le type d'un control en VB .Net ? - C#/.NET managed - Programmation
Marsh Posté le 04-03-2004 à 13:42:36
Merci pour ton aide !
ça donne donc ceci:
Code :
|
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 :
|
Marsh Posté le 04-03-2004 à 14:03:42
rarazor a écrit : |
Marsh Posté le 04-03-2004 à 14:30:04
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" ?
Marsh Posté le 04-03-2004 à 14:40:47
rarazor a écrit : je ne comprend pas bien pour mon usercontrol... |
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 :
|
- 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 :
|
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 :
|
Attends le tuto que je suis en train de finir, ça te paraitra beaucoup plus clair.
Marsh Posté le 04-03-2004 à 14:48:57
Il me dit que Iteration est déja déclaré :-( ... Bon je vais attendre ton tutoriel !
Marsh Posté le 04-03-2004 à 14:50:28
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 :
|
Marsh Posté le 04-03-2004 à 14:57:59
J'ai aussi des problèmes avec ça:
<Description("Nombre d'itérations." )>
<Category("Paramètres" )>
<DefaultValue(512)>
Il n'aime pas la syntaxe...
Marsh Posté le 04-03-2004 à 14:59:49
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)
Marsh Posté le 04-03-2004 à 15:18:02
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 :
|
Marsh Posté le 07-01-2005 à 16:53:57
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>
Marsh Posté le 07-01-2005 à 16:57:03
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>
Marsh Posté le 04-03-2004 à 12:30:15
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:
... 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