C♯相談室 Part28

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2006/02/01(水) 08:00:43
「通常使うプリンタ」に設定されているプリンタ名を獲得するのはどうすればいいのか。
953デフォルトの名無しさん:2006/02/01(水) 10:43:51
「アタック25」でパリ挑戦権を獲得するにはどうすればいいのか。
954デフォルトの名無しさん:2006/02/01(水) 11:05:29
まず葉書き。
955デフォルトの名無しさん:2006/02/01(水) 14:17:42
なんで勝手にインストーラが立ち上がるんだよ!
uzeeeeeeeeeeeeeeeeeeeeeeeeeee!
956デフォルトの名無しさん:2006/02/01(水) 18:05:11
>>952
new System.Drawing.Printing.PrinterSettings().PrinterName;
957デフォルトの名無しさん:2006/02/01(水) 19:17:40
DataGridView勉強し始めたら参考資料がなくて愕然としています。
良いサイトを御存知でしたら誰か教えて頂けませんか?
命令や使い方があればOKです。
958デフォルトの名無しさん:2006/02/01(水) 19:19:08
まだ見かけないな。頑張れ、君がパイオニアだ。
959デフォルトの名無しさん:2006/02/01(水) 19:23:11
try{}.catch{] に関して教えてください。

あるクラスで
try
{
FormA f = new FormA
f.show()
}
catch (Exception ex)
{
// ここで f の Exception を拾いたい
}
のように、FormA での Exception を呼び出した元クラスで拾いたいのですが
今だと FormA のエラー発生箇所で、エラーメッセージが表示されてしまいます。

上記の事を実現する方法はありますか?
960デフォルトの名無しさん:2006/02/01(水) 19:28:13
961デフォルトの名無しさん:2006/02/01(水) 19:34:55
>>960
ありがとうございます。でもこのサイトの説明はSQL使うんですよ。
大げさなしかけはいらないのですが・・・
ヘルプの説明も分かりづらいしググってもいいサイトないんです。
とにかくありがとうございました。
962デフォルトの名無しさん:2006/02/01(水) 20:34:42
>>959
普通にcatchできるはずだけど
963デフォルトの名無しさん:2006/02/01(水) 20:38:09
>>959
ShowをShowDialogの違い
964959:2006/02/01(水) 21:00:45
>>962
それが catch できないんですよ。。。

>>963
Show でも ShowDialog でも catch できませんでした。

もしかして、別 DLL だと catch できませんか?
965デフォルトの名無しさん:2006/02/01(水) 21:03:29
コンパイルは通ってるのか?
966デフォルトの名無しさん:2006/02/01(水) 21:11:06
例外がメッセージループのスレッドで発生するようになるのでトラップできなくなる。
//Showはそれ以前に次に移ってしまうがな。
Application.ThreadExceptionイベントで処理。
967959:2006/02/01(水) 21:19:56
>>966
ありがとうございます。
Application.ThreadExceptionイベントですね、勉強します。

メニューの Exe があって、そこから各機能の DLL(form) を Show しています。
想定できる Exception は、各機能の DLL で処理するんですが、
万が一想定外の例外が発生した場合は、このメニューの EXE でキャッチ
して、.NETFx が出力するメッセージをユーザーには見せたくないん
ですよね。なんで、show した後で、その show を行なった部分で
キャッチしようとしたんですが、たしかに show したら次に進みますね…。


こういった場合、他に定石みたいな組み立て方があれば
アドバイス頂けるとうれしく思います。よろしくお願いします。
968デフォルトの名無しさん:2006/02/01(水) 21:28:14
PageSetupDialogのセンチ指定の問題があるのでいっそインチで使いたいのですが
プログラムから切り替える方法がわかりません。
2.0のPageSetupDialog.EnableMetricは確認しましたが妙な風に丸められるのは相変わらずでした。
コントロールパネルの地域オプションで単位をヤードポンド法に変えれば換わるのは確かめました。
Thread.CurrentCultureやGlobalizationSection.UICultureをいじってるのですが変わってくれません。
今のところ2.0で試してみてますが、1.1でできる方法があればお願いします。


