본문 바로가기

Mobile Develop/WinMoDev Q&A

안녕하세요. 처음 시작하는 초보입니다. ^^;

질문자 : 괴무리(monster7575)  링크 : http://cafe.naver.com/winmodev/1189
<질문내용>

안녕하세요. 처음 시작하는 초보입니다.

 

설명이 좀 애매할지도 모르겠으나.. 우선 질문 한번 드려볼께요..

 

compact framework 2.0이고 mobile 6.0 pro 에뮬로 테스팅을 하고 있습니다.

 

우선 Form이 2개가 있습니다.

 

Form1에는 예를 들어 소녀시대의 멤버 이름이 적힌 9개의 버튼이 있구요

각 버튼을 누르면 Form2로 넘어가면서 각 멤버에 대한 프로필 (이름, 나이, 키, 사진)이 나오는

순서의 애플을 만들어 보려고 하는데요.

 

아래 제가 9개의 멤버들의 정보를 배열에 담아 Form2으로 값을 넘겨 각각의 프로필을

나타내게 끔하려고 소스를 넣어 두겠습니다.

 

총 9개의 배열이 있는데. 한 배열에 프로필 내용을 다 담고 싶은데 잘 안되더라구요 ㅠㅠ

그리고 Form1 소스 아랫쪽에 보심 Form2로 sender 하는 부분이 있는데

 

Form2에서 이값을 어떻게 받아서 출력을 해주어야 하는지 잘 모르겠습니다.

힌트나 참고 할수있는 소스를 공유 주시면 너무 감사드리겠습니다.

관련소스/참고자료

 Form1.cs

 

namespace FormLectureNew
{
    public partial class Form1 : Form
    {
       
        String[] memberArray = new String[9];
        int CheckNum;   
      

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
          
           int SHeight = SystemInformation.MenuHeight; //MainMenu 세로 길이

           Size rect = Screen.PrimaryScreen.WorkingArea.Size; //작업 영역 Widht, height
           int WWidth = rect.Width;  //작업 영역 가로길이
           int WHeight = rect.Height-SHeight; //작업 영역 세로길이

          
           Sosimember member1 = new Sosimember("윤아",10,150,40,"yuna.gif");
           Sosimember member2 = new Sosimember("수영",20,160,41,"suy.jpg");
           Sosimember member3 = new Sosimember("효연",30,161,42,"hy.gif");
           Sosimember member4 = new Sosimember("유리",31,162,43,"yuri.gif");
           Sosimember member5 = new Sosimember("태연",25,166,33,"ty.gif");
           Sosimember member6 = new Sosimember("제시카",26,120,20,"jesica.gif");
           Sosimember member7 = new Sosimember("티파니",27,130,25,"tipany.gif");
           Sosimember member8 = new Sosimember("써니",22,166,50,"seoni.gif");
           Sosimember member9 = new Sosimember("서현",23,168,47,"seoh.gif");   

           memberArray[0] = member1.Name;
           memberArray[1] = member2.Name;
           memberArray[2] = member3.Name; //위의 memer1~9의 값을 한번에 담고 싶은데 안되네요. ㅠㅠ
           memberArray[3] = member4.Name;
           memberArray[4] = member5.Name;
           memberArray[5] = member6.Name;
           memberArray[6] = member7.Name;
           memberArray[7] = member8.Name;
           memberArray[8] = member9.Name;

          
          
         
         

            for(int i =0 ; i < memberArray.Length ; i++)
            {
            Button button = new Button();
            button.Text = memberArray[i];
            button.Location = new Point(0, (WHeight/memberArray.Length)*i);
            button.Size = new Size(WWidth, WHeight/memberArray.Length);
            button.ForeColor = Color.SteelBlue;
            button.BackColor = Color.White;
            button.Click += new EventHandler(button_Click);
            Controls.Add(button);
            }
               
        }
       

        void button_Click(object sender, EventArgs e)
        {
           
            Button button = (Button)sender; 
           
           
            for (int i = 0; i < memberArray.Length; i++)
            {
                if(button.Text==memberArray[i]) //각 버튼 클릭시 i값을 체크
                {
                    CheckNum = i;
                }
            }
            Form2 f = new Form2(memberArray[CheckNum]); //Form2로 배열을 넘겨 Form2에서 출력하고자하는데 방법을;;
            f.Owner = this;
            f.ShowDialog();
        }
    }
}

 

 

Form2.cs

 

using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
namespace FormLectureNew
{
    public partial class Form2 : Form
    {


        public Form2()
        {
            InitializeComponent();
        }
       
       public Form2(string Name) //Form1의 각 배열이 값을 어떻게 가지고 와서
        {
            InitializeComponent();
         
        }
       
       
        private void menuItem3_Click(object sender, EventArgs e)
        {
          
            MessageBox.Show("이름 : {0}\r\n나이 : 20세\r\n키 : 180Cm\r\n몸무게 : 80kg"); //여기에 출력할수있을까요.. ㅠㅠ
        }
         
    }
}

<답변내용>

안녕하세요 루나네스 입니다

간단한 예제를 하나 만들어 봤습니다
Sosimember 라는 클래스는 임의로 만들었고

Form1에서 Form2로 데이터를 넘기는 작업이 들어가 있습니다
Form2의 생성자를 Form2(Sosimember mbr) 이런식으로 overloading 해서 받는 것을
예제로 만들어 봤습니다

추가로...
native라면 소멸자에서 string을 저장한 버퍼를 해제해 줘야 하지만
managed에서 string은 그럴 필요가 없습니다

우선 C#의 클래스 부분부터 차근차근 공부해보시는 것이 좋을 것 같네요 ^^;

 작성일 : 2010.02.05

보다 자세한 정보는 윈도우 폰/모바일 개발자 모임에서 만나보실 수 있습니다