OVH Cloud OVH Cloud

propriétés de System.Windows.Forms.TextBox ??

1 réponse
Avatar
bonjour,

je voudrais savoir s'il existe par d=E9faut un control=20
graphic, genre TextBox, avec un boutton au bout de la zone=20
de saisie.
Du mm style que Visual .Net, lorsque l'on va dans les=20
propri=E9t=E9s d'un projet, puis Common Properties->General,=20
lorsque l'on clique sur Application Icon, dans la zone de=20
texte apparait un boutton qui ouvre un browser si lo'n=20
clique dessus.

Pas que ce soit difficile de refaire, mais pourquoi=20
r=E9inventer la roue??
Merci bien.

Christophe

1 réponse

Avatar
Pascal Mercier
Bonjour,

c'est (très) facile. Il suffit de créer un server control qui hérite de la
classe TextBox et qui surchage la méthode Render et y ajouter le contrôle
bouton "au bout".
L'exemple ci-dessous fait en sorte que l'orsqu'on click sur la fenêtre
appelante, la fenêtre pop-up se ferme (fonction quit() sur le onfocus). Ce
comportement peut-être modifié évidemment. Vous noterez l'utilisation de la
propriété this.ClientID qui contient le nom javascript du control qui est
calculé par ASP.NET si le controle est imbriqué dans la hériarchie des
contrôles de la page.

using System;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.ComponentModel;
using System.Diagnostics;


namespace MonNamespace
{
public class SearchTextBox : TextBox
{
private int _searchPanelWidth = 300;
private int _searchPanelHeight = 200;

#region -- Constucteurs
public SearchTextBox()
{
}
#endregion

#region -- Propriétés publiques
/// <summary>
/// Obtient ou définit la largeur de la fenêtre pop-up qui s'affiche sur
le click du bouton
/// </summary>
public string SearchPanelWidth
{
get
{
return _searchPanelWidth.ToString();
}
set
{
try
{
_searchPanelWidth = Int32.Parse(value);
}
catch
{
_searchPanelWidth = 300; // Valeur par défaut
}
}
}

/// <summary>
/// Obtient ou définit la hauteur de la fenêtre pop-up qui s'affiche sur
le click du bouton
/// </summary>
public string SearchPanelHeight
{
get
{
return _searchPanelHeight.ToString();
}
set
{
try
{
_searchPanelHeight = Int32.Parse(value);
}
catch
{
_searchPanelHeight = 200; // Valeur par défaut
}
}
}

/// <summary>
/// Obtient ou définit l'url de la page à afficher dans la fenêtre pop-up.
/// </summary>
public string PanelUrl
{
get
{
return _panelUrl;
}
set
{
_panelUrl = value;
}
}
#endregion

#region -- Méthodes protected
protected override void OnLoad(EventArgs e)
{
base.OnLoad (e);
string script = @"
<script language=""javascript"">
<!--
var w;

function quit()
{
if (w!=null)
{
w.close();
}
}
function displaywindow(o,url,params,width,height)
{
w=window.open(url + '?ctrl='
+params,'_blank','location=no,menubar=no,resizable=no,scrollbars=no,status=n
o,titlebar=no,toolbar=no,width=' + width + ',height=' + height);
}

window.onfocus = quit;
// -->
</script>";
Page.RegisterStartupScript("monscript", script);
}

/// <summary>
/// Ajoute un bouton à droite de la zone de texte (TextBox).
/// </summary>
/// <param name="writer"></param>
/// <remarks>
/// l'url d'appel de la fenêtre pop-up contient le nom du controle à
remplir sur un événement click dans la fenêtre pop-up. Cela
/// permet de peupler la zone de texte dans la fenêtre appelante en
utilisant un javascript
/// du type "self.opener.document.forms[0]['nom_du_control'].value valeur (valeur provenant de la fenêtre pop-up).
/// </remarks>
protected override void Render(HtmlTextWriter writer)
{
base.Render (writer);
writer.WriteBeginTag("input");
writer.WriteAttribute("type", "button");
writer.WriteAttribute("id", "displaypanel");
writer.WriteAttribute("name", "displaypanel");
writer.WriteAttribute("value", "...");
writer.WriteAttribute("onclick",
String.Format("displaywindow(this,'{0}','{1}',{2},{3});",_panelUrl,
this.ClientID, _searchPanelWidth, _searchPanelHeight));
writer.Write(HtmlTextWriter.TagRightChar);
}

#endregion

}
}

Cordialement,
Pascal Mercier
Microsoft France - MCS

wrote in message
news:09a301c4aaef$329a5fa0$
bonjour,

je voudrais savoir s'il existe par défaut un control
graphic, genre TextBox, avec un boutton au bout de la zone
de saisie.
Du mm style que Visual .Net, lorsque l'on va dans les
propriétés d'un projet, puis Common Properties->General,
lorsque l'on clique sur Application Icon, dans la zone de
texte apparait un boutton qui ouvre un browser si lo'n
clique dessus.

Pas que ce soit difficile de refaire, mais pourquoi
réinventer la roue??
Merci bien.

Christophe