데이타 테이블 그리기.
데이타 테이블 내용 그대로를 그리는 메서드 곧 리포트 관련해서 테이블을 그려주거나
프린트용 도큐먼트에 그려줄때 바둑판그리기와 함께 내부에 글써주는 메서드를 만들었었음.
아래 소스를 실행하기 위해서 위 그림처럼 그리드 뷰 와 픽쳐박스, 버튼을 두고 작업하면 됨.
public partial class Form1 : Form
{
DataTable dt = null;
public Form1()
{
InitializeComponent();
}
private void DrawTable(Graphics g, DataTable dt)
{
if (dt != null && g != null)
{
RectangleF rectF = new RectangleF(0f, 0f, 200f, 25f);
float maxRowCount = Convert.ToInt32(dt.Rows.Count);
float maxColCount = Convert.ToInt32(dt.Columns.Count);
for (float y = 0.0f; y < maxRowCount; y += 1.0f)
{
DataRow dr = dt.Rows[Convert.ToInt32(y)];
for (float x = 0.0f; x < maxColCount; x += 1.0f)
{
SizeF sf = g.MeasureString(dr[Convert.ToInt32(x)].ToString(), new Font("굴림체", 10.0f));
// 높이는 추후 조정..
g.DrawRectangle(new Pen(Color.Black, 1.0f), x * rectF.Width, y * rectF.Height, rectF.Width, rectF.Height);
g.DrawString(string.Format("{0:00} dr[{1:00}]: {2:00}", y, x, dr[Convert.ToInt32(x)]), new Font("굴림체", 10.0f), Brushes.Black, new RectangleF(x * rectF.Width + (sf.Width / 2), y * rectF.Height + sf.Height / 2, rectF.Width, rectF.Height));
}
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
dt = new DataTable();
dt.Columns.Add("A");
dt.Columns.Add("B");
dt.Rows.Add(1, 2);
dt.Rows.Add(3, 4);
dt.Rows.Add(5, 6);
dt.Rows.Add(7, 8);
dataGridView1.DataSource = dt;
}
private void button1_Click(object sender, EventArgs e)
{
if( dt != null ) DrawTable(Graphics.FromHwnd(pictureBox1.Handle), dt);
}
}
'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글
하루 하루.... 일정 기록하고 관리 하는 기능! (0) | 2009.06.09 |
---|---|
TextBox 에서 Enter키가 눌렸을 때 Tab 이동.. 관련해서 두가지.. (0) | 2009.06.05 |
메뉴] 즐겨찾기 읽어들이기 (0) | 2009.05.08 |
그래픽스. 어디에 그려지는가? (0) | 2009.05.08 |
테트리스 (0) | 2009.05.02 |