- R・田中一郎
- ぬし
- 会議室デビュー日: 2005/11/03
- 投稿数: 979
|
投稿日時: 2006-03-02 14:46
以下のように書いてみました。
コード: |
|
using System;
using System.ComponentModel;
namespace R.TANAKA.ICHIRO.Windows.Forms
{
#region DataGridViewEditCancelEvent
//****************************************************************************
// DataGridViewEditCancelEvent
//****************************************************************************/
public delegate void DataGridViewEditCancelEventHandler(
object sender,
DataGridViewEditCancelEventArgs e
);
public class DataGridViewEditCancelEventArgs : CancelEventArgs
{
public DataGridViewEditCancelEventArgs(
int columnIndex,
int rowIndex,
int[] selectedRowIndex,
object value
);
public int ColumnIndex { get; }
public int RowIndex { get; }
public int[] SelectedRowIndex { get; }
public object Value { get; }
}
#endregion
|
すると、
'R.TANAKA.ICHIRO.Windows.Forms.DataGridViewEditCancelEventArgs.DataGridViewEditCancelEventArgs(int, int, int[], object)' は abstract または extern に指定されていないため、本体を宣言する必要があります。
'R.TANAKA.ICHIRO.Windows.Forms.DataGridViewEditCancelEventArgs.ColumnIndex.get' は abstract または extern に指定されていないため、本体を宣言する必要があります。
のエラーが表示されました。
名前空間の「R.TANAKA.ICHIRO」を「System」に変えると上記のエラーが表示されまません。
僕には、何故こうなるのかがわかりません。どなたか理由を教えていただけないでしょうか?
また、皆さんは既存のコントロールに機能拡張する時、名前空間名はどうしていますか?
|
- 囚人
- ぬし
- 会議室デビュー日: 2005/08/13
- 投稿数: 1019
|
投稿日時: 2006-03-02 14:58
ん?
単純に実装を書いてないからでは?行いたい事は何ですか?
_________________ 囚人のジレンマな日々
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2006-03-02 15:06
まさか転記したソースをそのままビルドにはかけていませんよね?
特にコンストラクタの部分は明らかにおかしいです。
2003, 2005 ともに正常にビルド終了しました。
コード: |
|
namespace R.TANAKA.ICHIRO.Windows.Forms {
public delegate void DataGridViewEditCancelEventHandler(
object sender,
DataGridViewEditCancelEventArgs e
);
public class DataGridViewEditCancelEventArgs : System.ComponentModel.CancelEventArgs {
public DataGridViewEditCancelEventArgs(int columnIndex, int rowIndex, int[] selectedRowIndex, object value) {
}
public int ColumnIndex {
get {
return 1;
}
}
public int RowIndex {
get {
return 1;
}
}
public int[] SelectedRowIndex {
get {
return null;
}
}
public object Value {
get {
return null;
}
}
}
}
|
面倒なので、1 とか null とか返してます。
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- R・田中一郎
- ぬし
- 会議室デビュー日: 2005/11/03
- 投稿数: 979
|
投稿日時: 2006-03-02 15:06
引用: |
|
囚人さんの書き込み (2006-03-02 14:58) より:
ん?
単純に実装を書いてないからでは?行いたい事は何ですか?
|
囚人さん、いつもありがとうございます。
行いたいことは、上記のコードでコンパイラを通すことです。
実装を書くとは、どのようなことをすれば良いのでしょうか?
|
- 囚人
- ぬし
- 会議室デビュー日: 2005/08/13
- 投稿数: 1019
|
投稿日時: 2006-03-02 15:09
引用: |
|
実装を書くとは、どのようなことをすれば良いのでしょうか?
|
じゃんぬさんの提示されたコードのように中身を書いてやる事です。
田中さんが出されたコードは、インターフェースや抽象クラスのみが許されている書き方です。(インターフェースにコンストラクタはありませんが)
だから、abstract にしろってメッセージが出ているんですね。
[ メッセージ編集済み 編集者: 囚人 編集日時 2006-03-02 15:11 ]
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2006-03-02 15:13
引用: |
|
R・田中一郎さんの書き込み (2006-03-02 15:06) より:
実装を書くとは、どのようなことをすれば良いのでしょうか?
|
まず、コンストラクタが空で閉じられているので不正。
プロパティも空実装 (というと御幣ですが) なので不正。
囚人さんもコンパイラさんも、abstract クラスを作りたいのか、
実装クラスを作りたいのかが、わかりませんと言っているのだと思います。(^-^;)
囚人さんの場合 -> 行いたい事は何ですか?
コンパイラさんの場合 -> abstract または extern に指定されていないため〜
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- R・田中一郎
- ぬし
- 会議室デビュー日: 2005/11/03
- 投稿数: 979
|
投稿日時: 2006-03-02 15:21
囚人さん、じゃんぬねっとさん、いつもありがとうございます。
引用: |
|
じゃんぬねっとさんの書き込み (2006-03-02 15:06) より:
まさか転記したソースをそのままビルドにはかけていませんよね?
特にコンストラクタの部分は明らかにおかしいです。
|
DataGridViewCellBeginEditEventArgs の定義を開いてコピーして必要なプロパティ
分追加した訳です。
「ああ、こんな書き方ができるなんて、さすがシーシャーぷ」と感動していた訳です
が。
上記の「こんな書き方」は、もしかして、やってはいけないことなんでしょうか?
以下の書き方が正しいんでしょうか?
コード: |
|
namespace R.TANAKA.ICHIRO.Windows.Forms {
public delegate void DataGridViewEditCancelEventHandler(
object sender,
DataGridViewEditCancelEventArgs e
);
public class DataGridViewEditCancelEventArgs : System.ComponentModel.CancelEventArgs {
public DataGridViewEditCancelEventArgs(int columnIndex, int rowIndex, int[] selectedRowIndex, object value) {
this._ColumnIndex = columnIndex;
this._RowIndex = rowIndex;
this._SelectedRowIndex = selectedRowIndex;
this._Value = value;
}
private int _ColumnIndex;
public int ColumnIndex {
get {
return this._ColumnIndex;
}
}
private int _RowIndex;
public int RowIndex {
get {
return this._RowIndex;
}
}
private int[] _SelectedRowIndex;
public int[] SelectedRowIndex {
get {
return this._SelectedRowIndex;
}
}
private object _Value;
public object Value {
get {
return this._Value;
}
}
}
}
|
[ メッセージ編集済み 編集者: R・田中一郎 編集日時 2006-03-02 15:22 ]
|
- うにくま
- ベテラン
- 会議室デビュー日: 2005/11/05
- 投稿数: 82
|
投稿日時: 2006-03-02 15:21
抽象クラスなのにabstractがない。
実装クラスなのに実装がない。
のどちらかです。
前者であれば以下で通るはずです。
コード: |
|
using System;
using System.ComponentModel;
namespace R.TANAKA.ICHIRO.Windows.Forms
{
#region DataGridViewEditCancelEvent
//****************************************************************************
// DataGridViewEditCancelEvent
//****************************************************************************/
public delegate void DataGridViewEditCancelEventHandler(
object sender,
DataGridViewEditCancelEventArgs e
);
public abstract class DataGridViewEditCancelEventArgs : CancelEventArgs
{
public DataGridViewEditCancelEventArgs(
int columnIndex,
int rowIndex,
int[] selectedRowIndex,
object value
)
{}
public abstract int ColumnIndex { get; }
public abstract int RowIndex { get; }
public abstract int[] SelectedRowIndex { get; }
public abstract object Value { get; }
}
#endregion
}
|
|