Click here to Skip to main content
15,893,381 members
Home / Discussions / Windows Forms
   

Windows Forms

 
GeneralRe: Play mp3 file in winforms Pin
polycom12329-Dec-10 2:00
polycom12329-Dec-10 2:00 
QuestionHow to show excel inside a window form? Pin
neodeaths15-Dec-10 17:58
neodeaths15-Dec-10 17:58 
AnswerRe: How to show excel inside a window form? Pin
Prerak Patel16-Dec-10 3:04
professionalPrerak Patel16-Dec-10 3:04 
GeneralRe: How to show excel inside a window form? Pin
RaviRanjanKr17-Dec-10 18:14
professionalRaviRanjanKr17-Dec-10 18:14 
AnswerRe: How to show excel inside a window form? Pin
Eddy Vluggen16-Dec-10 4:53
professionalEddy Vluggen16-Dec-10 4:53 
QuestionProgramming of interactive desktop background Pin
hansdam9-Dec-10 7:58
hansdam9-Dec-10 7:58 
AnswerRe: Programming of interactive desktop background Pin
Eddy Vluggen9-Dec-10 9:11
professionalEddy Vluggen9-Dec-10 9:11 
QuestionReading from Comboboxes on a datagrid view (C++/CLI - Windows Forms App in VS2008) [modified] Pin
Ger Hayden8-Dec-10 9:50
Ger Hayden8-Dec-10 9:50 
I have my filtered combo boxes working in a datagridview thanks to a Linda Liu sample. Now when I enter a row I want to see the data from a row in a sequence of text boxes below the grid - but for the combo boxes I only see the index, when I would prefer to see the information e.g. route description. Here is a cutdown version of From1.h:

namespace DataGridViewComboEx5 {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Collections::Generic;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;
	using namespace System::IO;

	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: Add the constructor code here
			//
		}

	protected:
		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}
	private: System::Windows::Forms::DataGridView^  gridPassenger;
	private: System::Windows::Forms::DataGridViewComboBoxColumn^  dgRoute;
	private: System::Windows::Forms::DataGridViewComboBoxColumn^  dgStage;
	private: System::Windows::Forms::DataGridViewTextBoxColumn^  dgPerson;
	private: System::Windows::Forms::Label^  label1;
	private: System::Windows::Forms::Label^  lblPerson;
	private: System::Windows::Forms::Label^  lblStage;
	private: System::Windows::Forms::Label^  label3;
	private: System::Windows::Forms::Label^  lblRoute;
	private: System::Windows::Forms::Label^  label5;

:
:

ref class ViewPassengerData
{
private:
	int m_Route;
	int m_Stage;
	String ^m_Person;
public:
	ViewPassengerData(int Route, int Stage, String^ Person)
	{
		m_Route = Route;
		m_Stage = Stage;
		m_Person = gcnew String(Person);
	}
	property int RouteID
	{
		int get()
		{
			return m_Route;
		}
		void set(int value)
		{
			m_Route = value;
		}
	}
	property int StageID
	{
		int get()
		{
			return m_Stage;
		}
		void set(int value)
		{
			m_Stage = value;
		}
	}
	property String^ Person
	{
		String^ get()
		{
			return m_Person;
		}
		void set(String^ value)
		{
			m_Person = value;
		}
	}
};
	private:
		List<ViewPassengerData^> ^m_DataList;
		DataSet ^RouteStages;
		DataTable ^dtRoute;
		DataTable ^dtStages;
		BindingSource ^bsRoute;
		BindingSource ^childBS;
		BindingSource ^filteredStages;
		bool m_LoadComplete;

