2010-04-22 2 views
0

C#에서 새 변수를 생성하는 방법.C# : 다른 변수에서 변수를 구성하는 방법

$a = 'var'; $b = 'iable'; 
$variable = 'var'; 
echo ${$a.$b}; 

을하지만 어쩌면 그것은 C#으로 가능하다 :

내 말은, 이것은 PHP에서 구현되는이

public void updateXXX(string endingOfVariable, int newValue) 
{ 
    this.textBox_{endingOfVariable} = newValue; 
} 

처럼 STH를합니다.

문제는 - C# Windows Form에서 ~ 500 textBoxes를 만들었고 값을 설정하려면 빌드해야합니다. switch() {case :; } 500 건의 증언.

각 텍스트 상자에 이름을 할당 한 경우
+0

내 답장을 다른 게시물에 복사하여 붙여 넣습니다. "비주얼 프로그래밍 (끌어서 놓기, 필요한 경우 서식 지정)으로 이미 창 형식으로 창을 만들었습니다. 지금 할 수있는 작업은 무엇입니까?" – ozzWANTED

+0

일반적인 Apple 또는 Google UI에서 영감을 얻으십시오 ;-) http://stuffthathappens.com/blog/2008/03/05/simplicity/ – dtb

답변

4

에서 반사

static void Main(string[] args) 
    { 
    Type type = typeof(MyClass); 
    object o = Activator.CreateInstance(type); 

    FieldInfo field = type.GetField("text", BindingFlags.NonPublic | BindingFlags.Instance); 
    field.SetValue(o, "www.domain.com"); 
    string text = (string)field.GetValue(o); 

    Console.WriteLine(text); 

    } 

을 사용할 필요가, 당신은 FindControl 메서드를 사용하여 텍스트 상자에 전송할 수 있습니다.

((TextBox)FindControl("textbox_" + endingOfVariable)).Text = newValue; 
7

, 당신은 컨트롤에 사전 매핑에게 이름을 만들 수 있습니다

var boxes = form.Controls.OfType<TextBox>().ToDictionary(t => t.Name); 

public void Update(string name, int newValue) 
{ 
    boxes[name].Text = newValue.ToString(); 
} 
+0

@dtb : +1, 그건 사전을 구축하는 정말 매끄러운 방법입니다. –

+2

ToDictionary 앞에 .Where (t =>! string.IsNullOrEmpty (t.Name))를 추가하여 이름이없는 TextBox를 catch하고 사전을 작성하는 예외를 발생시키지 않도록해야합니다. – chuckj

0

갖는 500 텍스트 상자를 윈도우 형태로 그 자체의 문제 일 수있다 (도 많은 컨트롤이 느려질 수 있습니다).

이렇게하는 한 가지 방법은 컨트롤을 만들 때 사전에 넣는 것입니다. 프로그래밍을 통해 컨트롤을 만드는 것이 좋습니다. 그런 다음 사전 키를 사용하여 필요한 컨트롤을 꺼냅니다.

+0

나는 시각적 프로그래밍 (끌어서 놓은 다음 필요에 따라 형식을 지정)으로 Windows 형식으로 이미 만들었습니다. 지금 무엇을 할 수 있습니까? – ozzWANTED

+1

수동으로 _500_ 텍스트 상자를 드래그 앤 드롭하여 이름을 변경 했습니까? Yikes, 당신이 돈을 받았기를 바랍니다. –

+0

네, 제 직업에서 나는 '반드시해야합니다. 당신이 그것을해야만합니다. 그리고 당신이 어떻게하고 싶지 않으면 그럴 것입니다.'D – ozzWANTED

0

당신은 당신이 500 건으로 스위치 문을하고있는 사실을 무시 java2s

+4

그는 리플렉션을 사용하기 위해 ** 필요하지 않습니다. FindControl은 훨씬 더 똑똑해질 것입니다. – ANeves

+0

@sr pt : 맞습니다. 반향은 일반적인 해결책이지만 폼 컨트롤을 사용하면 FindControl이 아마도 더 좋습니다. 생각하지 않았어. –

-1

아니야. 너는 그렇게 할 수 없다.

관련 문제