質問させていただきます。
VB.net 2012 を使用しています。
dllを作成し、複数のプログラムで使用しています。
このdllに、呼出し元の関数をコールする機能をつけたいのですが
可能でしょうか。
-------------------------------------------------------------
プログラムA(関数ABC有り) --> dllを使用
プログラムB(関数ABC有り) --> dllを使用
プログラムC(関数ABC無し) --> dllを使用
-------------------------------------------------------------
dllにはプログラムの関数ABCをコールする機能を付与する。
プログラムAとプログラムBを実行するとdllから関数ABCがコールされる。
プログラムCにはABC関数がないため、何も起こらない。
-------------------------------------------------------------
上記のような事は可能でしょうか。
説明が下手で申し訳ありませんが
よろしくお願い足します。
No.4ベストアンサー
- 回答日時:
こういうこと?
普通のただのイベントを書けばいいように思えますが。
Public Class DataGridViewEx
Inherits DataGridView
Public Delegate Sub PastedEventHandler(sender As Object, cell As DataGridViewCell)
Public Event Pasted As PastedEventHandler
Protected Overrides Sub OnPreviewKeyDown(e As PreviewKeyDownEventArgs)
MyBase.OnPreviewKeyDown(e)
If e.KeyData = (Keys.Control + Keys.V) Then
Me.OnPasted()
End If
End Sub
Protected Overridable Sub OnPasted()
Me.CurrentCell.Value = Clipboard.GetText()
RaiseEvent Pasted(Me, Me.CurrentCell)
End Sub
End Class
Public Class Form1
Private Sub DataGridViewEx1_Pasted(sender As Object, cell As DataGridViewCell) Handles DataGridViewEx1.Pasted
DataGridViewEx1.Rows(cell.RowIndex).Cells(cell.ColumnIndex + 1).Value = "X"
End Sub
End Class
ご返信ありがとうございます。
いただいたサンプルを参考に
思っていた通りの処理ができました。
イベントの呼び出し方を勘違いしていました。
つたない説明にお付き合いいただき、ありがとうございます。
本当に助かりました。
No.3
- 回答日時:
もうちょっと具体的にそれぞれのコードすべてを教えてください。
どこに関数ABCがあって、その関数ABCはどこから呼び出されるのか?
関数ABCと、その呼出場所が1つのDLL内であるならば、大元の呼出場所は、DLLの呼出場所をコールするだけのようにも感じます。
No.2
- 回答日時:
その関数ABCを機能として持つインターフェースを用意し、
インターフェース経由で実行すればいいのでは。
プログラムCはそもそもインターフェースを実装していないということで
呼出自体を行わない作りにすれば。
ご返信ありがとうございます。
上記説明が足りなかったのですが、
プログラムAとプログラムBの中にあるABC関数内の処理は
異なる処理を記述する予定です。
あくまで「ABCという関数を実行する」ということが目的でした。
説明が足りず、申しわけありません。
インタフェースを用いる案はなかったので、
参考にさせていただきます。
ありがとうございます。
No.1
- 回答日時:
RaiseEvent で呼ぶ。
ご返信ありがとうございます。
RaiseEvent で実行してみました。
From1のButton1を押下時すると「成功!」が出力します。
<from1>--------------
Public WithEvents nTest As New TestDLL
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
nTest.DoTest()
End Sub
Public Sub Test_PopUp(ByVal sender As Object, e As EventArgs) Handles nTest.PopUp
MsgBox("成功!")
End Sub
<dll:TestDLL>-------
Public Event PopUp(ByVal sender As Object, ByVal e As EventArgs)
Public Sub DoTest()
RaiseEvent PopUp(Me, New EventArgs)
End Sub
----------
ただ今回はFormのイベントでは無く
以下のようにdll内でイベントを呼び出したいと考えています。
<dll:TestDLL>-------
Public Event PopUp(ByVal sender As Object, ByVal e As EventArgs)
Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
[ 処理 ]
'このタイミングで「成功!」のメッセージを出したい
RaiseEvent PopUp(Me, New EventArgs)
End Sub
-----------
上記例の場合、OnKeyPressの[処理]の後にメッセージを呼び出したいのですが
うまく動きませんでした。
上記のような処理は可能でしょうか。
お手数ですが、よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- ノートパソコン .dllファイルがありませんと表示される 5 2023/04/30 03:03
- その他(OS) OBSが起動できません 3 2022/03/30 12:21
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、写真のプログラムをどう直せ 2 2022/07/09 21:13
- C言語・C++・C# プログラム内から、MIDIファイルの一部分だけを再生する方法 1 2023/02/15 11:08
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- フリーソフト cygewf-2.dllがない、と表示され、ダウンロードしたファイルが動作しない 2 2023/03/27 11:05
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
このQ&Aを見た人はこんなQ&Aも見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
VB.NETで、DLLを頂いたんですが・・
Visual Basic(VBA)
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
-
-
4
System.IO.Directory.GetFilesの順番
Visual Basic(VBA)
-
5
VB.net 任意の例外を発生させるには・・・
Visual Basic(VBA)
-
6
Integer変数をカラにしたいのですが
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
あるプログラムのコマンドライ...
-
Excelで4096点以上のFFTの方法
-
画像を読み込むのと取り込むの...
-
VBAでユーザーフォームが自動的...
-
binファイルってiphone専用です...
-
Vba UserFormを前面に出す方法...
-
読み込み中にアクセス違反が発...
-
XnViewにwebpを「いつも開く」...
-
モジュール、アプリケーション...
-
ドロップダウンリストの文字を...
-
「コンポーネントが見つかりま...
-
閉じるを押してもデバッグが終...
-
基本的なC言語のプログラム
-
1. 仮想CPU「exmini」を使用し...
-
少ない順 昇順 降順
-
[vb.net] dllから呼び出し元の...
-
VBAにてメール作成した際、一部...
-
VC++でプログラムの多言語化を...
-
ボディパンプとシェイプパンプ...
-
ハンドルされていない例外とア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで4096点以上のFFTの方法
-
あるプログラムのコマンドライ...
-
VBAにてメール作成した際、一部...
-
PICマイコンのコピー(クローン...
-
長距離・マラソンをやりながら...
-
Excelに埋め込んだVBAのプログ...
-
「Outlookが他のプログラムによ...
-
自動クエリとはどういうもので...
-
未使用の変数を一括検索する方法
-
読み込み中にアクセス違反が発...
-
VBAでユーザーフォームが自動的...
-
エクセルとワードをデスクトッ...
-
モジュール、アプリケーション...
-
テキストボックスのエンターキ...
-
画像を読み込むのと取り込むの...
-
Vba 実数および実数タイプの変...
-
インクリメント演算子のみを用...
-
main関数を先頭に置くデメリット
-
C言語でのaccess violationに...
-
Application.ScreenUpdatingが...
おすすめ情報
詳細を記します。
DataGridViewに独自機能を追加したユーザーコントロール(dll)を
作成しています。
目的は Ctrl+V で貼り付け処理を追加するためです。
プログラムA,B,CでDataGridViewを使用しており、
貼り付け機能はA,B,Cのすべてで必要のためdllを参照しています。
プログラムAは、
データを張り付けた後に対象列Xに固定文言を貼り付ける必要があります。
プログラムBは、
データを張り付けた後に隠し列Yに値をセットする必要があります。
プログラムCは特に貼り付け後の処理が必要ありません。
続く→
ソースサンプルは以下の通りです。
<プログラムA>---
Public WithEvents nTest As New TestDLL
Public Sub ABC(ByVal sender As Object, e As EventArgs) Handles nTest.Do_ABC
【データを貼り付けた行の対象列X列に、固定文言「AAA」をセットする処理】
End Sub
<プログラムB>---
Public WithEvents nTest As New TestDLL
Public Sub ABC(ByVal sender As Object, e As EventArgs) Handles nTest.Do_ABC
【データを貼り付けた行の隠し列Yに、固定値「100」をセットする処理】
End Sub
<プログラムC>---
ABC関数は無し
続く→
<dll:TestDLL>
Public Event Do_ABC(ByVal sender As Object, ByVal e As EventArgs)
Protected Overrides Sub OnPreviewKeyDown(e As PreviewKeyDownEventArgs)
MyBase.OnPreviewKeyDown(e)
【貼り付け処理】
’’ここでABC関数を実行したい!!!
RaiseEvent Do_ABC(Me, New EventArgs)
End Sub
ここでABC関数を実行したい!! という箇所に「RaiseEvent」で
ABCを実行したいのですが、うまく動きませんでした。
宜しくお願い致します。