2016-10-13 5 views
1

예를 들어 문자가 포함 된 배열에 배열 집합이 있습니다.
{{ '#', '.', '#'} { '#', '$', '#'} { '#', '@', '#',} { '#', '# ','# ',}}
그리고 금액을 변경할 수있는 숫자를 기반으로 그리드를 만들 수 있어야합니다. (모든 내부 배열에 항상 같은 양의 문자가 나타납니다) 내가 내부 배열은 행과 각 내부의 문자 수는 같을 것이다, 그래서 자신의 칼럼에되고 싶은동적으로 그림 상자 그리드를 만듭니다.

"#. #"
"# $ #"
"#를 @ 번호"
" ### "

o이 그리드를 설정하는 가장 좋은 방법은 무엇일까? 그러면 내가하고 싶은 것은 picturebox와 함께 모든 셀을 채우는 것입니다. 특정 그림이 어떤 기호인지에 따라 다릅니다.


그래서 그냥 가장 좋은 방법이 어떤 도움/조언을 많이 DataGridView 가장 간단한 옵션 사용

+1

을 . –

+0

[2 차원 배열을 기반으로 WPF 격자를 채우는 방법] 가능한 복제본 (http://stackoverflow.com/questions/276808/how-to-populate-a-wpf-grid-based-on-a- 2 차원 배열) – rmbq

답변

1

을 감사 할 것입니다 무엇을 궁금해. 예 :

var images = new Dictionary<char, Image>() 
{ 
    {'#', Properties.Resources.Image1}, 
    {'.', Properties.Resources.Image2}, 
    {'$', Properties.Resources.Image3}, 
    {'@', Properties.Resources.Image4}, 
}; 
var data = new List<string>() { "#.#", "#$#", "#@#", "###" }; 
var list = data.Select(x => new 
         { 
          A = images[x[0]], 
          B = images[x[1]], 
          C = images[x[2]] 
         }).ToList(); 
this.dataGridView1.DataSource = list; 

위 코드에서 문자와 이미지 간의 매핑을위한 사전을 만들었습니다. 그런 다음 문자 대신 해당 이미지가 포함 된 목록에 입력 데이터를 형성합니다. 결과 목록을 DataSource (DataGridView)으로 설정하면 문자 대신 해당 이미지가 표시됩니다.


익명 객체를 사용하지 않으려는 어떤 이유로, 당신은 단순히 열 동적 DataTable 가진 숫자 만들 수 있습니다 경우 : a`DataGridView` 가장 간단한 옵션 사용

var images = new Dictionary<char, Image>() 
{ 
    {'#', Properties.Resources.Image1}, 
    {'.', Properties.Resources.Image2}, 
    {'$', Properties.Resources.Image3}, 
    {'@', Properties.Resources.Image4}, 
}; 
char[][] data = new char[][]{ 
    new char[] {'#','.','#'}, 
    new char[] {'#','$','#'}, 
    new char[] {'#','@','#'}, 
    new char[] {'#','#','#'}, 
}; 
var dt = new DataTable(); 
for (int i = 0; i < data.Max(x => x.Count()); i++) 
    dt.Columns.Add(string.Format("C{0}", i), typeof(Image)); 
data.ToList().ForEach(a => dt.Rows.Add(a.Select(x=>images[x]).ToArray())); 
this.dataGridView1.DataSource = dt; 
+0

정말 잘 작동합니다. 덕분에 약간의 적응을해야했지만 감사합니다. 문제가 너무 많아서 빨간 "X"가있는 흰색 상자가 그 아래쪽에 생성됩니다. 그래서 생각합니다. 그 행에서 2 행을 만들기위한 최종선에서 두 번째 행까지는 셀에 넣을 것이 없지만 내일은 아프다. – 1seanr

+1

You 're welcome. 'this.dataGridView1.AllowUserToAddRows = false; '를 설정하십시오. –

관련 문제