2012-04-26 4 views
1

오랫동안이 작업을 해오 고 있으며 작업을 마무리하는 데 거의 익숙해졌지만 오류가 계속 발생합니다. 내가 가진 첫 번째 오류는 이것이었다 ArgumentException was unhandled이었다InvalidCastException이 C#에서 처리되지 않았습니다.

나는이 그것을 고정 있도록
else 
{ 
    using (StreamWriter sw = File.AppendText(path))<--This is where is says 
    Argument exception was unhandled.    
    {  
     foreach (var item in employeeList.Items) 
      sw.WriteLine(item.ToString()); 
    } 

확인 :

try 
{  
    StreamWriter sw = File.AppendText(path); 
    foreach (var item in employeeList.Items) 
     sw.WriteLine(item.ToString()); 
} 
catch 
{ 
    MessageBox.Show("Please enter something in"); 
} 

좋아 지금은 오류가 잘못된의

을 얻고있다 캐스트 예외 'WindowsFormsApplication2.Employee'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다. 이 라인에

: 나는 짓을

string path = txtFilePath.Text;  

if (File.Exists(path)) 
{ 
    using (StreamWriter sw = File.CreateText(path)) 
    { 
     foreach (string line in employeeList.Items)<-- Right here at the string line 
      sw.WriteLine(line); 
    } 
} 

는 시도를 이동하고 주위를 잡아 나는 오류가 점점 계속. 저장 버튼을 사용하여 수행하려는 작업은 현재 들어있는 값을 잘라 내지 않고 선택된 레코드를 txtFilePAth에 지정된 파일에 씁니다. 하지만 그 상자에 뭔가를 쓰지 않고 버튼을 누르면 메시지가 나타나기를 원합니다. 그렇습니다. 사용자가 파일을 저장할 수 있기 때문에 특정 경로가 없다는 것을 알고 있습니다. 그들이 원하는 곳이면 어디든. 누군가 내가 잘못하고있는 것을 이해하도록 도와 줄 수 있습니까?

+0

장소 전체에서 Try/Catch를 치는 것으로 문제를 해결하지 않아야합니다. 'foreach (employeeList.Items에있는 Employee e) {...}'를 실행 한 다음 파일에 쓸 데이터를 추출하는 것이 더 합리적 일 것입니다. – Thomas

답변

4

employeeList.Items은 목록이 바인딩 된 데이터 항목의 목록을 반환합니다. 이것은 문자열 목록이 아니라 Employee 개체 목록입니다 (응용 프로그램의 어딘가에서 정의한 클래스 인 것 같습니다). 따라서 작동하는 구문은 다음과 같습니다.

foreach (Employee employee in employeeList.Items) 
{ 
    // do something with the employee object 
} 
+0

내 마음이이 프로젝트에 혼란스러워하고 있습니다. – shan

관련 문제