読者です 読者をやめる 読者になる 読者になる

いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

DevExpress奮闘記-021 (XtraGridでのデータコピーの仕様)


Version9以降、XtraGridのGridControlにてCtrl-Cを押下すると
セルのデータに加えて自動的にカラム名を付加するようになりました。


これ、リリースノートに記載されていたのを見た当初、便利〜とかいって
喜んでいたのですが、実際に使ってみると、なんとカラム名を付加するしない
っていう制御がまったくデフォルトでは用意されていません。(常にカラム名
が付加されます・・・)


こういうのって、切り替える事がデフォルトで出来ないと意味無いと思うんです。
ユーザによっては、カラム名が勝手に付加されると困る場合もあると思うので。


特に、グリッドを利用していて、常時AutoFilterRowを表示している場合
普通に使っていると、当然セルの値をCtrl-CでコピーしてAutoFilterRowに
貼り付けたりします。その際、カラム名が先頭行に付加されているから
AutoFilterRowにカラム名が貼り付いてしまいます。


だらだらと、不満を書いてしまいましたが、回避方法は以下のようにします。

GridView.GetHeadersTextメソッドをオーバーライドして何もしないようにする。


処理的には、オーバーライドして何もしないようにしたらオッケイでした。
でも、この為だけに、継承コントロールを作成しないといけません。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using DevExpress.XtraGrid.Views.Grid;

namespace Samples {
    public partial class CustomGridView : GridView {

        public CustomGridView() {
            InitializeComponent();
        }

        public CustomGridView(IContainer container) {
            container.Add(this);
            InitializeComponent();
        }

        protected override void GetHeadersText(StringBuilder sb) {
            //
            // nop.
            //
        }
    }
}


なんか、腑に落ちないのでSuggestionあげときました。