2012-02-28 4 views
0

나는 두 가지 형식의 applictaion을 가지고 있습니다. "MainForm"에 3 개의 문자열 열이있는 DataGrid가 있습니다. 번째 형태의 대상은이 코드다른 양식에 위치한 datagridview에 행을 추가하는 방법

private void MainForm_Load(object sender, EventArgs e) 
{ 
    dgvTasks.Rows.Add("s1", "s2", "s3"); 
} 

작동하지만

1,2- 3 columnns 텍스트 일부 parametres이 데이터 그리드에 행을 추가하는 난이 코드를 삭제할 때 또 다른 형태는

//"MainForm" 
public void addRowToDataGridView(string type, string title, string time) 
{ 
    dgvTasks.Rows.Add(type, title, time); 
} 

//"ParametersForm" 
public static MainForm fm = new MainForm(); 
private void btnSave_Click(object sender, EventArgs e) 
{ 
    fm.addRowToDataGridView("s1", "s2", "s3"); 
} 

오류를 작동하지 않습니다. 그냥 침묵하고 행이 추가되지 않습니다. 나를 도와 줄 수 있습니까?

+0

그리드 뷰가 어디서 무엇을 목표로하고 있는지 명확하지 않습니다. – gideon

+0

코드 위치/코드와 데이터 그리드에 따라 달라집니다 - 동일한 f 그것은 작동합니다. 하지만 코드를 다른 폼에 넣으면 작동이 멈 춥니 다. –

+0

두 번째 폼의 목적은 행을 추가하는 것입니다. 첫 번째 양식에 위치한 DataGrid. 내가 어떻게 할 수 있는지 말해 줄 수있어? –

답변

2

MainForm fm = new MainForm();

이렇게하면 MainForm에 대한 인스턴스 개체를 만들 때 다른 MainForm을 만들었습니다.

활성 MainForm을 얻어야합니다. 따라서 활성 MainForm 인스턴스를 보유해야합니다.

//here is your MainForm 
{ 
    public List<MyGVContent> SetColumnHead 
    { 
      set 
      { 
        //here call your method to whom give 'value' as parameter 
        //attention, that in value contains items with Type, Title, Time 
        addRowToDataGridView(); 
      } 
    } 
    //which will update your 'dgvTasks' gridview 
) 

//here is your Parameters Form 
{ 
    private void btnSave_Click(object sender, EventArgs e) 
    { 
     //here call the property to whom send parameters 
     this.MainForm.SetColumnHead = ... 
    } 
} 

//where 
public sealed class MyGVContent 
{ 
    string Type 
    { 
     get; set; 
    } 

    string Title 
    { 
     get; set; 
    } 

    string Time 
    { 
     get; set; 
    } 
} 

행운을 빕니다 :

//"MainForm" 

public static MainForm MainFormRef { get; private set; } 
public Form1() 
{ 
    InitializeComponent(); 
    MainFormRef = this; 
} 

public void addRowToDataGridView(string type, string title, string time) 
{ 
    dgvTasks.Rows.Add(type, title, time); 
} 


//"ParametersForm" 
private void btnSave_Click(object sender, EventArgs e) 
{ 
    var fm = MainForm.MainFormRef; 
    fm.addRowToDataGridView("s1", "s2", "s3"); 
} 
+0

MainForm이 닫혀있을 때 공용 정적 MainForm MainFormRef가 삭제되는지 묻습니다. –

+0

MainForm을 닫은 후에도 더 이상 필요가 없어도 유지됩니까? –

+0

죄송합니다. 내 의견을 작성하지 못했습니다. 모든 것 : 아니오, 폐기되지 않았습니다. MainFormRef는 MainForm 메모리 주소를 유지합니다. 이런 식으로 MainFormRef를 사용하여 새 MainForm을 만들 수 있습니다. \t 또한 MainForm은 응용 프로그램 또는 Thr Form1이 닫힐 때까지 MainForm이 정적이기 때문에 메모리에서 지워지지 않습니다. – sinanakyazici

0

내가 당신의 질문을 이해, 나는 모든 종류의 (출의 MainForm의 속성 '세터'를 확인하면 같은 대답

을 제안 할 수 있습니다.

관련 문제