C#에서 Class의 개념은 VB 에서 모듈과 비슷한걸로 알고 있는데요.
예를들어 C#에서 모듈처럼 Class를 사용하기 위해서
class test
{
public test()
{
textbox1.text = "테스트"
}
}
이런식으로 만들어
모듈처럼 Class 를 다른곳에서 호출해서 사용하려고하는데....
class에서 textbox1을 인식을 못하네요.
오류메세지는
오류 1 중첩 형식 'testForm.test_1.test'을(를) 통해 외부 형식 'testForm..test_1'의 비정적 멤버에 액세스할 수 없습니다.
라고 뜹니다...
앞에 this. 을 붙여봤지만 소용이 없네요.
VB에서는 모듈에서 Formname.textbox1.value 이런식으로 폼을 앞에 선언해주면 받아왔었는데..
해결방법 부탁드립니다.
안녕하세요?
1. 예상대로 vb6.0에서 c#으로 바꾸어 고군분투 하시는 것으로 판단되네요. 화이팅 입니다.
2. 아래의 코드를 참고하세요.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// 테스트로 textBox1, button1을 하나 올렸습니다.
private void button1_Click(object sender, EventArgs e)
{
// 전후 비교를 위해 내용을 비웁니다.
textBox1.Text = "";
// MyClass 인스턴스를 만들고, 메소드에 처리를 요청합니다.
MyClass my = new MyClass(); // 1. 인스턴스 생성
my.SetText( textBox1, "안녕하세요?" ); // 2. 메소드 호출 .Text가 아닙니다.
my = null; // 3. 리소스 반환
// 메시지가 찍혔는지 확인해 봅니다.
MessageBox.Show(textBox1.Text);
}
}
// Form 밖의 다른 클래스를 하나 만듭니다.
using System.Windows.Forms;
class MyClass
{
// 메서드를 하나 만들어 기능을 제공합니다.
public void SetText(object box, string message)
{
// 전달된 매개 변수를 TextBox로 형변환 합니다.
TextBox textBox = box as TextBox;
// as 연산자는 형변환에 성공하면 해당 타입을, 실패하면 null을 반환합니다.
if (textBox != null)
{
textBox.Text = message;
}
}
}
3. VB6.0과 닷넷은 중요한 차이가 있습니다.
-. VB6.0은 완전한 OOP가 아니지만, VB.NET / C#은 완전한 OOP 언어라는 점 입니다.
-. VB6.0에서는 전역변수를 모으는 모듈 개념이 있지만, 닷넷에서는 모든 것이 캡슐화된
클래스 입니다. 정적클래스 개념은 여기에서 논외로 하겠습니다.
-. VB6.0에서의 클래스와 닷넷에서의 클래스 구조는 개념상 거의 일치합니다.
(필드, 프로퍼티, 메서드, 이벤트, 생성자, 소멸자)
VB6.0에서도 클래스를 정의하면, 이를 사용하기 위해서 인스턴스를 new로 할당해야 사용할 수 있습니다.
하지만, VB6.0의 클래스는 상속이 지원되지 않으며, 따라서 생성자/오버라이드 등의 OOP
개념이 문법적으로 존재하지 않습니다.
-. VB6.0에서의 폼 같은 경우, 프로젝트가 시작되면 메모리 전역 공간에 잡혀 타 클래스나,
다른 폼에서 이름으로 직접 접근할 수 있었지만, C#이나 VB.NET에서의 폼은 이와 달리
순수한 클래스 입니다. 밖에서 폼으로 직접 접근할 수가 없습니다. 인스턴스를 만들지
않으면.
이해와 문제 해결에 도움이 되시길 바랍니다.
감사합니다.
written by
legend
C과외/C#과외/VB과외 프로그래밍 과외.서울인천경기-방문강의.기타전국-화상강의.제대로 체계적으로 배우고싶은분들.15년경력 프리랜서.삼성/포스코/한진 등.
서울,인천,경기,분당,일산,과천,산본,부천,부평,평촌,안산,안양,광명,용인,시흥,성남,수원,평택,오산,화성,동탄,천안,아산,
c#프로그래밍1:1과외, 15년 이상 프로젝트 경력의 프리랜서 직접 강의,
c#프로그래밍 과외, c#프로그래밍교육, IT·컴퓨터·컴퓨터과외비·프로그래밍과외, c# 강좌, c# 프로그래밍,
데이터베이스, 데이터베이스 프로그래밍, db, DB, 과외비,컴퓨터1:1,컴퓨터개인지도,컴퓨터실무과외,컴퓨터과외,컴퓨터1:1과외,
서울,인천,경기,부천,안산,분당,일산,천안,과천,산본,안양,광명,평촌,수원,평택,오산,용인,부평,시흥,성남,화성,동탄
광주,부산,대구,대전,마산,창원,울산,전주,군산,원주,강릉,충청남도,충청북도,강원도,경상남도,경상북도,전라남도,전라북도,제주도
'좋은질문' 카테고리의 다른 글
C언어 포인터 문제 몇가지만 질문 드릴게요 (0) | 2014.09.13 |
---|---|
C# enum 질문 (0) | 2014.09.11 |
C# if문 내부에서 변수 선언하는 방법 (0) | 2014.09.09 |
C# 객체 생성 (0) | 2014.09.08 |
C# 모든 경우의수 조합 출력-알고리즘 (0) | 2014.09.07 |