내 winForms 응용 프로그램에는 두 개의 탭 (tab1 및 tab2)으로 구성된 탭 컨트롤이 있습니다. tab2 데이터는 데이터베이스 (제품 정보)의 datagridview에서 가져옵니다. tab1에서 나는 옵션을 선택하게하는 콤보 박스 [sales analyse]를 가지고있다. 이제는 tab2 데이터 그 리드의 데이터에서 지역 판매 정보를 표시하는 cb 선택의 tab1에서 tab2에 액세스하려고합니다. 가능한가? 나는 시작하는 것을 정말로 모른다.
탭 1 이미지
탭 2
기대:
tab1의 콤보 상자가 선택되면 tab2의 datagridview를 통해 북쪽, 동쪽, 서쪽의 요지가있는 tab2의 데이터를 살펴보고 판매 13, 판매 14를 합산 한 다음 textBoxes에 각각 표시해야합니다.
컨트롤이 모두 하나의 폼에 있기 때문에 추가 메서드없이 메서드를 모두 참조 할 수 있습니다.
그래서 당신은SelectedIndexChanged
~의ComboBox cbAnalyse
cbAnalyse_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbAnalyse.SelectedItem.ToStringndex == "Sales Analysis"
{
someTextbox1.Text = ColumnSum(yourDataGridView, someColumn1) + "$";
someTextbox2.Text = ColumnSum(yourDataGridView, someColumn2) + "$";
}
이 작은 도우미 함수를 사용하여 DataGridView에서 한 열의 모든 값을 합산합니다.
decimal ColumnSum(DataGridView dgv, int columnIndex)
{
decimal sum = 0m;
for (int row = 0; row < DGV.Rows.Count; row++)
if (DGV[columnIndex, row].Value != null) sum += Convert.ToDecimal(DGV[1, row].Value);
return sum;
}
사람들은 종종 문제가되는 컨트롤을 참조해야 할 때 문제가 발생합니다.아니같은 양식에 있지만 둘째, 셋째 등 양식에 앉아. 또는 그들이Usercontrol
이것은 컨트롤을 유지하기위한 커스텀 컨테이너입니다.
두 경우 모두 해당 컨트롤은 기본적으로 다른 Forms 또는 UserObject의 비공개 멤버입니다.
이 경우 일반적으로 속성에 의해 일종의 공용 접근자를 만들어야합니다. 양식의 경우 다른 양식에 대한 참조를 제공해야하며, 일반적으로 양식을 열 때 저장됩니다.
이 경우, 제 2 서식은 종종 제 1 서식에 대한 역 - 참조를 필요로합니다; 이것은 종종 생성자에서 전달됩니다.
그러나 귀하의 경우에는 이러한 합병증 중 아무 것도 중요하지 않습니다. 필요한 모든 인내심은 그 모든 TextBoxes를 연결합니다 ;-)
최신 정보:중간 합계를 얻는 데 문제가있는 것처럼 보이고 Tab 2의 행에서 반복 영역을 허용해야하는 경우 where 절로 계산할 함수를 사용하려고합니다.
decimal ColumnSumWhere(DataGridView dgv, int columnIndex, string region)
{
decimal sum = 0m;
for (int row = 0; row < DGV.Rows.Count; row++)
if (DGV[columnIndex, row].Value != null) &&
(DGV[regionColumn, row].Value.ToString() == region)
sum += Convert.ToDecimal(DGV[1, row].Value);
return sum;
}
where clause
내가 필요한 애트리뷰트를 요약 해. 너의 샘플이 전체 칼럼을 합산 한 것 같아? 위로 sales12 열에있는 내 DVG로 돌아 가면 north 값은 2x 800입니다. 따라서 north shd에 대한 txtBox는 1600을 표시합니다. - James
만약 내가 맞다면, 판매 분석 콤보의 가치를 바꿀 때마다 데이터 그리드를 포함한 탭 페이지가 활성화되어야합니다. 탭 컨트롤의 선택된 인덱스를 데이터 격자 탭으로 설정할 수 있습니다.
this.tabControl1.SelectedIndex = 1;//Index of data grid tab
combobox
가 선택되면datagridview
북쪽, 동쪽, 서쪽 ect가 있고 판매 13, 판매 14를 합계하는 tab2에서. 그리고 textBoxes에 각각 표시하십시오. 내 질문을 업데이트했습니다. - James
combobox
선거를 위해. - Jamescb selection
? 이벤트? ComboBox의 selectionChanged? 또는 CommandButton ?? 질문을 정확하고 완전하게 편집하십시오 !! - TaWcb selection
ComboBox의 selectionChanged입니다. 즉, 콤보 상자가 선택되면 북쪽, 동쪽, 서쪽 요법이 판매 13, 판매 14 .. 인 탭 2의 datagridview를보고 텍스트 상자에 각각 표시해야합니다. - James