2012-04-15 3 views
-1

간단한 문제가 생겼습니다. 그리고 나는 그것을 제거 할 수 없었다.C# 간단한 GUI 패널

패널을 정적으로 변경했습니다. 페이지 전반에 걸쳐 패널에 액세스 할 수 있습니다. 그리고 내가 GUI를 변경했을 때 정적 인 공개를 공개로 재설정합니다. 그리고 나에게 오류를 준다. 여기서 공개 회원을 볼 수는 없습니다.

그래서 프로그램을 실행하기 위해 약간의 GUI를 변경할 때마다 정적을 설정해야합니다.

저를 도와주십시오.

나는 이것이 쓰레기 문제라는 것을 알고 있습니다. 백핸드에서 무슨 일이 일어나고 있는지 궁금하다.

visual studio 2011을 사용 중입니다. 개발자 미리보기.

+2

이러한 조작의 목표는 무엇입니까? –

+5

어떤 GUI 라이브러리를 사용하고 있습니까? Winforms? WPF? ASP.NET? 지하철? – svick

+0

Windows 양식 사용 중입니다. –

답변

1

WinForms를 사용하고 있다고 가정합니다.

Microsoft Visual Studio에서 생성 된 자동 생성 코드를 변경하지 마십시오. 변경하면 자동으로 생성 된 코드가 덮어 쓰여집니다. 대신 코드 뒤에 static을 사용하십시오.

예를 들어 클릭하면 변수가 변경되는 버튼입니다.

public static int MyGlobalVariable 
private void button1_Clicked(object sender, EventArgs e) 
{ 
    MyGlobalVariable = 4; 
} 

또한 당신을위한 두통이 많이 발생합니다 조만간 공공 정적을 사용하는 것과 완전히 다른 디자인을 고려한다. 보통 더 일찍.

+0

정적 공공 System.Windows.Forms.Panel 프로그램; 이것은 내가 선언 한 것입니다 –

+0

예, 알겠습니다. 정적이되어야하므로이 양식을 다른 곳에서 사용하고 있습니다. 어떻게 그 코드가 어떻게 생겼습니까? 질문을 편집하십시오. – vidstige

+0

감사합니다. 나는 이것을 할 또 다른 방법이있다. 하지만 저는 이것을 아주 바로하고 싶습니다. 내가 뭘하려고하는지 이해하길 바래. 사실 나는 한 폼에서 선언 된 패널을 다른 폼으로 쉽게 사용하려고합니다. 나는 함수를 만들거나 패널 객체의 참조를 전달하고 싶지 않습니다. 단지 정상적인 방법으로 사용하고 싶습니다. 그래서 비주얼 스튜디오가 만들고자하는 배경이 무엇인지 알 필요가 있습니다. 할까요. 또한 이것을 알고 좋은 방법입니다. –

0

내가 제대로 질문을 이해하지 있는지 확인 (당신에 의해 무슨 뜻 이죠 "언제 GUI를 변경 적?")하지만, 아마도 이것은 당신이 찾고있는 무엇 :

public partial class Form1 : Form 
{ 
    public static Panel panelS = new Panel(); 

    public Form1() 
    { 
     InitializeComponent(); 
    } 
} 

그리고 :

public partial class Form2 : Form 
{ 
    public Form2() 
    { 
     InitializeComponent(); 
     Form1.panelS.Location = new Point(100, 100); 
    } 
} 
+0

Form2의 생성자에서 Form1에 대한 참조가없고 Form2의 생성자에서 인스턴스화하면 목적을 달성 할 수 없습니다. Form1의 참조를 Form2에 전달해야합니다. –

+0

아니요, panelS 필드는 정적입니다. – vidstige