2008-10-27 5 views
2

파일 이름에 대한 레지스트리를 읽을 때마다 하나의 레지스트리 항목마다 3 개의 항목이 내 콤보 상자에로드됩니다. 내가 레지스트리에 한 파일을 나열하는 경우 내가 볼 것입니다 :왜 C# 콤보 상자에 1 대신에 3 개의 값이 삽입됩니까?

콤보 박스 값 :

C : \은 File2.txt

< -----

여기에 빈 C : \ file1.txt

이 코드에 문제가 있다는 것을 발견했습니다. 'if (previousFiles! = null)'횟수가 3 번입니다. 이 문제를 어떻게 해결해야합니까?

for (int i = 0; i <= 5; i++) 
{ 
    Object previousFiles = OurKey.GetValue("Files" + i); 
    if (previousFiles != null) 
    { 
     comboBox1.Items.Add(previousFiles.ToString()); 
    } 
} 

많은 감사 월요일 아침 블루스!

답변

0

그냥 "휴식;"을 추가하십시오. 첫 번째 comboBox1.Items.Add() 이후입니다. 삽입 후 루프를 빠져 나옵니다 (원하는 경우).

+0

맞지 않습니다. 그는 왜 그가 중복 및 빈 항목을 얻게되는지 알고 싶어합니다. 솔루션은 하나의 항목으로 콤보 박스를 채 웁니다. – Claudio

0

GetValue() 함수에 문제가있는 것 같습니다. 또한 콤보 상자에 추가하기 전에 null과 빈 문자열을 확인해야합니다.

0

문자열 값이라고 가정 할 때 사용자가 볼 수있는 것은 빈 문자열입니다. 코드에서 알기가 어렵습니다.

따라서 null 대신 객체를 먼저 캐스팅하십시오.

Object previousFiles = OurKey.GetValue("Files" + i) as string; 

그럼 대신 일반 널 (null) 검사의

string.IsNullOrEmpty() 

를 사용합니다.

1

글쎄, 그것은 if() 문을 6 번, comboBox1.Items.Add() 문을 3 번 친해야합니다. 논리적 인 설명은 실제 문제가 레지스트리 키를 쓰는 코드에 있다는 것입니다. Regedit.exe를 실행하여 이러한 레지스트리 키 값에 실제로 저장된 내용을 찾습니다.

0

죄송합니다. 작성한 코드에 죄송합니다. 이전 reg 키를보고있었습니다. 죄송합니다.

+0

그래서 바로 그 때였습니다 :) –

관련 문제