2017-05-16 1 views
0

안녕하세요 저는 C Sharp & Windows Forms를 처음 사용하고 있습니다. 여러 줄 TextBox의 특정 문자열을 설정할 수 없습니다. 나는 지금까지 일들을 시도했다.C에서 복수 줄 TextBox의 특정 줄 설정 #

textBox1.Lines[1] = "welcome to stackOverflow";

위의 코드는 컴파일 타임 오류를 제공하지 않습니다하지만 난 디버그 모드를 사용하여 결과를보고 할 때 예상하지 않았다.

나는 또한이 MSDN 기사를 읽었지만 stream[] 생성자를 사용하여 만든 새 모음집이 있지만 여전히 동일한 문제가 발생합니다.

textBox1.Text[1] = "welcome to stackOverflow"; 

Text 부동산 유형 string입니다 당신이 string에 인덱서를 사용할 때 그 위치에 당신에게 char을 제공 : 당신이 string 여기 char에 할당하려고하기 때문에

답변

2

은 컴파일러 오류를 제공해야 . 또한 문자열은 변경되지 않으므로 새 문자열을 만들지 않고도 특정 위치의 문자를 실제로 변경할 수는 없습니다.

textBox1.Text = "welcome to stackOverflow"; 

을 아니면 문자열의 배열에서 한 줄 이상이있는 경우에는 라인 프로퍼티 설정해야합니다 :

이 같은 직접 Text을 설정해야

var lines = new [] { "foo", "bar" }; 
textBox1.Lines = lines; 
+0

감사합니다. 내 응용 프로그램에서 사용자 option.so를 기반으로 여러 줄 TextBox를 교체해야합니다.이 경우에는 문자열 []의 모든 인스턴스를 새로 만들어야합니다. 다른 방법이 있습니까? –

+0

OP는 컴파일 할 'textBox1.Lines [1]'(msdn 링크 확인)을 사용하려고 시도한 것 같습니다. 그리고 문제는'Lines'가 ** new ** 배열 ('Text'로 만든 배열)을 단순히 반환한다는 것입니다. 배열의 항목을 변경해도 컨트롤에는 영향을 미치지 않습니다. 항상 새로운 텍스트를 (속성 중 하나를 사용하여) 제어해야합니다. – Sinatr

+0

@Agyaat는 줄을 저장하기 위해'string []'필드를 생성합니다. 배열을 변경하고 해당 배열을 선으로 설정하십시오. 행의 수를 변경해야 할 경우 배열을 다시 작성하십시오. 특정 라인을 업데이트해야한다면'lines [0] = "foo"'를 설정하면된다. 예, 배열을 고정 크기로하기 때문에 행을 추가하거나 제거 할 때 배열을 다시 만들어야합니다. –

0

모든 값을 그 textBox1.Lines에 직접 설정하면 textBox1에 영향을 미칩니다.

문제를 해결할 수있는 해결책이 있습니다. 나는 그것이 최선의 방법이라고 생각한다. 텍스트 상자의 현재 값을 복제해야합니다. 그런 다음 그것에 새로운 가치를 부여합니다. 마지막으로 텍스트 상자로 돌아갑니다.

var curValue = (string[])textBox1.Lines.Clone(); 
curValue[1] = "welcome to stackOverflow"; 

//Set back to textBox1 
textBox1.Lines = curValue;