![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
C++/CLIにてForm1の要素に外部の関数からアクセスしたいです。
Windows7、Visual Studio2010にてC++/CLIで
簡単なフォームアプリケーションを作成しています。
仮に新規作成し、とりあえずテキストボックスを貼りつけたとします。
この際「Form1.h」が自動的に作成され、Form1クラスの中に
textBox1などの要素が自動的に作成されるかと思います。
Form1クラスのメソッドの中からそれにアクセスするには
this->textBox1->Text = L"変更";
みたいにするだけで良いですが、
こうしたForm1クラスの要素に対し、
Form1.h以外の場所にある外部の自作の関数から
アクセスを行うにはどのようにすれば良いのでしょうか。
No.2ベストアンサー
- 回答日時:
> Form1はこのApplication::Runの中で一時的に作成されているのみということなのでしょうか。
そういうことです。
ですから、外部に対してなんらかの形でフォームのオブジェクトを渡す必要があります。
まぁそこの部分を書き換えてもいいんですが、自動生成される部分にはなるべく手を加えない方がスマートです。
あと、外部関数ということはフォームとは別のスレッドからの制御になると思いますが、その場合単純に書き換えようとすると例外になります。
http://www.atmarkit.co.jp/fdotnet/dotnettips/312 …
No.1
- 回答日時:
Form1クラスに変更を行うメソッドを作り、自作関数からそのメソッドを呼び出しましょう。
この回答への補足
実はそういったアクセス用のメソッド自体は作成していたのですが、
外部のファイルや関数からForm1のメソッドを呼び出す方法が分からずにいました。
仮にForm1にvoid test()というメソッドがあったとした場合、
違うファイルからそのtest関数を呼び出すにはどのようにすれば良いのでしょうか。
というのも、Form1がどこで宣言されているのかもよく分からないのです。
main関数を見れば
int main(array<System::String ^> ^args)
{
// コントロールが作成される前に、Windows XP ビジュアル効果を有効にします
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
// メイン ウィンドウを作成して、実行します
Application::Run(gcnew Form1());
return 0;
}
などとなっていましたが、Form1はこのApplication::Runの中で一時的に
作成されているのみということなのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- その他(プログラミング・Web制作) python 3.10で 同じlistに同じ構文で同じデータ代入した結果が異なる現象発生 7 2022/06/18 11:08
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Visual Basic(VBA) VBA 行削除した連番 4 2023/06/27 16:00
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
javascriptからjavaを呼び出したい
-
JSPで<SELECT>の中にDBから持っ...
-
C++/CLIにてForm1の要素に外部から
-
Application.Wait の参照設定
-
final修飾子を使っているのに、...
-
C# 演算 最大値 最小値 表現の仕方
-
mainメソッドのthrows節で設定...
-
C#で右からnカラム目に文字を挿...
-
エクセルVBAにおけるON TIMEメ...
-
アクセスVBA 時間を止める
-
【sendkeysメソッドが動かずに...
-
DataGridViewでセルクリックイ...
-
コンパイルエラーの理由。
-
ウィンドウを最前面にできません
-
onClickで関数呼出し後に、結果...
-
処理内容がほぼ同じメソッドの...
-
VBPをダブルクリックするとたま...
-
HyperLinkのNavigateUrl属性に...
-
javaの中でaddElementは何ですか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
mainメソッドのthrows節で設定...
-
final修飾子を使っているのに、...
-
Labelコントロールに数字を代入...
-
onClickで関数呼出し後に、結果...
-
DataGridViewでセルクリックイ...
-
JSPで<SELECT>の中にDBから持っ...
-
コマンドプロンプト実行後に画...
-
Refreshメソッドの使い方
-
エクセルVBAにおけるON TIMEメ...
-
boolean型のフィールドとゲッタ...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
配列のメソッド
-
【sendkeysメソッドが動かずに...
-
Excel VBA でExcelを終了したい...
-
VB.netで、シリアル通信のタイ...
-
worksheets & rows メソッドは...
-
Application.Wait の参照設定
-
(String args[])というメッソ...
おすすめ情報