���̋L���͉������ł��B����o�^�i�����j����ƑS�Ă������������܂��B
�@DataGridView�R���g���[���ł́A�������e�̃Z�����A�����ĕ��ԏꍇ�ɁA������1�̃Z���ɂ܂Ƃ߂邱�Ƃɂ��\�������₷���ł���B�ȉ��̉�ʂ͒ʏ�̕\���i��j�Ɠ����Z����1�ɂ܂Ƃ߂��ꍇ�̕\���i���j�̗�ł���B
�m�ʏ�̕\���n
�m�����Z�����܂Ƃ߂��ꍇ�̕\���n
�A�����铯�����e�̃Z����1�̃Z���ɂ܂Ƃ߂�DataGridView�R���g���[���i���j
�@���̂悤�ȕ\���́A�s�v�ȃZ���̒l�Ƌ��E�����������Ƃɂ������ł���B�{�e�ł́A���̂悤�Ȏ菇�ɂ�肱����������Ă���B
�@1.�̃Z���̒l�����������鏈���́A�Z�����\������钼�O�ɃZ�����Ƃɔ�������CellFormatting�C�x���g�̃^�C�~���O�ōs�����Ƃ��ł���B�܂��A2.��3.�̃Z���̋��E���̕`��ݒ�ɂ��ẮA�Z���̕`�掞�ɃZ�����Ƃɔ�������CellPainting�C�x���g�̃^�C�~���O�ōs����B�ǂ���̃C�x���g�ɂ����Ă��A�C�x���g�E�n���h���ɓn�����p�����[�^����A���ݏ������̃Z���̈ʒu��m�邱�Ƃ��ł���B
�@�܂��ȉ��ɁA�����̎菇�����������T���v���E�v���O�����������B��L�̉�ʂ͂��̃T���v���E�v���O�����̎��s��ł���B
�@���̃T���v���E�v���O�����ł́ADataGridView�R���g���[���ɕ\������f�[�^�Ƃ��āA��IT�̐V���L���ɂ��Ă�RSS���iRSS 2.0�j���g�p���Ă���B�v���O�����ł́A����RSS���A�L���̌��J���A���J���Ă���t�H�[�����A�L���^�C�g���݂̂��O���b�h�ɕ\������BRSS���̎擾��DataGridView�R���g���[���̏������́A�t�H�[����Load�C�x���g�E�n���h���ōs���Ă���B
// dgvgroupedcell.cs
using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
public class MyForm : Form {
DataGridView dgv;
// �w�肵���Z����1��̃Z���̒l���r
bool IsTheSameCellValue(int column, int row) {
DataGridViewCell cell1 = dgv[column, row];
DataGridViewCell cell2 = dgv[column, row - 1];
if (cell1.Value == null || cell2.Value == null) {
return false;
}
// �����ł͕�����Ƃ��ăZ���̒l���r
if (cell1.Value.ToString() == cell2.Value.ToString()) {
return true;
} else {
return false;
}
}
// DataGridView��CellFormatting�C�x���g�E�n���h��
void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {
// 1�s�ڂɂ��Ă͉������Ȃ�
if (e.RowIndex == 0)
return;
if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex)) {
e.Value = "";
e.FormattingApplied = true; // �ȍ~�̏����ݒ�͕s�v
}
}
// DataGridView��CellPainting�C�x���g�E�n���h��
void dgv_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) {
// �Z���̉����̋��E�����u���E���Ȃ��v�ɐݒ�
e.AdvancedBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.None; �i1�j
// 1�s�ڂ��w�b�_�A�s�w�b�_�̏ꍇ�͉������Ȃ�
if (e.RowIndex < 1 || e.ColumnIndex < 0)
return;
if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex)) {
// �Z���̏㑤�̋��E�����u���E���Ȃ��v�ɐݒ�
e.AdvancedBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None; �i2�j
} else {
// �Z���̏㑤�̋��E��������̋��E���ɐݒ�
e.AdvancedBorderStyle.Top = dgv.AdvancedCellBorderStyle.Top; �i3�j
}
}
// �t�H�[����Load�C�x���g�E�n���h��
void MyForm_Load(object sender, EventArgs e) {
// ��IT��RSS�����f�[�^�Z�b�g�ɓǂݍ���
DataSet ds = new DataSet();
ds.ReadXml("http://atmarkit.itmedia.co.jp/rss/rss.xml");
// 3�̗�i���J���A�t�H�[�����A�^�C�g���j�݂̂�\��
dgv.ColumnCount = 3;
dgv.Columns[0].DataPropertyName = "pubDate";
dgv.Columns[0].HeaderText = "���J��";
dgv.Columns[1].DataPropertyName = "category";
dgv.Columns[1].HeaderText = "�t�H�[����";
dgv.Columns[2].DataPropertyName = "title";
dgv.Columns[2].HeaderText = "�L���^�C�g��";
// ��̎����������s��Ȃ�
dgv.AutoGenerateColumns = false;
// RSS����<item>�v�f�������f�[�^�\�[�X�Ƃ��Ďg�p
dgv.DataSource = ds.Tables["item"];
}
// �t�H�[���̃R���X�g���N�^
public MyForm() {
dgv = new DataGridView();
dgv.Dock = DockStyle.Fill;
dgv.CellFormatting += new DataGridViewCellFormattingEventHandler(dgv_CellFormatting);
dgv.CellPainting += new DataGridViewCellPaintingEventHandler(dgv_CellPainting);
this.Controls.Add(dgv);
this.Size = new Size(480, 240);
this.Load += new EventHandler(MyForm_Load);
}
}
class Program {
[STAThread]
static void Main() {
Application.Run(new MyForm());
}
}
// �R���p�C�����@�Fcsc dgvgroupedcell.cs
Copyright© Digital Advantage Corp. All Rights Reserved.