Objet qui affiche oui et qui stocke "O"

Résolu
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 - 5 janv. 2005 à 10:25
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 - 6 janv. 2005 à 10:44
Hello tout le monde,

je cherche un objet style combo qui m'affiche un "OUI" mais qui va envoyer à mon datagrid un "O"...
je sais pas si la combo (ou autre) permet de faire ca...donc voila je pose la question....

ou faut-il faire ca a la manau...

d'avance merci...



Arthenius

"Ce qui ne me tue pas, me rend plus fort..."

"Il n'y a pas de mauvais développeurs, mais que des mauvais utilisateurs..."

13 réponses

Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
6 janv. 2005 à 10:44
voila finalement le code qui fonctionne :


/// <summary>
/// ComboBox qui peut etre rempli grâce à un tableau de 2 champs qui rempliront le ValueMember et DisplayMember
/// </summary>
[ToolboxBitmap(
typeof(ComboBox))]

public
class obj_cbo_Fixe : ComboBox
{

private ArrayList lst =
new ArrayList();

/// <summary>
/// Constructeur d'obj_cbo_Fixe
/// </summary>
public obj_cbo_Fixe() :
base()
{

this.DataSource = lst;

this.DisplayMember = "Text";

this.ValueMember = "Value";
}

#region Item

private
class ComboBoxItem
{

public ComboBoxItem (
string itemText,
string itemValue )
{
m_text = itemText;
m_value = itemValue;
}

private
string m_text;

private
string m_value;

public
string Text
{

get
{

return m_text;
}

set
{
m_text =
value;
}
}

public
string Value
{

get
{

return m_value;
}

set
{
m_value =
value;
}
}
}

#endregion
/// <summary>
/// Permet d'ajouter un couple valeur/affichage dans la combo
/// </summary>
/// Valeur à utiliser comme ValueMember

/// Valeur à utiliser comme DisplayMember

public
void AddItem(
string itemValue,
string itemText)
{
lst.Add(
new ComboBoxItem(itemText, itemValue) );
}
}

et pour le binding fallait faire sur le selectedvalue...et pas sur le valuemember....comme je l'avais fait au debut...
perdu du temps pour rien...


Arthenius

"Il n'y a pas de mauvais développeurs,...
mais uniquement de mauvais utilisateurs..."
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
5 janv. 2005 à 10:35
En jouant avec DisplayMember et ValueMember non ?
Enfin dans ton cas la lecture du premier char de la chaine sélectionnée serait peut etre suffisante ^^

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
5 janv. 2005 à 11:19
je vais tester ca mon ptit poulet :o)))
suis un peu endormi se matin j'avais pas penser a ca.....

par contre pour le coup du premier char...oui ca marche dans ce cas...mais pas forcement dans tous...imagine que je veux stocker Y pour oui...
non bon c bidon ce que je dis...je manque de sommeil...faites des gosses :o)))))



Arthenius

"Ce qui ne me tue pas, me rend plus fort..."

"Il n'y a pas de mauvais développeurs, mais que des mauvais utilisateurs..."
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
5 janv. 2005 à 11:37
sinon, pour ne pas utiliser le DataSource :


private
void Form1_Load(object sender, System.EventArgs e)
{
ComboBoxItem[] items = new ComboBoxItem[2];

items[0] = new ComboBoxItem("oui", "O");
items[1] = new ComboBoxItem("non", "N");

comboBox.Items.AddRange(items);
}

private void comboBox_SelectedIndexChanged(object sender, System.EventArgs e)
{
ComboBoxItem item = (ComboBoxItem)comboBox.SelectedItem;

// ...
}

private class ComboBoxItem
{
public ComboBoxItem (string itemText, string itemValue )
{
m_text = itemText;
m_value = itemValue;
}

private string m_text;
private string m_value;

public string Text
{

get
{
return m_text;
}
}

public string Value
{

get
{
return m_value;
}
}
}

Cocoricoooooooo !!!!
coq
MVP Visual C#
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
5 janv. 2005 à 11:43
j'etais entrain de faire ca :o)))
t'a ete plus rapide...

:o)))
merci...
je pense que je vais me faire une chtite combo avec une arraylist ou un truc du style...pour pouvoir generaliser ca...

merci...



Arthenius

"Ce qui ne me tue pas, me rend plus fort..."

"Il n'y a pas de mauvais développeurs, mais que des mauvais utilisateurs..."
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
5 janv. 2005 à 11:47
oui c'est une idée ça :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
5 janv. 2005 à 18:45
mpfrrrrrr

marche pos...


<HR>


/// <summary>



/// ComboBox qui peut etre rempli grâce à un tableau de 2 champs qui rempliront le ValueMember et DisplayMember



/// </summary>


[ToolboxBitmap(
typeof(ComboBox))]



public
class obj_cbo_Fixe : ComboBox


{



private System.Data.DataTable lst =
new System.Data.DataTable();



/// <summary>



/// Constructeur d'obj_cbo_Fixe



/// </summary>



public obj_cbo_Fixe()


{


lst.Columns.Add("Valeur",
typeof(
string));


lst.Columns.Add("Affichage",
typeof(
string));



this.DataSource = lst;



this.ValueMember = "Valeur";



this.DisplayMember = "Affichage";


}



/// <summary>



/// Permet d'ajouter un couple valeur/affichage dans la combo



/// </summary>



/// Valeur à utiliser comme ValueMember



/// Valeur à utiliser comme DisplayMember



public
void Add(
string Valeur,
string Affichage)


{


System.Data.DataRow row = lst.NewRow();


row["Valeur"] = Valeur;


row["Affichage"] = Affichage;


lst.Rows.Add(row);


}


}


