作成日: 2021/02/01 最終更新日: 2021/02/01
文書種別
使用方法
詳細
指定した列のテキスト長に応じて列幅を自動調整するには、グリッドビューとして内部的に使用されているFlexGridコントロールのGetDataDisplayメソッドとTextRendererのMeasureTextメソッドを利用します。
すべての行について、GetDataDisplayメソッドで取得したテキストの幅をMeasureTextメソッドで計算し、その中の最大値をGanttViewの列のWidthプロパティに割り当てることで、列幅の自動調整が可能になります。
以下に、「タスク名」列の幅を自動調整するコードをご紹介します。
◎サンプルコード(VB)
すべての行について、GetDataDisplayメソッドで取得したテキストの幅をMeasureTextメソッドで計算し、その中の最大値をGanttViewの列のWidthプロパティに割り当てることで、列幅の自動調整が可能になります。
以下に、「タスク名」列の幅を自動調整するコードをご紹介します。
◎サンプルコード(VB)
Imports C1.Win.C1FlexGrid
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' タスクの設定
C1GanttView1.Tasks(0).Start = DateTime.Today
C1GanttView1.Tasks(0).Finish = DateTime.Today.AddDays(5)
C1GanttView1.Tasks(0).Name = "TaskAA"
C1GanttView1.Tasks(1).Start = DateTime.Today
C1GanttView1.Tasks(1).Finish = DateTime.Today.AddDays(5)
C1GanttView1.Tasks(1).Name = "TaskBBBB"
C1GanttView1.Tasks(2).Start = DateTime.Today
C1GanttView1.Tasks(2).Finish = DateTime.Today.AddDays(5)
C1GanttView1.Tasks(2).Name = "TaskCCCCCC"
C1GanttView1.Tasks(3).Start = DateTime.Today
C1GanttView1.Tasks(3).Finish = DateTime.Today.AddDays(5)
C1GanttView1.Tasks(3).Name = "TaskDDDDDDDD"
' 表示列の設定
C1GanttView1.Columns(4).Visible = True ' 開始日列を表示
C1GanttView1.Columns(5).Visible = True ' 終了日列を表示
' テキスト長に応じた列幅調整
Dim GridView As C1FlexGrid = C1GanttView1.Controls(2)
Dim width As Integer = 30
Dim j As Integer = 0
For j = 1 To GridView.Rows.Count - 1
Dim data As String = GridView.GetDataDisplay(j, 2)
Dim temp As Integer = TextRenderer.MeasureText(data, GridView.Font).Width
If temp > width Then
width = temp
End If
Next
C1GanttView1.Columns(1).Width = width + 5 ' 「タスク名」列の幅を設定
End Sub
End Class
◎サンプルコード(C#)using C1.Win.C1FlexGrid;
namespace prj_C1GanttView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// タスクの設定
c1GanttView1.Tasks[0].Start = DateTime.Today;
c1GanttView1.Tasks[0].Finish = DateTime.Today.AddDays(5);
c1GanttView1.Tasks[0].Name = "TaskAA";
c1GanttView1.Tasks[1].Start = DateTime.Today;
c1GanttView1.Tasks[1].Finish = DateTime.Today.AddDays(5);
c1GanttView1.Tasks[1].Name = "TaskBBBB";
c1GanttView1.Tasks[2].Start = DateTime.Today;
c1GanttView1.Tasks[2].Finish = DateTime.Today.AddDays(5);
c1GanttView1.Tasks[2].Name = "TaskCCCCCC";
c1GanttView1.Tasks[3].Start = DateTime.Today;
c1GanttView1.Tasks[3].Finish = DateTime.Today.AddDays(5);
c1GanttView1.Tasks[3].Name = "TaskDDDDDDDD";
// 表示列の設定
c1GanttView1.Columns[4].Visible = true; // 開始日列を表示
c1GanttView1.Columns[5].Visible = true; // 終了日列を表示
// テキスト長に応じた列幅調整
C1FlexGrid gridView = c1GanttView1.Controls[2] as C1FlexGrid;
int width = 30;
for (int j = 1; j < gridView.Rows.Count; j++)
{
string data = gridView.GetDataDisplay(j, 2);
int temp = TextRenderer.MeasureText(data, gridView.Font).Width;
if ((temp > width))
{
width = temp;
}
}
c1GanttView1.Columns[1].Width = (width + 5); // 「タスク名」列の幅を設定
}
}
}
旧文書番号
86375