2010-04-17 4 views
0

9 개의 열이있는 DataGridview가 있습니다. 나는 단순히 5 열의 값을 가져 와서 6 열에서 빼고 그 결과를 9 열에 표시하려고합니다. 충분히 단순 해 보입니다. 모든 것이 Excel에서 끝난 것입니다. 그러나 나는 이것을 이해할 수 없다. 열 계산 방법이라는 새로운 클래스를 만들어야합니까? 또는 datagridview 클래스에는이 문제를 처리 할 수있는 기능이 이미 내장되어 있습니까?DataGridview에서 간단한 수학을 수행하는 방법

+0

일반적인 팁 : 데이터 저장소로 DataGridView를 사용하지 마십시오. 테이블 또는 목록에 바인딩하십시오. –

답변

1
public void dataGridView_Cellformatting(object sender, DataGridViewCellFormattingEventArgs args) 
{ 
    if(args.ColumnIndex == 9) //Might be 8, I don't remember if columns are 0-based or 1-based 
    { 
     DataGridViewRow row = dataGridView.Rows[e.RowIndex]; 
     args.Value = (int)row.Cells[6].Value - (int)row.Cells[5].Value; 
    } 
} 

링크 : CellFormatting 이벤트, DataTable을로 DataGridView에 바인딩 DataGridViewcellFormattingEventArgs

+0

블루 라자 감사합니다. 오류가 발생했습니다. 오류 \t \t "Operator '-' 'System.Windows.Forms.DataGridViewCell'및 'System.Windows.Forms.DataGridViewCell'피연산자에 '연산자'를 적용 할 수 없습니다. \t 생각이 있습니까? –

+0

EB - row.Cells [index]가 DataGridViewCell 객체를 반환하기 때문입니다. Anthony Pegram과 같은 방법으로 셀의 Value 속성을 호출하여 정수로 파싱해야합니다. 덧붙여 Raja의 코드는 열 9에서 편집 할 경우에만 호출됩니다.이 코드는 내가 원하는 것일 지 모르겠습니다. –

+0

@EB : 수정 됨. 그러나, 나는 물어야 했음에 틀림 없다; 어떻게 그것을 사용하고 싶습니까? 5 열과 6 열이 데이터 소스에 바인딩되어 있다고 생각했습니다. 일반적으로 원하는 것입니다. 그러나 Excel처럼 DataGrid를 사용하려고한다면 CellEndEdit 이벤트를 대신 처리하는 것이 좋습니다. –

1

아래 샘플 코드는 주어진 위치 (열과 행, 0- 색인)에서 값을 검색 한 다음 해당 값을 숫자로 변환하는 방법을 보여줍니다. 그런 다음 계산을 DataGridView 내의 다른 셀에 다시 저장할 수 있습니다.

object value1 = dataGridView1[4, 0].Value; 
object value2 = dataGridView1[5, 0].Value; 

int val1, val2; 
if (int.TryParse(value1.ToString(), out val1) && int.TryParse(value2.ToString(), out val2)) 
{ 
    dataGridView1[8, 0].Value = val1 - val2; 
} 
else 
{ 
    MessageBox.Show("cannot subtract, invalid inputs."); 
} 
+0

Anthony에 답해 주셔서 감사합니다. 양식 클래스에 코드를 구현했습니다. 그것은 좋았지 만 내가 그것을 디버깅 할 때 2 열에 값을 입력하고 아무 것도 열 9에서 발생했습니다. 특정 이벤트 처리기에서이 코드를 구현해야합니까? DataGridView_CellEndEdit 이벤트 처리기에서 시도했지만 다시는 아무 일도 없었습니다. buttonclick 이벤트에서 코드를 사용해야합니까? –

1

및 열에게 관련 표현을 제공합니다. 이 예를 외삽 해보십시오.

 DataTable table = new DataTable(); 
     table.Columns.Add("Column1", typeof(int)); 
     table.Columns.Add("Column2", typeof(int)); 
     table.Columns.Add("Column3", typeof(int), "Column1+Column2"); 
     dataGridView1.DataSource = table; 

여기서 'dataGridView1'은 일반적인 DataGridView 컨트롤입니다.

관련 문제