【スポンサード リンク】

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【スポンサード リンク】
【スポンサード リンク】

メインフォームから、サブフォームを操作する。

本日は、またプログラミングの雑記です。

仕事のほうでもだいぶ完成に近づいてきているので順調です

さて、では、プログラミング行きます。

その前にこちらのバナーをクリックお願いしますね。
ブログランキング・にほんブログ村へ
にほんブログ村

フォームを操作する際に、メインフォームでエラーが発生したとか何かメッセージを出したいときにメッセージボックスを使用します。しかし、メッセージボックスではいろんな付加機能をつけられない。

そこで、小さめのサブフォームを作成して使用することでテキストボックス付けたり、いろんな機能を持たせたコントロールを配置します。

このフォームですが、当然サブフォーム側のコードに書いていってもいいんですがそうするとメインフォームへのデータ展開や、メインフォームから操作などが難しくなっちゃいます。

そこで、今回の

メインフォームからサブフォームを操作
です。

ちょっと強引なやりかたですが、紹介します。

①サブフォームの各コントロールのModifyを「public」に設定

②メインフォーム側でサブフォームのインスタンスを作成
Form2 fm = new Form2();

③メインフォームにて
fm.textbox(コントロール名).text.Tostring()(メソッド);
みたいな感じで操作します。

④イベント操作は、
fm.(コントロール).(イベント) += (Tabを押せば、自動で追加)
実装、ハンドラは自動で作成されるので、そのなかに処理を書きます。

⑤Form2のテキストボックスの値を取得するには?
イベントのSender値で受け取れるので、TextBox tx = (TextBox)Sender
string a = tx.text とすれば、a のところにForm2に配置したテキストボックスの値が入る。

⑥最後に、fm.ShoeDialog();で表示する。

※フォームのインスタンス作成は、名前空間内で行い、パブリックにしておく。
限定的に使用するときは Using(fm){}で内部に処理を記入することでUsingを抜けた時点でインスタンスは自動でDisposeされる。それ以外のときは、メインフォームのクロージングイベントなどでDisposeする。

最後に注意ですが、今回の操作方法はメインフォームで確実に操作したいときに使用するもので、普通はサブフォーム側にて操作するといいと思います。


応援クリックお願いします。
ブログランキング・にほんブログ村へ
にほんブログ村
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

【スポンサード リンク】
【スポンサード リンク】

WindowsForm内でタッチキーボードを操作する。

主題から、今までのブログ記事とは、違いますが…

備忘録として、これからは自分の仕事(C#プログラミング)にて、躓いたところとか、ネット検索でなかなか
出てこなかった部分を書いていこうと思います。

まあ、平日にパチンコ行けなくなったのでその変わりの話題として更新していきます~。


とりあえずブログ村バナーは貼りますが(笑)
ブログランキング・にほんブログ村へ
にほんブログ村


まず、WinDows8のタブレット型PCの場合、標準でソフトキーボード(TabTip)と
オンスクリーンキーボード(osk)があります。いままでのWindowsにもあるのは、
OSKのほうです。現状、私はWinXPのVisualStudio2008にてデバッグしているので、当然
ソフトキーボードの取り扱いはわかりませんでした。

そこでネットで調べてみると、


上記がどうも、ソフトキーボードの格納場所らしいのでProcess.Start()で実行してやれば
ソフトキーボードが起動しました!
System.Diagnostics.Process hProc = System.Diagnostics.Process.Start(C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe)

そして、ソフトキーボードがいらなくなれば,いらなくなったところでhproc.Kill()とすればいい・・・・

はずなんですが!


なぜか、プロセスがキルされずに、残ってしまうんですよね~。で、Killしたあとにタスクマネージャみてもばっちり残ってます。

これを回避するために、現在実行中のプロセスをすべて取得して、その中に「TabTip.exe」があれば
それをKillする、という方法に変更しました!なぜなら、プロセスの終了からはちゃんと消去できてましたからね。

//ローカルコンピュータ上で実行されているすべてのプロセスを取得

System.Diagnostics.Process[] ps =
System.Diagnostics.Process.GetProcesses();


foreach (System.Diagnostics.Process p in ps)
{
if(p.ProcessName=="TabTip")
{p.Kill()}
}

これで、現在実行しているプロセスをすべて取得してその中に「TabTip」があればそれをKillして終了
することができます。

実はこれでもまだ不満が・・・・・。

フォームを最大表示した状態でTabTipを起動すると、自動でTabTipが表示された分、フォームが縮小するのですがTabTipをKillしたときに、元の大きさにもどらないんですよね。
空白の部分をタッチすれば、もとに戻るのですがやっぱり自動で戻ってほしいですよね!

そこで、色々試してみたんですが一個うまくいったので、紹介します。
それは、現在のフォームを一度隠してすぐに表示させることです。

this.Hide();
this.Show();

これで、OK!TabTipを終了してすぐに上記のメソッドを実行すれば表示が復帰します。

他にも方法があるのかもしれませんが、自分のための備忘録としてなので、まあ、いいでしょう。

他にも、色々あるので平日はこんなまじめな記事をアップしていこうと思います。

記事の参考にしたURLです・・・
.Net Tips

できたら、応援ぽちお願いします。

ブログランキング・にほんブログ村へ
にほんブログ村

テーマ:プログラミング - ジャンル:コンピュータ

【スポンサード リンク】
竹島は日本の領土
竹島" title="竹島は日本の領土">竹島は日本の領土
スポンサード リンク
【スポンサード リンク】 【アウトドア専門店】 私のポイントサイト
【げん玉】

【マクロミル】

【楽天ウィジェット】
カウンター
現在までのアクセス総数です。
最新記事
プロフィール

Author:イオタ
FC2ブログへようこそ!

最新コメント
カテゴリ
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。