- PR -

DataGridViewの最初の1行目のEditingControlが正常に動作しない

1
投稿者投稿内容
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-05-12 10:19
RTanakaBox
DataGridViewRTanakaBoxEditingControl
DataGridViewRTanakaBoxColumn
DataGridViewRTanakaBoxCell

を作って DataGridView の桁で使用しています。
RTanakaBox に独自に作成したプロパティの値が、DataGridView に最初からある行に
のみ正しく渡されていない問題が起きています。
最初からある行に、独自に作成したプロパティの値を渡すには、どのように指定して
やる必要があるのでしょうか?


以下、詳細です。

RTanakaBox は、TextBox に正規表現文字列プロパティを追加したもので、
"^[0-9]*$"と指定すると 0〜9しか入力を受け付けなくするというものです。

しかし、DataGridView で最初からある Row 追加用の行に対してだけは、入力できて
しまいます。ブレークポイントで値チェックしている部分を参照すると、値が正常に
渡されていないことを確認しました。
しかし、その後追加した行に関しては、値が正常に渡されており、目的どおり正規表
現による入力制限が効く状態になります。

試しに、TextBox の MaxLength プロパティで 2 を指定すると正しく2文字以上の文
字の入力を受け付けなくなります。このことから、独自に追加したプロパティの値
のみ、最初からある Row 追加用の行に反映されていないことがわかりました。

いろいろ動きを調べてみているのですが、どうしてもわかりません。
よろしくお願いします _(_*_)_
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-05-13 11:22
直接的な解決では無いのですが、InitializeComponent(); 直後に Clear() メソッ
ドを実行したら、とりあえず正常に動作するようになりました。

コード:

#region MainForm Class
//**************************************************************************************************
// MainForm Class
//**************************************************************************************************
public partial class MainForm : Form
{
    #region Constructor
    //**************************************************************************************************
    // Constructor
    //**************************************************************************************************
    public MainForm() : base() {
        this.InitializeComponent();
        this.dataGridView.Rows.Clear();
    }
    #endregion



AllowUserToAddRows で末尾行が生成された後に EditingControl の独自プロパティ
が設定されるためではないかと思っているんですが、Clear() メソッドで末尾行を
再生性してくれるからかなぁ〜、と思っています。
1

スキルアップ/キャリアアップ(JOB@IT)