- - PR -
NET Framework クラス ライブラリ上のメソッドのオーバーライドがうまくいきません
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-11-05 20:58
お世話になっております。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5675&forum=7 上記の過去の記事に書かれている処理と同じ事を実現したいと考えていますがうまくいきません。 過去記事の一番最後の書き込みにある Public Class MyDataGrid から End Class までのコードを単純に自分のソースコードの後ろに書くだけでは実現出来ないのでしょうか。 何かお気づきの点がありましたらアドバイスを頂きたいと思います。 | ||||
|
投稿日時: 2003-11-06 14:41
こんにちわ。諸農です。
「ソースコードの後ろ」とはどのあたりのことを指しているのか判りませんが、 その参考にされているコード(クラス)の何がうまくいかないのでしょうか? コンパイルエラーでしょうか?それとも、動作が予定しているものにならないのでしょうか?? 全体的に、ちょっとわからない内容ですので、もう少し具体的に書かれてみては いかがでしょうか。 ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||
|
投稿日時: 2003-11-06 15:28
Jubeiさんご指摘ありがとうございます。
おっしゃる通り説明不足でした。 現在DataGridを用いたWindowsアプリケーションを作成しております。 自分のコードは Public Class MntForm Inherits System.Windows.Forms.Form Private Sub MntForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load (内容省略) End Class というようになっておりまして、こちらのコードの後ろに Public Class MyDataGrid Inherits System.Windows.Forms.DataGrid Const WM_KEYDOWN As Integer = &H100 Private mControl As Windows.Forms.Control Public Property NextControl() As Control Get Return mControl End Get Set(ByVal Value As Control) mControl = Value End Set End Property Protected Overrides Function ProcessCmdKey _ (ByRef msg As System.Windows.Forms.Message, _ ByVal keyData As System.Windows.Forms.Keys) As Boolean If msg.Msg = WM_KEYDOWN Then If (keyData = Keys.Tab) Then mControl.Focus() Return True Else Return MyBase.ProcessCmdKey(msg, keyData) End If End If Return MyBase.ProcessCmdKey(msg, keyData) End Function End Class という参考記事のコードをそのまま貼り付けただけでは参考記事に書かれている動作が 出来ないようなのですが、そちらの原因についてご存知でしたら意見を伺いたい。という内容の質問です。 ちなみにコンパイルは正常に通過しました。 まず参考記事から追って頂かなければならないという形式で質問してしまったので 配慮が足りなかったと反省しております。 まだ説明が足りないようであればご指摘をお願いします。 | ||||
|
投稿日時: 2003-11-06 18:22
画面(提示されたソースのMntForm)で使用しているDataGridは、ちゃんとMyDataGridになってますでしょうか?
参考記事で示されていたソースは、.NET標準のDataGridを継承し、そのイベントをOverrideしています。 なので、画面で使用するDataGridのインスタンスはMyDataGridのインスタンスでないと意味がありません。 こうした場合、MyDataGridのソースを別プロジェクトにしてdllとしてコンパイルし、それをVS.NETのツールボックスに登録し、それを画面に貼り付けた方が簡単かと思います。いかがでしょう? |
1