private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
			 m_LoadComplete = false;
		RouteStages = gcnew DataSet();
		dtRoute = gcnew DataTable("dtRoute");
		dtStages = gcnew DataTable("dtStages");
		bsRoute = gcnew BindingSource();
		childBS = gcnew BindingSource();
		filteredStages = gcnew BindingSource();	
 // add columns in the Route table                      
 DataColumn ^col = gcnew DataColumn("RouteID", int::typeid);
 dtRoute->Columns->Add(col);
 col = gcnew DataColumn("RouteDescription");
 dtRoute->Columns->Add(col);


 // add columns in the Stage table           
 col = gcnew DataColumn("StageID", int::typeid);
 dtStages->Columns->Add(col);
 col = gcnew DataColumn("StageDescription");
 dtStages->Columns->Add(col);
 col = gcnew DataColumn("RouteID", int::typeid);
 dtStages->Columns->Add(col);

 // add the two tables to the dataset            
 RouteStages->Tables->Add(dtRoute);
 RouteStages->Tables->Add(dtStages);
 // add some rows  in the Route table            
 DataRow ^row = RouteStages->Tables["dtRoute"]->NewRow();
 row[0] = 3;
 row[1] = "Route 3";
 RouteStages->Tables["dtRoute"]->Rows->Add(row);
 row = RouteStages->Tables["dtRoute"]->NewRow();
 row[0] = 2;
 row[1] = "Route 2";
 RouteStages->Tables["dtRoute"]->Rows->Add(row);
 // add some rows in the Stage table            
 row = RouteStages->Tables["dtStages"]->NewRow();
 row[0] = 44122;
 row[1] = "Stage 1";
 row[2] = 3;
 RouteStages->Tables["dtStages"]->Rows->Add(row);
 row = RouteStages->Tables["dtStages"]->NewRow();
 row[0] = 53404;
 row[1] = "Stage 2";
 row[2] = 3;
 RouteStages->Tables["dtStages"]->Rows->Add(row);
 row = RouteStages->Tables["dtStages"]->NewRow();
 row[1] = "Stage A";
 row[2] = 2;
 row[0] = 60601;
 RouteStages->Tables["dtStages"]->Rows->Add(row);
 row = RouteStages->Tables["dtStages"]->NewRow();
 row[0] = 94105;
 row[1] = "Stage B";
 row[2] = 2;
 RouteStages->Tables["dtStages"]->Rows->Add(row);

 // set up bsRoute and ChildBS and filteredStages            
 bsRoute->DataSource = RouteStages;
 bsRoute->DataMember = "dtRoute";
 childBS->DataSource = RouteStages;
 childBS->DataMember = "dtStages";
 filteredStages->DataSource = RouteStages;
 filteredStages->DataMember = "dtStages";

 // bind the dgRoute to the bsRoute            
 this->dgRoute->DataSource = bsRoute;
 this->dgRoute->DisplayMember = "RouteDescription";
 this->dgRoute->ValueMember = "RouteID";
 // bind the dgStage to the childBS            
 this->dgStage->DataSource = childBS;
 this->dgStage->DisplayMember = "StageDescription";
 this->dgStage->ValueMember = "StageID";
 // Bound to a datatable            
 DataTable ^dtViewPassengerData = gcnew DataTable("ViewPassengerData");
 dtViewPassengerData->Columns->Add("RouteID", Int32::typeid);
 dtViewPassengerData->Columns->Add("StageID", Int32::typeid);
 dtViewPassengerData->Columns->Add("Person", String::typeid);
 DataRow ^dr = dtViewPassengerData->NewRow();
 dr["RouteID"] = 3;
 dr["StageID"] = 44122;
 dr["Person"] = "Thomas";
 dtViewPassengerData->Rows->Add(dr);
 dr = dtViewPassengerData->NewRow();
 dr["RouteID"] = 2;
 dr["StageID"] = 60601;
 dr["Person"] = "Edward";
 dtViewPassengerData->Rows->Add(dr);

 gridPassenger->AutoGenerateColumns = false;
 gridPassenger->DataSource = dtViewPassengerData; // could be for any table??
 gridPassenger->Columns[0]->DataPropertyName = "RouteID";
 gridPassenger->Columns[1]->DataPropertyName = "StageID";
 gridPassenger->Columns[dgPerson->Index]->DataPropertyName = "Person";
m_LoadComplete = true;
		}
private: System::Void gridPassenger_CellValueChanged(System::Object^  sender, System::Windows::Forms::DataGridViewCellEventArgs^  e) {
			 if ((e->ColumnIndex == dgRoute->Index)            
				 &&(e->RowIndex>= 0))
			{   		
				// clear the cell value of the Stage column in the same row                
				if (gridPassenger->DataSource->GetType() == DataTable::typeid)                
				{                    
					gridPassenger->Rows[e->RowIndex]->Cells[dgStage->Index]->Value = DBNull::Value;                
				}                
				else                
				{                    
					gridPassenger->Rows[e->RowIndex]->Cells[dgStage->Index]->Value = nullptr;                
				}            
			 }		 
		 }
private: System::Void gridPassenger_DataError(System::Object^  sender, 
			 System::Windows::Forms::DataGridViewDataErrorEventArgs^  e) {
			if (e->ColumnIndex != dgStage->Index)
			{
				MessageBox::Show("Data error occurs:" + e->Exception->Message);
			}		 
		 }
private: System::Void gridPassenger_EditingControlShowing(System::Object^  sender, System::Windows::Forms::DataGridViewEditingControlShowingEventArgs^  e) {
			if (this->gridPassenger->CurrentCell->ColumnIndex == dgStage->Index)
			{
			DataGridViewComboBoxEditingControl ^control = dynamic_cast<DataGridViewComboBoxEditingControl^>(e->Control);
			BindingSource ^bs = dynamic_cast<BindingSource^>(control->DataSource);
			if (bs != nullptr)
			{
			// set the filteredStages as the DataSource of the editing control                    
			(dynamic_cast<ComboBox^>(e->Control))->DataSource = filteredStages;
			Object ^Routevalue = this->gridPassenger->Rows[this->gridPassenger->CurrentCell->RowIndex]->Cells[dgRoute->Index]->Value;
			if (Routevalue == DBNull::Value || Routevalue == nullptr)
			{
			filteredStages->Filter = "RouteID=-1";
			}
			else
			{
			filteredStages->Filter = "RouteID=" + Routevalue->ToString();
			}
			// set the SelectedValue property of the editing control                    
			if (this->gridPassenger->CurrentCell->Value != DBNull::Value 
				&& this->gridPassenger->CurrentCell->Value != nullptr)
			{
			control->SelectedValue = this->gridPassenger->CurrentCell->Value;
			}
			}
			}		 }

private: System::Void gridPassenger_RowEnter(System::Object^  sender, System::Windows::Forms::DataGridViewCellEventArgs^  e) {
			 if (m_LoadComplete&& e->RowIndex < gridPassenger->RowCount)
			 {
				lblPerson->Text = gridPassenger->Rows[e->RowIndex]->Cells[dgPerson->Name]->Value->ToString();
				lblRoute->Text = gridPassenger->Rows[e->RowIndex]->Cells[dgRoute->Name]->Value->ToString();
				lblStage->Text = gridPassenger->Rows[e->RowIndex]->Cells[dgStage->Name]->Value->ToString();
				}
		 }
};
}

Ger
modified on Wednesday, December 8, 2010 11:44 PM

AnswerRe: Reading from Comboboxes on a datagrid view (C++/CLI - Windows Forms App in VS2008) Pin
DJ Matthews8-Dec-10 9:58
DJ Matthews8-Dec-10 9:58 
GeneralRe: Reading from Comboboxes on a datagrid view (C++/CLI - Windows Forms App in VS2008) Pin
Ger Hayden8-Dec-10 17:51
Ger Hayden8-Dec-10 17:51 
GeneralRe: Reading from Comboboxes on a datagrid view (C++/CLI - Windows Forms App in VS2008) Pin
Richard MacCutchan8-Dec-10 23:41
mveRichard MacCutchan8-Dec-10 23:41 
QuestionHow can I have multiple datasources in the same datagridview combo column [modified] Pin
Ger Hayden29-Nov-10 18:16
Ger Hayden29-Nov-10 18:16 
AnswerRe: How can I have multiple datasources in the same datagridview combo column Pin
RobCroll4-Dec-10 16:09
RobCroll4-Dec-10 16:09 
GeneralRe: How can I have multiple datasources in the same datagridview combo column Pin
Ger Hayden8-Dec-10 17:53
Ger Hayden8-Dec-10 17:53 
QuestionToolstripbutton not validating textbox. Pin
priyamtheone23-Nov-10 5:12
priyamtheone23-Nov-10 5:12 
AnswerRe: Toolstripbutton not validating textbox. Pin
RobCroll26-Nov-10 3:30
RobCroll26-Nov-10 3:30 
AnswerRe: Toolstripbutton not validating textbox. Pin
RaviRanjanKr18-Dec-10 20:50
professionalRaviRanjanKr18-Dec-10 20:50 
GeneralRe: Toolstripbutton not validating textbox. Pin
priyamtheone19-Dec-10 3:47
priyamtheone19-Dec-10 3:47 
GeneralRe: Toolstripbutton not validating textbox. Pin
phil.o19-Dec-10 21:15
professionalphil.o19-Dec-10 21:15 
QuestionProblems Dynamically Moving Controls On WinForm Pin
oracleConvert18-Nov-10 9:42
oracleConvert18-Nov-10 9:42 
AnswerRe: Problems Dynamically Moving Controls On WinForm Pin
Luc Pattyn18-Nov-10 10:02
sitebuilderLuc Pattyn18-Nov-10 10:02 
GeneralRe: Problems Dynamically Moving Controls On WinForm Pin
oracleConvert19-Nov-10 4:25
oracleConvert19-Nov-10 4:25 
AnswerRe: Problems Dynamically Moving Controls On WinForm Pin
RobCroll19-Nov-10 1:41
RobCroll19-Nov-10 1:41 
AnswerRe: Problems Dynamically Moving Controls On WinForm Pin
Dave Kreskowiak19-Nov-10 3:16
mveDave Kreskowiak19-Nov-10 3:16 
GeneralRe: Problems Dynamically Moving Controls On WinForm Pin
Luc Pattyn19-Nov-10 3:32
sitebuilderLuc Pattyn19-Nov-10 3:32 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.