2010-12-06 3 views
1

현재 사용자가 디렉터리를 찾아 목록 상자에 추가 할 수있는 목록 상자 컨트롤이있는 winform이 있습니다. 이 디렉토리 위치는 응용 프로그램 설정 파일 (문자열로?)을 사용하여 저장되지만 각 디렉토리 문자열을 어떻게 분리해야하는지 잘 모르겠습니다. 양식을 다시로드하면 모든 디렉토리가 설정 파일의 개별 항목으로 목록 상자에로드됩니다.설정에 여러 디렉터리 저장 및 목록 상자로로드

  1. 은 무엇 응용 프로그램 설정 파일 내에서 여러 위치를 저장하는 가장 효율적인 방법이 될 것입니다 :

    는 그래서 기술적으로 두 가지 질문이 있습니까?

  2. 설정에서 목록 상자로 디렉토리를로드하는 방법은 무엇입니까?

내 생각은 하나의 문자열 설정에서 모든 디렉토리를 저장하고 쉼표로 구분하는 것이 었습니다 (여러 디렉토리있다 기억),하지만이 할 수있는 더 효율적인 방법이 있는지 잘 모르겠어요.

답변

1

아니요 !!!! 절대 그렇게하지 마라 !!!! 쉼표는 폴더 이름에 포함될 수 있으며 구분 기호로 쉼표를 사용하면 프로그램에 많은 중요한 문제가 발생할 수 있습니다.

Windows의 폴더 이름에는 사용할 수없는 문자를 사용할 수 있습니다. 분리가 불량으로 \/: * ? " < > |

또한 당신은 '\'c:\\data\\ 및 사용으로 경로 어쩌면 저장하기 때문에 \/를 사용할 수 없으며, 또한 어쩌면 그래서 /가 위험 사용 c:/data/로 저장. 나는 * 또는 |을 사용하는 것이 좋다고 생각한다. 불법이기 때문에 폴더 경로와 연결된 어떤 폴더 경로도 될 수 없기 때문이다. 연결되어있는 폴더 경로는 읽을 수 있으며 단순히 구분자로 * 또는 |을 인식하여 인식 할 수있다.

String[] paths = s.Split(new char[]{'*'}, StringSplitOptions.RemoveEmptyEntries); 
    listBox1.Items.AddRange(paths); 

여기서 s는 설정 파일에서 읽은 연결된 폴더 경로의 문자열입니다. 또한 당신은

 String[] paths = s.Split(new char[]{'*'}, StringSplitOptions.RemoveEmptyEntries); 
     listBox1.DataSource = paths; 
+0

심지어 그 생각하지 않았다, 내 마음을 교차하지 않았다 믿을 수 없다. 감사. – user

+0

. edited.8moretogo –

0

쉼표로 string.Split을 수행하고 목록 상자의 원본을 분할 결과로 설정할 수 있습니다.

string settings = GetFromConfig(); 
var items = settings.Split(','); 
listBox1.DataSource = items; 
+0

가 위, '더 쉼표'를 참조하지 사용할 수 있습니다) –

0

당신은 설정 파일에 StringCollection를 사용할 수 있습니다.

컬렉션에 넣은 후에는 List<String>에 다시 넣은 다음 ListBox.Items 속성을 사용하여 항목을 다시 추가 할 수 있습니다. 구체적으로는 Add 메서드입니다.

관련 문제