<HR>
apres dans mon appli je fais


<HR>

Cbo_Mnuhor.Add("O", "Oui");


Cbo_Mnuhor.Add("N", "Non");


<HR>

et


<HR>

Cbo_Mnuhor.DataBindings.Add(
new Binding("ValueMember", ds.Tables["T_MENUITEM"], "MNUHOR"));

//"MNUHOR" etant la colonne de ma base contenant "O" ou "N"

<HR>

j'obtient l'erreur :

"Liaison au nouveau membre Value impossible.Nom du paramètre : value"

Tu vois kkchose de louche ???
et c pas un peu bourrin d'utiliser une datatable ???
nivo ressource ???



Arthenius

"Ce qui ne me tue pas, me rend plus fort..."

"Il n'y a pas de mauvais développeurs, mais que des mauvais utilisateurs..."
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
5 janv. 2005 à 18:47
le oui et le non s'affiche dans ma combo....
mais le binding ne fonctionne po...



Arthenius

"Ce qui ne me tue pas, me rend plus fort..."

"Il n'y a pas de mauvais développeurs, mais que des mauvais utilisateurs..."
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
5 janv. 2005 à 19:41
Je n'ai jamais trop utiliser ça.
J'ai toujours préferer avoir ma classe "item" et me servir de SelectedItem plutot que des 2 autres en fait.

Je pense plutot à qqch de ce genre :

<HR>

public class MyComboBox : ComboBox
{
public MyComboBox()
: base()
{
this.DisplayMember = "Text";
}

#region Item
private class ComboBoxItem
{
public ComboBoxItem (string itemText, string itemValue )
{
m_text = itemText;
m_value = itemValue;
}

private string m_text;
private string m_value;

public string Text
{
get
{
return m_text;
}
}

public string Value
{
get
{
return m_value;
}
}
}
#endregion

public void AddItem(string itemText, string itemValue)
{
this.Items.Add( new ComboBoxItem(itemText, itemValue) );
}

public new string SelectedText
{
get
{
return ((ComboBoxItem)this.SelectedItem).Text;
}
}

public new string SelectedValue
{
get
{
return ((ComboBoxItem)this.SelectedItem).Value;
}
}
}

<HR>

"utilisation" :

<HR>

private void Form1_Load(object sender, System.EventArgs e)
{
comboBox.AddItem("oui", "O");
comboBox.AddItem("non", "N");
}

private void comboBox_SelectedIndexChanged(object sender, System.EventArgs e)
{
MessageBox.Show(comboBox.SelectedText + " : " + comboBox.SelectedValue );
}

<HR>

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
6 janv. 2005 à 09:46
g pris ton objet...un peu adapté

<HR>

public
class obj_cbo_Fixe : ComboBox


{



public obj_cbo_Fixe() :
base()


{



this.DisplayMember = "Text";


}


#region Item



private
class ComboBoxItem


{



public ComboBoxItem (
string itemText,
string itemValue )


{


m_text = itemText;


m_value = itemValue;


}



private
string m_text;



private
string m_value;



public
string Text


{



get


{



return m_text;


}



set


{


m_text =
value;


}


}



public
string Value


{



get


{



return m_value;


}



set


{


m_value =
value;


}


}


}


#endregion



public
void AddItem(
string itemValue,
string itemText)


{



this.Items.Add(
new ComboBoxItem(itemText, itemValue) );


}






public
new
string SelectedText


{



get


{



return ((ComboBoxItem)
this.SelectedItem).Text;


}



set


{


((ComboBoxItem)
this.SelectedItem).Text =
value;


}


}



public
new
string SelectedValue


{



get


{



return ((ComboBoxItem)
this.SelectedItem).Value;


}



set


{


((ComboBoxItem)
this.SelectedItem).Value =
value;


}


}


}


<HR>

alors en fait qd je fais du binding ca merdoit severe...j'avais pris ton code mais pour le binding il lui faut des proprietes en lecture ecriture...d'ou les modifs


Cbo_Mnuhor.DataBindings.Add(
new Binding("SelectedValue", ds.Tables["T_MENUITEM"], "MNUHOR"));

il me met "la reference d'objet n'est pas défini a une instance d'objet"
il m'affiche le oui non dans la combo, mais le lien avec les donnéees se fait po....comprend pas...

Arthenius

"Il n'y a pas de mauvais développeurs,...
mais uniquement de mauvais utilisateurs..."
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
6 janv. 2005 à 10:04
laisse tomber tes tables et prend le dernier exemple lol
Bon sinon je crois que je V vais poster mon nettoyeur de code, c'est lourd ces espaces entre chaque ligne c/c depuis VS/SharpDev

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
6 janv. 2005 à 10:06
ben g laisser tomber les tables...

en utilisant ton code....

mais avec un databinding ca foir... :o((

un nettoyeur de code ???

pkoi faire ???
pour poster...

ca pourrait etrre cool...


Arthenius

"Il n'y a pas de mauvais développeurs,...
mais uniquement de mauvais utilisateurs..."
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
6 janv. 2005 à 10:17
arf là je peux pas aider pck moi et le DataBinding... lol

oui, un nettoyeur pour remplacer les nouveaux paras par des sauts de ligne dans le code rtf copier dans VS ou SD.

http://www.csharpfr.com/code.aspx?ID=28646

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Rejoignez-nous