969デフォルトの名無しさん:2006/02/01(水) 21:55:33
>>959
>FormA f = new FormA
>f.show()
行末にセミコロンがないのが気になるんだが…
970デフォルトの名無しさん:2006/02/01(水) 22:03:25
>>959 そのFormのエラーを一まとめにしたいってことでしょ?
Thread.GetDomain().UnhandledException += new UnhandledExceptionEventHandler(Form1_UnhandledException);
で例外出したスレッドをそのままハンドルできるのでそれでやるべし。
971デフォルトの名無しさん:2006/02/01(水) 22:13:55
WinFormの場合は、というかメッセージループに対応する場合はApplication.ThreadExceptionの方。
972970:2006/02/01(水) 22:47:47
補足:Form作るとき別スレッドで作ること。
973デフォルトの名無しさん:2006/02/01(水) 23:41:11
.net初心者です。
イベントについて教えてください。

以下のようなControlクラスのOnClickをオーバーライドするメソッドがありますです。
public class Form1 : System.Windows.Forms.Form
{
protected override void OnClick(EventArgs e)
{
base.OnClick (e);//@
}
}

デリゲートとイベントの仕組みを一通り読み終えたところなんですが、
今の知識で上のメソッドを読むと、
「このFormの基本クラスであるControlクラスのOnClickメソッドをオーバーライドして、
Controlクラスの@OnClickイベントデリゲートに、EventArgs型の引数を渡す事で、
Controlクラスにきっと記述してあるであろう、Control.OnClick += new EventHandler(。。。
んもう。わけわかりません。


974デフォルトの名無しさん:2006/02/01(水) 23:42:09
MSDNに以下のような文言を発見しました。
メモ プロテクトされた OnEventName メソッドを使用すると、
デリゲートをアタッチせずに、派生クラスでイベントをオーバーライドすることもできます。
派生クラスでは、登録されたデリゲートがイベントを必ず受信できるように、
常に基本クラスの OnEventName メソッドを呼び出す必要があります。

んもう。さっき読んだ仕組みも説明がつかなくなってしまったので、以下のように書いてみました。
protected override void OnClick(EventArgs e)
{
base.OnClick (e);//@
}

private void Form1_Click(object sender, System.EventArgs e)
{
MessageBox.Show("Form1_Click");//A

}
private void Form2_Click(object sender, System.EventArgs e)
{
MessageBox.Show("Form2_Click");//B

}
実際にフォームをクリックしてみると、@・A・Bという順番で呼ばれました。
俺。逝ってよし。
975デフォルトの名無しさん:2006/02/01(水) 23:58:44
結局何を聞きたいんだ? 自己完結?
とりあえずOnClickはイベントハンドラではない。
976デフォルトの名無しさん:2006/02/02(木) 00:05:01
すいません。。
↑の二つ無かった事にしてください。

protected override void OnClick(EventArgs e)
{
MessageBox.Show("test");
}
private void Form1_Click(object sender, System.EventArgs e)
{
MessageBox.Show("test");

}
このように書くと、Form1_Clickイベントが発生しないのは何故ですか?
977デフォルトの名無しさん:2006/02/02(木) 00:06:44
イベントハンドら登録してないんだろ
978デフォルトの名無しさん:2006/02/02(木) 00:08:52
派生クラスでOnClickをオーバーライド、つまり上書きしている。
で、基底クラスではユーザがクリックしたときにOnClickを呼び出す。
基底クラスのOnClickでClickイベントに関連付けられたイベントハンドラを呼び出す。
が、派生クラスでOnClickが上書きされているので、
Clickイベントに関連付けられたイベントハンドラを呼び出す部分が実行されなくなる。
979デフォルトの名無しさん:2006/02/02(木) 00:18:25
うお。
こんな時間に優しく教えてくれて感謝します。
ttp://www.atmarkit.co.jp/fdotnet/basics/oop04/oop04_03.html
読みながら、>977・>978読んだら理解できました。
もやもやして寝れないとこだった。
ありがとうございました。
そして俺DQN。
半年、いや一年ROMってきます。
980デフォルトの名無しさん:2006/02/02(木) 05:12:11
質問です
C#2003のaxWebBrouserのイベントで
CommandStateChange というのがありますが

C#2005のWebBrouserのイベントでは 何を指定してやれば同じイベントを指定できますか

変な日本語ですみません(´Д`;
981デフォルトの名無しさん:2006/02/02(木) 05:20:46
Bro w ser な
何したいのか知らんが、進む/戻るならCanGoForward/BackChangedでいいんじゃね
982デフォルトの名無しさん:2006/02/02(木) 05:28:05
>>981
ご親切にどうもです
進んだり戻ったりできますた。

あとスペルミスごめんなさい
983デフォルトの名無しさん:2006/02/02(木) 07:47:21
984デフォルトの名無しさん:2006/02/03(金) 01:06:10
コントロールを別スレッドから操作するにはInvokeが必要なのはわかったが

別スレッドで作ったコントロールを追加するのにも必要?

A,Bスレッドがあって
Bのスレッドコントロールを作成(インスタンス生成)

AのコントロールのControl.Controls.Add(Bスレッドで作成したコントロール)
をInvoke経由で呼び出し、Aスレッド上にBスレッド作成コントロールを追加したとして
Bスレッドで作成したコントロールをこの後もずっと
AスレッドではInvoke経由で操作しないんとまずいのか?
985デフォルトの名無しさん:2006/02/03(金) 01:10:35
なに無茶なことしようとしてんだよ…
ハンドルできる前なら問題ないのかもしれんが。
986デフォルトの名無しさん:2006/02/03(金) 01:14:47
>>984 なんでInvoke必要か考えれ
987デフォルトの名無しさん:2006/02/03(金) 01:29:18
Delegateでいくね?
988デフォルトの名無しさん:2006/02/03(金) 03:08:01
C# と Visual C# は別物ですか?
知人が言うには、
Basic と Visual Basic が違うように、
また、C++ と Visual C++ が違うように、
C# と Visual C# も違うのだとか
そうなんですか?
989デフォルトの名無しさん:2006/02/03(金) 03:09:48
>>988
そりゃ言語と開発環境は別物だろ。
990デフォルトの名無しさん:2006/02/03(金) 03:12:11
>>989
レスありがとうございます
では言語的には C# でおkってことですね
分かりました
991デフォルトの名無しさん:2006/02/03(金) 03:31:06
>>990
ちなみに、VB の BASIC は例えば日本の高校数学の教科書に載ってる(載ってた?)
奴とは確かに全然違うんで、言語の方も VB と呼ばれる。
BASIC はいろいろ方言があるんで、高校の教科書に載ってる奴も
N88 BASIC と言わないと正確には通じない。
それに、VB 6 以前と VB7 以降でかなり言語仕様が変わったんで、
7 以降のは VB.NET って言って別言語扱いした方がいいかと。

C++ はかなり標準化がしっかりされてて、
どの開発環境使おうと C++ は C++。
VC++ は 6.0 までは標準対応が遅れ気味だったけど、
VC++ .NET (VC++ 7.0)以降は他のどのコンパイラよりも標準対応度合いがしっかりしてる。

C# もちゃんと標準化されてるんで、
VC# 使おうと、mono 使おうと、dot GNU 使おうと、SSCLI 使おうと C# は C#。
992デフォルトの名無しさん:2006/02/03(金) 03:34:30
ところで新スレは立てんのか?
// 私は無理だった
993デフォルトの名無しさん:2006/02/03(金) 03:37:33
次スレ立てます。
994993:2006/02/03(金) 03:42:59
995デフォルトの名無しさん:2006/02/03(金) 03:46:51
おいこらなに基本的なミスしてんだ
996デフォルトの名無しさん:2006/02/03(金) 09:10:42
よくわからんが立てたぞ 漏れC#使いじゃ無いがww
ttp://pc8.2ch.net/test/read.cgi/tech/1138925245/
997デフォルトの名無しさん:2006/02/03(金) 09:18:25
>>996


あっちは削除依頼だしとくべさ
998デフォルトの名無しさん:2006/02/03(金) 09:57:47
sage
999デフォルトの名無しさん:2006/02/03(金) 10:48:07
>>994
クビ
1000デフォルトの名無しさん:2006/02/03(金) 11:02:15
the end and a restart.
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。