lrx94
Messages postés2Date d'inscriptionmardi 27 avril 2004StatutMembreDernière intervention23 décembre 2004
-
22 déc. 2004 à 18:15
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
23 déc. 2004 à 12:48
j'en perd mon latin:
j'ai un form avec une série de comboBox.
le comboBox_selectedIndexChanged permet l'alimentation spécifique du second comboBox etc...
le premier test étant
if (this.comboBoxCodec.SelectedIndex != -1)
Hors en point d'arret je m'apperçois que SelectedIndex est toujours = -1.
Afin de vérifié que je ne m'étais pas trompé j'ai fait un mini projet avec un comboBox et un TexBox . sur l'évenement selectedIndexChanged j'alimentes le TextBox avec le selectedItem .
Tout marche bien.
Mais dans la fenêtre de l'application que je veux faire évoluer impossible d'obtenir un selectedindex différent de -1.
Y a t il une propriété quelconque de la form ou du control qui puisse expliquer que la selection d'un item dans le comboBox provoque bien l'évenement mais remonte toujours un selectedIndex = -1.
lrx94
Messages postés2Date d'inscriptionmardi 27 avril 2004StatutMembreDernière intervention23 décembre 2004 23 déc. 2004 à 11:05
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using Manager;
using System.Data;
using System.Data.Odbc;
//DSN=ConfCentraliseVW;DESCRIPTION=Serveur de conf centralisée VW;
//PROTOCOL=2;VERSION=6;OPTIONS=256;DIALECT=3;
//SERVER=pc41347;
//DATABASE=C:\Program Files\VisioWave\Central Configuration\DB\CONFIG.DB;UID=php
//
// Requis pour la prise en charge du Concepteur Windows Forms
//
InitializeComponent();
//
// TODO : ajoutez le code du constructeur après l'appel à InitializeComponent
//
}
try
{
if (OdbcVW.State!=System.Data.ConnectionState.Open)
{
OdbcVW.Open();
}
}
catch(Exception a)
{
MessageBox.Show(this," Vérifiez vos paramètres de connexion ou de chemin du fichier de confcentralisée "+a.Message+" "+OdbcVW.ConnectionString," Erreur de connection à la conf centralisée visiowave ");
return;
}
req=" SELECT A.ADDRESS,C.VIDEO_PORT_ID,D.TCP_PORT,E.ADDRESS ,C.SKIP ";
req+=" FROM VW_CFG_HOSTS A, VW_CFG_STORAGE_SPACES B,";
req+=" VW_CFG_STORAGES C, VW_CFG_VIDEO_PORTS D,VW_CFG_HOSTS E";
req+=" WHERE A.ID=B.HOST_ID AND C.STORAGE_SPACE_ID=B.ID ";
req+=" AND C.VIDEO_PORT_ID=D.ID AND E.ID=D.HOST_ID ";
req+=" ORDER BY A.ADDRESS,C.VIDEO_PORT_ID,D.TCP_PORT";
//On récupère tous les flux stockés de la conf centralisée
//adresse de machine de stockage, nom du flux, port tcp de
//la camera, adresse machine sur laquelle la camera est branchée
myreader=com.ExecuteReader();
DataSet tempcam,tempcodec;
exe(" delete from RecordedFlux ");
while (myreader.Read())
{
System.Console.WriteLine(myreader.GetString(0).Trim()+" - "+myreader.GetString(1).Trim()+" - "+myreader.GetInt32(2)+" - "+myreader.GetString(3)+" - "+myreader.GetString(4));
//pour chaque ligne on va donc chercher le no de la camera enregistrée et le codec sur le quel le flux est enregistré
string camrequest,codecrequest;
camrequest=" SELECT a.id FROM Device a ,Device b, SubDevice c ";
camrequest+=" WHERE UPPER(LTRIM(RTRIM(b.adresseip))) = '"+myreader.GetString(3).Trim().ToUpper()+"' ";
camrequest+=" and b.id =c.containerdevice and c.containeddevice=a.id and a.porttcp="+myreader.GetInt32(2).ToString().Trim();
tempcam=exe(camrequest);
System.Console.WriteLine(camrequest);
System.Console.WriteLine(tempcam.Tables[0].Rows.Count);
codecrequest=" SELECT b.id FROM Device b ";
codecrequest+=" WHERE UPPER(LTRIM(RTRIM(b.adresseip)))='"+myreader.GetString(0).Trim().ToUpper()+"' ";
tempcodec=exe(codecrequest);
System.Console.WriteLine(tempcodec.Tables[0].Rows.Count);
private void comboBoxDiskSpace_SelectedIndexChanged(object sender, System.EventArgs e)
{
int i = this.comboBoxDiskSpace.SelectedIndex;
object o = this.comboBoxDiskSpace.SelectedItem;
To get around this (another fundamental flaw in the .NET data binding mechanism), you will need to configure an event handler for the auto complete combobox's Validating event from your parent control (or form).
ie:
public class Form1 : System.Windows.Forms.Form
{
public Form1()
{
InitializeComponent();
comboBox.Validating += new System.CancelEventHandler(comboBox_Validating);
}
private void comboBox_Validating(object sender, CancelEventArgs e)
{
this.OnValidating(e);
}
}