C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

グリッドの境界線がうまく描画できません。


(過去ログ 117 を表示中)

[トピック内 1 記事 (1 - 1 表示)]  << 0 >>

■68809 / inTopicNo.1)  グリッドの境界線がうまく描画できません。
  
□投稿者/ まおまお (6回)-(2013/11/18(Mon) 13:31:34)

分類:[.NET 全般] 

環境は Windows7 MicrosoftVisualStudio2010 です。

フォームにflexGridを張り付け下記のプログラムを作成

表示すると、左側の境界線が、思うように表示できません。
一部が描画されなかったり、スクロールするたびに線が
変わったりします。

どうすればよいのでしょうか?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
 public partial class Form1 : Form
 {
  public Form1()
  {
   InitializeComponent();
  }

  private void Form1_Load(object sender, EventArgs e)
  {
   // マージセル
   fGrid.MergedRanges.Clear();
   C1.Win.C1FlexGrid.CellRange cr = fGrid.GetCellRange(2, 2, 4, 4);
   cr.Data = "";
   fGrid.MergedRanges.Add(cr);
   fGrid.Refresh();
  }

  private void fGrid_OwnerDrawCell(object sender, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e)
  {
   Graphics g = e.Graphics;
   C1.Win.C1FlexGrid.CellRange cr = new C1.Win.C1FlexGrid.CellRange();
   cr = fGrid.GetMergedRange(e.Row, e.Col);
   e.DrawCell();
   if (cr.IsSingleCell == false)
   {
    Rectangle r = new Rectangle(e.Bounds.Left - 1, e.Bounds.Top - 1, e.Bounds.Width, e.Bounds.Height);
    g.DrawLine(new Pen(Color.Red), new Point(r.Left, r.Top), new Point(r.Left, r.Bottom)); // 左
    g.DrawLine(new Pen(Color.Green), new Point(r.Right, r.Top), new Point(r.Right, r.Bottom)); // 右
    g.DrawLine(new Pen(Color.Blue), new Point(r.Left, r.Top), new Point(r.Right, r.Top)); // 上
    g.DrawLine(new Pen(Color.Yellow), new Point(r.Left, r.Bottom), new Point(r.Right, r.Bottom)); // 下
   }
  }
 }
}

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -