C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: クリックイベントにパラメーターを渡す。


(過去ログ 106 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■63139 / inTopicNo.1)  クリックイベントにパラメーターを渡す。
  
□投稿者/ おやじ (1回)-(2012/07/24(Tue) 20:14:23)

分類:[C#] 

お世話になります。

 現在自作ソフトで、他の既製品アプリABC.exeを操作しようとしています。
フォームにボタンを配置し、ボタンを押すたびに他のアプリに
データーを書き込んで実行させようと思っています。書き込むデーターは
エクセルファイルDEF.xlsのA1から下に順次書いてあります。
下記リストでビルトすると「名前 'oWBook' は現在のコンテキスト内に存在しません。」
とエラーが出ます。

oWBookを認識させる方法が分かりません。
他のアプリのハンドルをprivate void button1_Click(object sender, EventArgs e)に
認識させる方法が分かりません。
要はパラメーターの受け渡し方が分かっていません。

今回初めてGUIアプリに臨んでいますが、考え方に間違いがあるのかもしれません。
環境は XP SP3 Visual C# 2010 Express
ABC.exe と DEF.xls は起動し、ハンドルも分かっています。

以上宜しくお願いします。

//using **** ; 記述 省略

namespace jidouka
{
public partial class Form1 : Form
{

// dll の記述 省略

public Form1()
{
InitializeComponent();
}

public void Form1_Load(object sender, EventArgs e)
{
System.IO.Directory.SetCurrentDirectory(@"C:\");
Process Trn = Process.Start(@"C:\ABC.exe");
Trn.WaitForInputIdle(2000);

IntPtr HWndoya = IntPtr.Zero;
String Wintxt = "あいう";

while (HWndoya == IntPtr.Zero)
{
HWndoya = FindWindow(null, Wintxt + null);
Thread.Sleep(100);
}

MoveWindow(HWndoya, 0, 0, 816, 425, 1);

Excel.Application Xls = new Excel.Application();
String filename = @"C:\DEF.xls";
Xls.Visible = false;

Excel.Workbook oWBook = Xls.Workbooks.Open(Filename: filename);
((Excel.Worksheet)oWBook.Sheets[1]).Select();

Excel.Range rng = ((Excel.Worksheet)oWBook.Sheets[1]).Cells[1, 1];
String val = rng.Value2;

private void button1_Click(object sender, EventArgs e)
{

//Excel.Range rng = ((Excel.Worksheet)oWBook.Sheets[1]).Cells[1, 1]; //←エラー
//String val = rng.Value2;
//this.textBox1.Text = val;

}
}
}
引用返信 編集キー/
■63140 / inTopicNo.2)  Re[1]: クリックイベントにパラメーターを渡す。
□投稿者/ Azulean (4回)-(2012/07/24(Tue) 23:12:45)
2012/07/24(Tue) 23:13:20 編集(投稿者)
メンバー変数を使ってください。
ただし、いつ Close するべきかなどはきちんと考えて作る必要があります。

たとえば、かんたんなメンバー変数だと以下のようなことができます。

private int _member = 0;
private void button1_Click(object sender, EventArgs e) 
{
  _member++;
  MessageBox.Show(_member + "回目の表示です");
}

このコードを実行すると、_member に 1 を足してその時の数値を表示します。
これはメンバー変数なので、Click イベントが終わっても覚えていますし、
ほかにイベントを追加したときにも見ることができるようになります。

この基本的な考えを応用して必要な変数をメンバー変数にすれば、
クリックイベントからも見ることができるようになります。

ただし、いつ Workbook を閉じるのかを考えておかないと、
Excel.exe が残り続けると言った定番の不具合を招くかもしれません。

引用返信 編集キー/
■63141 / inTopicNo.3)  Re[2]: クリックイベントにパラメーターを渡す。
□投稿者/ おやじ (2回)-(2012/07/25(Wed) 09:09:31)
No63140 (Azulean さん) に返信
> 2012/07/24(Tue) 23:13:20 編集(投稿者)

Azuleanさん

早速のご返事有難うございます。

メンバー変数のことは知りませんでした。
インターネットの検索キーが適切でなかったと反省しています。
早速調べてみます。


引用返信 編集キー/
■63149 / inTopicNo.4)  Re[3]: クリックイベントにパラメーターを渡す。
□投稿者/ おやじ (3回)-(2012/07/25(Wed) 20:29:08)
> ■No63140 (Azulean さん) に返信
>>2012/07/24(Tue) 23:13:20 編集(投稿者)
Azuleanさん

メンバー変数のこと、すっかり失念していました。

おかげさまで解決いたしました。

超私事ながら、最近好きでVBA,VB,C#を始めました。
今までは手続き型のコンソールアプリだけでしたが、
今回初めてGUIに挑戦しています。
今日10を覚えても、明日覚えているのは0。
歳も歳ですし、「おやじ」から「じじい」に変えたほうが良いかも知れません。

今後とも宜しくお願いします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -