C♯, C#相談室 Part36
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/12/09(土) 18:33:59前スレ
C♯, C#相談室 Part35
http://pc8.2ch.net/test/read.cgi/tech/1162490865
過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
0002デフォルトの名無しさん
2006/12/09(土) 18:37:08Part33 http://pc8.2ch.net/test/read.cgi/tech/1153537081/
Part32 http://pc8.2ch.net/test/read.cgi/tech/1149934230/
Part31 http://pc8.2ch.net/test/read.cgi/tech/1145075577/
Part30 http://pc8.2ch.net/test/read.cgi/tech/1141448072/
Part29 http://pc8.2ch.net/test/read.cgi/tech/1138925245/
Part28 http://pc8.2ch.net/test/read.cgi/tech/1134514022/
Part27 http://pc8.2ch.net/test/read.cgi/tech/1131544541/
Part26 http://pc8.2ch.net/test/read.cgi/tech/1127063469/
Part25 http://pc8.2ch.net/test/read.cgi/tech/1122352650/
Part24 http://pc8.2ch.net/test/read.cgi/tech/1117631000/
Part23 http://pc8.2ch.net/test/read.cgi/tech/1112968209/
Part22 http://pc8.2ch.net/test/read.cgi/tech/1109630502/
Part21 http://pc5.2ch.net/test/read.cgi/tech/1106490240/
Part20 http://pc5.2ch.net/test/read.cgi/tech/1103005153/
0003デフォルトの名無しさん
2006/12/09(土) 18:38:29Part18 http://pc5.2ch.net/test/read.cgi/tech/1096112588/
Part17 http://pc5.2ch.net/test/read.cgi/tech/1091284402/
Part16 http://pc5.2ch.net/test/read.cgi/tech/1087297504/
Part15 http://pc5.2ch.net/test/read.cgi/tech/1083066815/
Part14 http://pc5.2ch.net/test/read.cgi/tech/1076933504/
Part13 http://pc2.2ch.net/test/read.cgi/tech/1071663456/ (ログ行方不明)
Part12 http://pc5.2ch.net/tech/kako/1066/10660/1066038651.html
Part11 http://pc5.2ch.net/tech/kako/1061/10612/1061262958.html
Part10 http://pc5.2ch.net/tech/kako/1051/10518/1051842450.html
Part9 http://pc2.2ch.net/tech/kako/1039/10396/1039646808.html
Part8 http://pc3.2ch.net/tech/kako/1032/10324/1032488831.html
Part7 http://pc3.2ch.net/tech/kako/1027/10275/1027531796.html
Part6 http://pc3.2ch.net/tech/kako/1022/10222/1022257078.html
Part5 http://pc3.2ch.net/tech/kako/1019/10195/1019533942.html
0004デフォルトの名無しさん
2006/12/09(土) 18:39:19Part3 http://pc.2ch.net/tech/kako/1009/10094/1009473982.html
Part2 http://pc.2ch.net/tech/kako/1002/10024/1002468050.html
Part1 http://pc.2ch.net/tech/kako/977/977112364.html
0005デフォルトの名無しさん
2006/12/09(土) 18:39:55http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/
MSDNライブラリ
http://msdn.microsoft.com/library/ja/
MSDN2
http://msdn2.microsoft.com/ja-jp/library/default.aspx
相互運用マーシャラによるメモリ管理
http://msdn2.microsoft.com/ja-jp/library/f1cf4kkz.aspx
Buffers のサンプル
http://msdn2.microsoft.com/ja-JP/library/x3txb6xc.aspx
文字列のマーシャリング
http://msdn2.microsoft.com/ja-JP/library/e8w969hb.aspx
pinvoke.net: the interop wiki!
http://pinvoke.net/
テンプレ終了
0006デフォルトの名無しさん
2006/12/09(土) 18:45:08おつりんこ
0007デフォルトの名無しさん
2006/12/10(日) 00:44:52プログラム Appli_A.exe と Appli_B.exe があったとして、
Appli_A.exe が Appli_B.exe が起動しているかどうかを知ることってできるの?
起動してるプロセスを取得して、Appli_B.exe があるかをチェックとかでは、
Appli_B.exe の名前をかえられたら、対処できないし…
どうすれば…
0008デフォルトの名無しさん
2006/12/10(日) 00:48:210009デフォルトの名無しさん
2006/12/10(日) 02:50:47どっちも自作中だからMutex使います。ありがとう。
0010デフォルトの名無しさん
2006/12/10(日) 13:58:36マーク自体の変更ではなく、他のコントロールから選択位置を変更出来るようにしたいのですが。
0011デフォルトの名無しさん
2006/12/10(日) 14:23:350012デフォルトの名無しさん
2006/12/10(日) 14:46:32即レスありがとうございます。一応変更できました。
ただ、列として指定する方法は無いのでしょうか?
どうやらDataGridコントロールではCurrentRowというのを設定出来たようなんですが、無くなってしまったのでしょうか。
別に現状で問題は解決したので、+αといった所なのですが。
0013デフォルトの名無しさん
2006/12/10(日) 15:20:32FullRowSelect だかを設定すれば行単位で
0014デフォルトの名無しさん
2006/12/11(月) 09:01:57外れてるかもしれないけど、
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datagridviewcolumnheadercell.sortglyphdirection(VS.80).aspx
0015デフォルトの名無しさん
2006/12/11(月) 19:06:54Form1.cs(Form)とcodefile.cs(コードファイル)があります。
codefile.csにpublic static void xxxx()をつくり、Form1から呼び出すことはできるのですが、
codefileからForm1のコントロールの操作ができません。
コントロールの参照範囲をPrivateからPublic等にしてみましたが駄目でした。
解決方法ご教授願います。
0016デフォルトの名無しさん
2006/12/11(月) 19:11:09可能な限りコードを見せるべきなのよ。
わかった?ボク?
0017デフォルトの名無しさん
2006/12/11(月) 19:18:050018デフォルトの名無しさん
2006/12/11(月) 19:24:23ClickOnceの技術を用いてClient,Serverの両方のAPPLを作成しました。
開発マシン:WindowsXPでは正常に動作するAPPLがWindows Server 2003では動作しません。
ClientからWebサービスのWebメソッドを実行すると
SoapException:401 Unauthorizedの例外が発生します。
** AdministratorのユーザーでLoginしているのになぜ??
--- Client Source ここから ---
try
{
string message = ClientService.Test();
MessageBox.Show(message, "Webサービステスト", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
--- Client Source ここまで ---
0019デフォルトの名無しさん
2006/12/11(月) 19:24:40[WebMethod]
public string Test() {
return Utilities.SerializeTest("Hello");
}
--- Server Source ここから ---
ClientのAPPLは正常にDLされ画面も表示されます。
また、Webサービス側は「http://hoge/TestWebService/Service.asmx」のURLを入力して
「Test」メソッドの動作確認も取れています。
どうも、認証(セキュリティ)が出来ていないように見受けたので
IIS側のプロパティを確認しました。「匿名認証」「Windows認証」
ともにチェックボックスは「ON」です。
ネット上で色々な事例を探してみましたが皆目検討が付きません。
なにかご存知の方、ご教授願います。
開発マシン:Windows XP SP2 IIS5.1 VS2005 Pro
試験マシン:Windows Server 2003 IIS6.0
0020デフォルトの名無しさん
2006/12/11(月) 19:41:420021デフォルトの名無しさん
2006/12/11(月) 19:51:29VB出身と見た。
Form1クラスとcodefile.csにあるクラスとの関係がさっぱり分からん。
とりあえずその後者のクラスにForm1のインスタンスへの参照をもたせれ。
とにかくクラスというものを理解せよ。コードファイルとかモジュールじゃなくて。
0022デフォルトの名無しさん
2006/12/11(月) 20:16:35//Form1.cs
public class Form1 : Form
{
private TextBox textBox1;
public TextBox TextBox{get{return this.textBox1;}}
}
//codefile.cs
public class Code
{
public static void Xxxx(Form1 form1){form1.TextBox.Text = "新しいテキスト";}
}
こういうことがやりたいの?
とりあえず基礎からやり直した方がいいよ
0023デフォルトの名無しさん
2006/12/11(月) 20:18:07ふらっとC♯, C#(初心者用) Part10
http://pc8.2ch.net/test/read.cgi/tech/1162193452/
0024デフォルトの名無しさん
2006/12/11(月) 20:32:36>SoapException:401 Unauthorizedの例外が発生します。
わしは素人だが以下の内容がおかしいと思う。
>** AdministratorのユーザーでLoginしているのになぜ??
0025デフォルトの名無しさん
2006/12/11(月) 20:53:110026デフォルトの名無しさん
2006/12/11(月) 20:57:450027デフォルトの名無しさん
2006/12/11(月) 22:47:18if(this.comboBox1.SelectedItem.ToString()=="モナー")
となるのに、なぜ?
モナーが選択された状態にするのは
this.comboBox1.SelectedItem="モナー"と書くのか
0028デフォルトの名無しさん
2006/12/11(月) 22:50:160029デフォルトの名無しさん
2006/12/11(月) 22:53:060030デフォルトの名無しさん
2006/12/12(火) 01:33:14代入演算子と、比較演算子は違うから
0031デフォルトの名無しさん
2006/12/12(火) 02:44:29ヒント: this.comboBox1.SelectedItem=(Object)"モナー"
0032デフォルトの名無しさん
2006/12/12(火) 07:58:01かなりDelphiに近い言語で、.NETもVCLに近い感じがします。
パクりでしょうか。
0033デフォルトの名無しさん
2006/12/12(火) 07:59:460034デフォルトの名無しさん
2006/12/12(火) 08:03:450035デフォルトの名無しさん
2006/12/12(火) 08:06:500036デフォルトの名無しさん
2006/12/12(火) 08:20:380037デフォルトの名無しさん
2006/12/12(火) 08:49:560038デフォルトの名無しさん
2006/12/12(火) 09:25:04なんか.netで門戸が下がったような気がするのに
サンデープログラマーは減ってるのかねえ
0039デフォルトの名無しさん
2006/12/12(火) 11:26:26そりゃ、まさにそのとおりだろ。
だがそれがいい。
0040デフォルトの名無しさん
2006/12/12(火) 11:29:190041デフォルトの名無しさん
2006/12/12(火) 14:15:19コミュニティも見事に被らないためさらに離れていっている。
0042デフォルトの名無しさん
2006/12/12(火) 15:19:320043デフォルトの名無しさん
2006/12/12(火) 16:29:430044デフォルトの名無しさん
2006/12/12(火) 16:31:540045デフォルトの名無しさん
2006/12/12(火) 16:53:49わけだが。そのCLRも手段は別にして目的の方向性がずいぶん
違うしな。
0046デフォルトの名無しさん
2006/12/12(火) 17:42:330047デフォルトの名無しさん
2006/12/12(火) 19:00:36C++→c#だと主張している人は勉強しなおしたほうがいいよ。
0048デフォルトの名無しさん
2006/12/12(火) 19:07:110049デフォルトの名無しさん
2006/12/12(火) 19:09:090050デフォルトの名無しさん
2006/12/12(火) 19:09:46GCは昔のBasic(98とかね)にもあったよ。。。
0051デフォルトの名無しさん
2006/12/12(火) 19:12:02別に目新しいもんじゃないでしょ。
そもそもC/C++用のGCだってあるわけで。
0052デフォルトの名無しさん
2006/12/12(火) 19:12:28ちょっと古いタイプだと思う。
0053デフォルトの名無しさん
2006/12/12(火) 19:37:43CLRはまさにそうなんだけど言語としてはなぁ
Delphi → J++ → C#
でどうよ?ヘジの歩みそのまま。
>>51
うん、多分LISPからパクったんだろう。でもJavaのもとまで
辿るとなると話がややこしくなりすぎるので。
0054デフォルトの名無しさん
2006/12/12(火) 19:45:140055デフォルトの名無しさん
2006/12/12(火) 19:50:27CLRはぜんぜんVB由来じゃないでしょ。
Java VMをもっと言語から独立させた感じだよね。
GCについてはどこからパクったとかじゃなくて、GCを備えた言語はそこらじゅうにあると言いたかっただけ。
0056デフォルトの名無しさん
2006/12/12(火) 19:52:170057デフォルトの名無しさん
2006/12/12(火) 20:00:04>CLR
VB由来というかCOMだな。結局のところコンポーネント志向がこの形に
収束しただけ。VMが欲しかったわけでなく、欲しかったのは高記述な
バイナリだろう。
技術はほとんど同じになったんだがアプローチがまったく逆ってのが
面白いよなぁ
0058デフォルトの名無しさん
2006/12/12(火) 20:01:19ヘジルスバーグたんは、J#の開発にも関わってたのです当然です。
0059デフォルトの名無しさん
2006/12/12(火) 20:01:500060デフォルトの名無しさん
2006/12/12(火) 20:06:100061デフォルトの名無しさん
2006/12/12(火) 20:16:490062デフォルトの名無しさん
2006/12/12(火) 20:29:550063デフォルトの名無しさん
2006/12/12(火) 20:31:170064デフォルトの名無しさん
2006/12/12(火) 20:39:160065デフォルトの名無しさん
2006/12/12(火) 20:45:460066デフォルトの名無しさん
2006/12/12(火) 20:53:190067デフォルトの名無しさん
2006/12/12(火) 21:11:260068デフォルトの名無しさん
2006/12/12(火) 21:15:560069デフォルトの名無しさん
2006/12/12(火) 21:31:06次は何だろうね
0070デフォルトの名無しさん
2006/12/12(火) 21:35:250071デフォルトの名無しさん
2006/12/12(火) 21:38:56// と言いつつクロージャとかどうなんだって気もするけど。
enum は極言しちゃえば数値型の構文糖衣だから導入は簡単そうだな。
0072デフォルトの名無しさん
2006/12/12(火) 21:46:14見た目もいいし。
setNameとかgetNameなんてメソッド書きたくないよ。
0073デフォルトの名無しさん
2006/12/12(火) 21:51:24定数じゃなくてクラス扱いだけどな
C#3.0の様子を見て,良さそうなのはまた真似するんだろうね
0074デフォルトの名無しさん
2006/12/12(火) 21:55:48Cって意外と先見性があったんだな。
string型さえあれば寿命がもっと延びてたんじゃないかな。
0075デフォルトの名無しさん
2006/12/12(火) 22:19:13次の部分みて萎えた。
void main(char[][] args)
0076デフォルトの名無しさん
2006/12/12(火) 22:33:512回に1回はプレーンテキスト風になる。
0077デフォルトの名無しさん
2006/12/12(火) 22:53:03なんとなく見てて気持ち悪いんだが、
C#にはカンマ演算子とかないから問題ないんだろうか。
0078デフォルトの名無しさん
2006/12/12(火) 23:15:44bool Bar(Foo u, Foo v, int a, int b, int c, int d) { return u(a, b) && v(c, d); }
Console.Write(Bar((x, y) => x <= y, (z, w) => w >= z, 9, 4, 1, 7));
0079デフォルトの名無しさん
2006/12/12(火) 23:20:55Microsoft.NET 2.0 SDK付属のMSIL 逆アセンブラで簡単に見えちゃうんですが、
0080デフォルトの名無しさん
2006/12/12(火) 23:21:33つか途中の不等号演算子が狙いすぎだw
0081デフォルトの名無しさん
2006/12/12(火) 23:26:54l=i=>i>=1||i<=-1; ('A`)ヴァー
0082デフォルトの名無しさん
2006/12/12(火) 23:27:57たまに糞重くてスタイルシートが読み込まれないときがあるが。
0083デフォルトの名無しさん
2006/12/12(火) 23:33:22Reflectorで見るともっと面白いものが見られるぞ
0084デフォルトの名無しさん
2006/12/12(火) 23:39:57確かにそれが一番の問題なんだよなあ。
0085デフォルトの名無しさん
2006/12/12(火) 23:40:50ぜひDotfuscatorを30万円でお買い求めください。
0086デフォルトの名無しさん
2006/12/12(火) 23:51:580087デフォルトの名無しさん
2006/12/13(水) 00:07:590088デフォルトの名無しさん
2006/12/13(水) 00:42:51んなもん誰でも書けるんだから。
技術のない人間ほどそういうトコ気にするな。
0089デフォルトの名無しさん
2006/12/13(水) 00:45:13こんなん見っけた
0090デフォルトの名無しさん
2006/12/13(水) 02:52:09ソースはいいけど、知らずにパスワードや認証まで入れちゃうと大変
ってか実際そういうソフトがあるし…
0091デフォルトの名無しさん
2006/12/13(水) 03:21:36なんか心配で・・・
0092デフォルトの名無しさん
2006/12/13(水) 03:56:010093デフォルトの名無しさん
2006/12/13(水) 03:59:35それデコンパイル以前の問題じゃないか
0094デフォルトの名無しさん
2006/12/13(水) 11:25:00VSUGのMSDNフォーラムもみな過疎ってる。英語可。
0095デフォルトの名無しさん
2006/12/13(水) 17:43:460096デフォルトの名無しさん
2006/12/13(水) 20:02:250097デフォルトの名無しさん
2006/12/13(水) 20:14:170098デフォルトの名無しさん
2006/12/13(水) 20:20:53でもそれだけじゃ面白くない…
0099デフォルトの名無しさん
2006/12/13(水) 20:22:510100デフォルトの名無しさん
2006/12/13(水) 20:28:13VBもそうかな。
0101デフォルトの名無しさん
2006/12/13(水) 20:32:020102デフォルトの名無しさん
2006/12/13(水) 20:49:240103デフォルトの名無しさん
2006/12/13(水) 20:51:060104デフォルトの名無しさん
2006/12/13(水) 20:51:44�dクス
0105デフォルトの名無しさん
2006/12/13(水) 20:52:49SortedList
0106デフォルトの名無しさん
2006/12/13(水) 20:53:050107デフォルトの名無しさん
2006/12/13(水) 20:59:11うちのPCヘルプ起動するのに3分かかるからちょっと待ってても
>>106
重複しない方向で
0108デフォルトの名無しさん
2006/12/13(水) 21:00:27無駄な処理入るから普通にDictionary二つ使ったほうがいいよ。
0109デフォルトの名無しさん
2006/12/13(水) 21:10:460110デフォルトの名無しさん
2006/12/13(水) 21:14:55インスタンスを2コ管理するのが面倒だから
SortedListを使ってみるよ
0111デフォルトの名無しさん
2006/12/14(木) 07:50:450112デフォルトの名無しさん
2006/12/14(木) 15:59:390113デフォルトの名無しさん
2006/12/14(木) 16:10:180114デフォルトの名無しさん
2006/12/14(木) 16:14:43このフォームに「アプリケーションを終了する」というメニューを追加したいと思います。
その是非を一度だけ聞いてApplication.Exit()を実行したいのですが、現在のやりかたではFormClosingイベントが途中で呼ばれてしまい、
アプリケーションの終了確認→フォームを閉じる確認と表示されてしまいます。
何か良い方法はないでしょうか。
0115デフォルトの名無しさん
2006/12/14(木) 16:20:45どうも
0116デフォルトの名無しさん
2006/12/14(木) 16:23:38アプリケーションを終了するメニューを選択したら、
その場合は、FormClosingの時のMessageBoxを出さないようにすればいいだけじゃん。
それか、Application.Exitじゃなくて、Environment.Exitでおだぶつさせるかじゃね。
0117デフォルトの名無しさん
2006/12/14(木) 16:24:57FormClosingEventArgs.Cancel
0118デフォルトの名無しさん
2006/12/14(木) 16:26:44追記だけど、ほかには、アプリケーションの終了確認なんてしないで、Application.Exit()を呼べばいいんじゃね。
したら、FormClosingの時に確認してくれるぜ。
FormClosingの時の確認を終了確認にすればいい。
0119デフォルトの名無しさん
2006/12/14(木) 16:40:06FormClosingEventArgs
e.CloseReason != CloseReason.ApplicationExitCall で
Application.Exit()をフィルタすることができました。
お目汚し失礼しました。
0120デフォルトの名無しさん
2006/12/14(木) 17:19:33http://jeanne.wankuma.com/tips/form/closingcancel.html
0121デフォルトの名無しさん
2006/12/15(金) 09:30:29CloseReasonてNET2.0から出てきたのか。便利だね。
0122デフォルトの名無しさん
2006/12/15(金) 16:44:19private B b;
private int num;
public A(){
b = new B();
num = 10;
}
public int Num{ get{return num;} }
public B B_instance{ get{return b;} }
}
class B{
//public int Calc(int num){
// return num*2;
//}
//public int Calc(){
//ここでAのnumを使いたい
//}
}
a = new A();
a.B_instance.Calc();
としたときに,Aのnumを使ってBのCalcを呼び出したいのですがどうすればいいでしょうか
a.B_instance.Calc(a.Num);
とすればAのnumを渡せますが冗長な気がします
0123デフォルトの名無しさん
2006/12/15(金) 16:52:15b = new B(this);
とか。
0124122
2006/12/15(金) 17:07:100125デフォルトの名無しさん
2006/12/15(金) 20:39:19どのデバイスから送られて来たのか判断した後、
場合によっては入力を握りつぶしたいと考えております。
デバイスを判断し、キーを取得するだけですと
WM_INPUTにてRawInputを使用することにより実現できたのですが、
キーを握りつぶすことが私の試行錯誤した上ではできませんでした。
キーを握りつぶそうとWH_KEYBOARD_LLをフックし、
WH_KEYBOARD_LLの時点でキーを握りつぶすとメッセージの順序の関係上だと思うのですが
WM_INPUTも呼ばれなくなってしまい、デバイスの識別ができないでおります。
他の処理も考え付かず、途方にくれている状態です。
WH_KEYBOARD_LLがWM_INPUTより先に呼ばれているならそこでデバイスを
識別できないかとも考えたのですが、私の調べた限りではできませんでした。
どうか皆様のお力を少しでもよいので貸していただけないでしょうか。
よろしくお願いいたします。
#なお、この質問は過去に他の所にて質問させていただきましたが、
解決策が得られなかったために、再度お尋ねさせていただいております
0126デフォルトの名無しさん
2006/12/15(金) 20:44:35そこでNG出されたの?
0127デフォルトの名無しさん
2006/12/15(金) 20:47:33もう少し適切な場所があるようでしたらそちらに移そうかと思うのですが
0128デフォルトの名無しさん
2006/12/15(金) 20:52:360129デフォルトの名無しさん
2006/12/15(金) 21:00:11ありがとうございました
0130デフォルトの名無しさん
2006/12/15(金) 21:21:55あちこちたらい回しされて大変だね。
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33201&forum=7&0
0131デフォルトの名無しさん
2006/12/15(金) 22:05:12はい、私の質問です。
たらい回し、というよりも人にすがっているのは自分ですので
大変というよりも皆さんに迷惑がかからないかの方が心配で・・
0132デフォルトの名無しさん
2006/12/16(土) 02:32:080133デフォルトの名無しさん
2006/12/16(土) 02:42:560134デフォルトの名無しさん
2006/12/16(土) 07:23:19(コマンド) < (ファイルパス)
のようにコマンドにファイルを渡すのを、
Process proc = new Process();
proc.StartInfo.FileName = "(コマンド)";
string command = "< (ファイルパス)";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.Arguments = command;
proc.Start();
proc.WaitForExit();
っとやっているのですが、うまくいきません。
どうすればいいのでしょうか?
0135デフォルトの名無しさん
2006/12/16(土) 07:43:36ただ、(コマンド)をフルパスで指定して、そのパスにスペースが入っているとうまく動きません
(コマンドがスペースで、きれて実行され、結果、そんなコマンド認識できないとなります。)
コマンドもファイルパスもダブルコーテションで囲んでいるのですが
それで、ファイルパスにはスペースが当っても大丈夫です。
Process proc = new Process();
proc.StartInfo.FileName = Environment.GetEnvironmentVariable("ComSpec");
string command = "\"(コマンド)\" < \"(ファイルパス)\"";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.Arguments = String.Format(@"/C {0}", command);
proc.Start();
proc.WaitForExit();
0136デフォルトの名無しさん
2006/12/16(土) 08:33:410137デフォルトの名無しさん
2006/12/16(土) 08:36:410138デフォルトの名無しさん
2006/12/16(土) 08:39:08よく考えると、これはできなくて当然ですね…。
ねぼけてました。
>>135の方をお願いします。
0139デフォルトの名無しさん
2006/12/16(土) 08:46:030140デフォルトの名無しさん
2006/12/16(土) 08:53:390141デフォルトの名無しさん
2006/12/16(土) 08:57:18ずらして、片方の色を薄くする。
0142デフォルトの名無しさん
2006/12/16(土) 09:18:520143酔いちくれ ◆J0rwikii8c
2006/12/16(土) 09:33:08どうしてもやりたいんなら、文字を描画したいコントロール
を継承したコントロールをつくって、OnPaintイベントを
オーバーロードする。
おくられてきたイベントPaintEventArgsのプロパティに
Graphics クラスがいるからそいつの弄ればグラデーション
っぽくなるかも。
0144デフォルトの名無しさん
2006/12/16(土) 09:36:52半分のサイズで描画したのを拡大したらぼけるんじゃね?
0145デフォルトの名無しさん
2006/12/16(土) 10:57:36WPFを使ってみれば?
0146デフォルトの名無しさん
2006/12/16(土) 11:34:32ウィンドウタイトルバーの文字に影がついてることを強引に前提として
themeAPIで描く
0147デフォルトの名無しさん
2006/12/16(土) 12:50:02リダイレクトはシェルの機能なんだから、
同じように普通にSTDINに叩き込めばいいじゃね?
Process proc = new Process();
proc.StartInfo.FileName = "コマンド";
proc.StartInfo.RedirectStandardInput = true;
proc.Start();
new BinaryWriter(proc.StandardInput.BaseStream).Write(File.ReadAllBytes("ファイル"));
proc.WaitForExit();
0148デフォルトの名無しさん
2006/12/16(土) 15:01:300149デフォルトの名無しさん
2006/12/16(土) 15:24:160150デフォルトの名無しさん
2006/12/16(土) 15:35:11馬鹿初心者に一言。
実装までは面倒見れません。
0151デフォルトの名無しさん
2006/12/16(土) 17:09:44そういうのは馬鹿なことを言い出してから言えよ。
0152デフォルトの名無しさん
2006/12/16(土) 17:30:300153デフォルトの名無しさん
2006/12/16(土) 17:32:240154デフォルトの名無しさん
2006/12/16(土) 17:33:550155デフォルトの名無しさん
2006/12/16(土) 17:55:00標準入力を切り替えて呼び出せば?
0156デフォルトの名無しさん
2006/12/16(土) 18:45:19void SetCallback( CallbackType t );
で、SetCallbackというのがDLLで宣言されてます。
この関数を使ってC#の関数をDLL側に渡したいんですが
こちら側の関数はどうやって渡せばいいんですか?
引数が明示的になってれば問題ないんですけど。
0157デフォルトの名無しさん
2006/12/16(土) 18:47:220158デフォルトの名無しさん
2006/12/16(土) 18:53:14typedef void (CallbackType*)( int hoge );
とかなってる場合はいいんですけど
typedef void (CallbackType*)( ... );
この場合は?
0159デフォルトの名無しさん
2006/12/16(土) 18:58:07void Callback(params int[] args);
みたいなの。
0160デフォルトの名無しさん
2006/12/16(土) 19:09:16delegate void Callback( params object[] args );
うーん厳しそうだな。
0161デフォルトの名無しさん
2006/12/16(土) 19:13:04DLL側では実際には(...)のところには何が来ることを望んでんの?
全部intとか、全部boolとか、なんかしら決まりがあるはずだよね。
それにあわせないとだめなんじゃないの?
0162デフォルトの名無しさん
2006/12/16(土) 19:20:22あーそうか。確かにそうですね。
どういう風な値が(...)に入ってくるかを確認してきます。
ありがとうございます。
0163デフォルトの名無しさん
2006/12/16(土) 19:21:450164デフォルトの名無しさん
2006/12/16(土) 19:23:550165デフォルトの名無しさん
2006/12/16(土) 19:27:260166デフォルトの名無しさん
2006/12/16(土) 19:40:15(標準出力以外に出力したいときに使ってくれ、ってことらしい)
って事は静的に型を決めるのは無理ですね…
0167デフォルトの名無しさん
2006/12/16(土) 19:40:28CallingConvention 列挙体の項目にあるサンプルコード見る限り、
使いたい引数ごとにそれぞれ宣言するらしい。
0168167
2006/12/16(土) 19:42:452.0 で UnmanagedFunctionPointer 属性が追加されたからそっち。
多分 1.1 までじゃ対応できない。
0169デフォルトの名無しさん
2006/12/16(土) 20:35:14delegate側にUnmanagedFunctionPointer属性で行けました、ありがとうございます。
結局こうなりました。
[UnmanagedFunctionPointer( CallingConvention.Cdecl )]
public delegate void PrintCallback( string format, string str );
実はDLLのソースを見たら、フォーマットに"%s"と可変長引数に文字列1つしか
渡されてなかったので、これで上手くいってしまったわけですが…
(ライブラリを弄って良いならそっち側を直すほうが楽でしたね)
とりあえず問題自体は解決したのですけど
このままだと可変長引数を受け取るということは出来てないですね。
0170デフォルトの名無しさん
2006/12/17(日) 00:22:58>>150 実装までって・・・おまいアイデアすらいってないじゃん。
0171デフォルトの名無しさん
2006/12/17(日) 13:29:28ありがとう
0172デフォルトの名無しさん
2006/12/18(月) 19:09:53自分のソフトに埋め込まれたWindows Media PlayerのActive Xコントロールから
スクリーンショットを取りたいのですが、方法が分かりません。教えてください。
0173デフォルトの名無しさん
2006/12/18(月) 20:51:25と思ったらWMPか。
オーバーレイとかだったらだめなんじゃね?
Vistaならともかく
0174デフォルトの名無しさん
2006/12/18(月) 20:57:02大体そんなとこだろ?
0175デフォルトの名無しさん
2006/12/18(月) 21:04:380176デフォルトの名無しさん
2006/12/18(月) 21:20:240177デフォルトの名無しさん
2006/12/18(月) 21:21:400178デフォルトの名無しさん
2006/12/18(月) 21:24:37先に、MediaPlayerで動画再生、
次にDVDソフト再生(゚Д゚)ウマー
0179デフォルトの名無しさん
2006/12/18(月) 21:39:350180デフォルトの名無しさん
2006/12/18(月) 22:42:03をやると、体外オーバーレイは一枚しか表示できないので、
二つ目のソフトは、オーバーレイではなく、普通に表示できて、コピーできるんですよね。
0181デフォルトの名無しさん
2006/12/18(月) 23:07:480182デフォルトの名無しさん
2006/12/18(月) 23:56:57体外オーバーレイって、試験管ベイビー作る時のやつ?
0183デフォルトの名無しさん
2006/12/19(火) 00:20:110184デフォルトの名無しさん
2006/12/19(火) 00:41:140185デフォルトの名無しさん
2006/12/19(火) 00:43:040186デフォルトの名無しさん
2006/12/19(火) 08:28:57Susie用に画像処理プラグインを書こうかと思ったのですが、
C#では従来のネイティブアプリから読めるDLLを組むことはできるのでしょうか?
普通のDLLを呼ぶにはDllImportでよいと思うのですが、逆がわかりません。
0187デフォルトの名無しさん
2006/12/19(火) 09:18:54�_
間にネイティブなDLLがなんかいる
0188デフォルトの名無しさん
2006/12/19(火) 10:41:09それが一番手っ取り早い方法なりそうですね。
お答えいただいた皆さん、ありがとうございました。
0189デフォルトの名無しさん
2006/12/19(火) 12:39:54最近C#使い始めたばかりうまくヘルプ活用できない・・・
0190デフォルトの名無しさん
2006/12/19(火) 13:10:05全部返ってくるけど。
とりあえずSystem.IO以下を眺めるべし
0191デフォルトの名無しさん
2006/12/19(火) 14:05:12http://support.microsoft.com/kb/815065/ja
0193デフォルトの名無しさん
2006/12/19(火) 15:05:22enctype="multipart/form-data"なformで <input type="file"/>なタグがあった場合に、PostDataのMIMEの中身が
ファイルタグなデータの前で切れてしまうんだけど。ファイルタグが無い場合は完璧に補足可能。
この方法でやったことある人いる??
0194デフォルトの名無しさん
2006/12/19(火) 17:40:27逆 PInvokeはちょっと避けたいかな・・・
"間にネイティブなDLLがなんかいる"のとこをもうちょっと詳しくお願いできませんか?
0195デフォルトの名無しさん
2006/12/19(火) 17:54:02マネージドライブラリをCOMに公開して、ネイティブなDLLで橋渡しをする。
0196デフォルトの名無しさん
2006/12/19(火) 22:29:54純ネイティブからマネージコードを使う手は2つ。
COM相互運用機能とCLRホスティング。どっちか使って
橋渡しをするDLLを作るだけ。
0197デフォルトの名無しさん
2006/12/19(火) 23:13:29Susieみたいにプラグインで読み込まれるdllが.NETをロードするとかなり危険な予感。
0198デフォルトの名無しさん
2006/12/19(火) 23:16:52絶対遠回りです。
0199デフォルトの名無しさん
2006/12/19(火) 23:22:07よーし、パパ専用プロセス立ち上げて通信しちゃうぞ。
ああ、でもなんか一番いい方法な気がしてきた。専用プロ
セス用のはフルマネージでいいし。パフォーマンス以外は。
0200デフォルトの名無しさん
2006/12/19(火) 23:33:00それって、フルマネージドなアプリでも、.NETのバージョンがEXEとDLLで
違うなんてこと有るよね??
0201デフォルトの名無しさん
2006/12/19(火) 23:36:08マジレスごめん
0202201
2006/12/19(火) 23:37:280203デフォルトの名無しさん
2006/12/19(火) 23:40:48当然 CLR は起動したのに従ったバージョンがロードされる。
より古いバージョンの CLR をターゲットにした DLL はなんとか動かそうとするし、
より新しいバージョンの CLR をターゲットにした DLL は普通ロード失敗する。
0204デフォルトの名無しさん
2006/12/19(火) 23:45:270205デフォルトの名無しさん
2006/12/19(火) 23:47:36/ ,/ ||| \, ::::::::::ヽ
| ==" `== ::::::::|
| -=・=-′ ヽ-=・=- :::::::::|
| ::::::::::| え?
| (_人_) ::::::::|
'ヽ__ :::::::::::/
0206デフォルトの名無しさん
2006/12/19(火) 23:49:07つ[チラシの裏]
0207206
2006/12/20(水) 00:06:330208デフォルトの名無しさん
2006/12/20(水) 00:16:17ツリーのノードのクリックでチェックのon/offを切り替えるようにしたいのですが、
OnNodeClickで
CheckValue = !CheckValue :こんな感じ
でやっています。これだと、文字の部分のクリックしたときはちゃんと動くのですが
チェックボックスのところをクリックすると、この処理+デフォルトの処理が動いてしまい、
結局もとの状態に戻ってしまいます。
何か良い方法はありませんか?
0209デフォルトの名無しさん
2006/12/20(水) 00:21:210210デフォルトの名無しさん
2006/12/20(水) 00:56:44選択枠を付けたいのですがどうすれば良いのでしょうか?
dataGridViewを継承したコントロール作ったは良いが、完全にお手上げぽ…
0211デフォルトの名無しさん
2006/12/20(水) 00:57:57C#.Netを勉強しろって言われたんですがC#とどう違うんでしょうか?
C#だけ勉強すればいいんでしょうか?
基本以下のことですがお願いします
0212デフォルトの名無しさん
2006/12/20(水) 01:02:160213208
2006/12/20(水) 01:09:27HitTest???
HitTestでCheckBoxのObjectが取れるってことですか?
0214211
2006/12/20(水) 01:09:50とりあえずプログラムの事なんも知らんのでC#勉強しときます
0215デフォルトの名無しさん
2006/12/20(水) 01:21:43C#は、.NETフレームワーク上で動く言語なわけで。
C#を勉強したら、.NETを勉強したことにもなるわけで。
0216211
2006/12/20(水) 01:24:33あ、そうなんすか?
これでようやく気持ちよくC#が学習できます
ありがとうございました
0217デフォルトの名無しさん
2006/12/20(水) 10:41:580218デフォルトの名無しさん
2006/12/20(水) 10:46:21ネタがあったら供給汁
0219デフォルトの名無しさん
2006/12/20(水) 12:51:050220デフォルトの名無しさん
2006/12/20(水) 12:54:58VCとVBは.Net無し?
0221デフォルトの名無しさん
2006/12/20(水) 12:55:260223デフォルトの名無しさん
2006/12/20(水) 13:13:510224デフォルトの名無しさん
2006/12/20(水) 13:18:070225219
2006/12/20(水) 13:30:53レスどうもです
C#>VB.NETだと思ってたんですけど違うみたいですね
もうひとつ質問があるんですけど、C#でソフト作ってもう少し処理速度を
上げたいなぁと思ったら結構簡単に?(C#でソフトを作れたくらいの段階ですが)
MC++に処理部分を変更したりできますか?(GAをしてみたいんです)
また変更するのはどのようなキーワードでググレばいいんですか?
調べたんですが言語の説明とかしかなくて分からないんです…
0226219
2006/12/20(水) 13:33:01Javaは本を読んだくらいです
0227デフォルトの名無しさん
2006/12/20(水) 13:38:44C#もVB.NETも結局の出力結果はMSILのアセンブリだからね。
C#とC++は全く別の言語だから混ぜるのは無理。
新しいプロジェクトを作って何らかの方法でリンクすればいい。
0228デフォルトの名無しさん
2006/12/20(水) 13:42:23unsafe
http://www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_021/csharp_abc01.html
0229デフォルトの名無しさん
2006/12/20(水) 13:49:36大して変わらないと思う。C++にしただけで自動的にすごく早く
なったりしないよ?
0230デフォルトの名無しさん
2006/12/20(水) 13:55:23俺の主観では、
ゲームとか、画像処理とかの特殊なことを除けば、
あんまり、C++とか気にしなくていいと思う。
多くの場合レスポンスのボトルネックとなる部分は全体の極一部。
C#の処理の見直しで対策可が多いと思うが、
どうしてもって場合に、unsafeに移るってぐらいかな?
0231210
2006/12/20(水) 14:07:030232219
2006/12/20(水) 14:11:38レスどうもです とりあえず本買ってきて作ってみます
>>229 自動的に早くなるんだと思ってました 自由度が大きいから
プログラマのレベルしだいで早くなるんですね
みなさんありがとうございました
0233デフォルトの名無しさん
2006/12/20(水) 14:13:58ControlPaint.DrawFocusRectangle 見てみたか?
0234デフォルトの名無しさん
2006/12/20(水) 16:41:32PreviewKeyDownがKeyDownよりも先に呼ばれるのはわかるのですが・・・。
0235デフォルトの名無しさん
2006/12/20(水) 19:31:180236デフォルトの名無しさん
2006/12/20(水) 21:57:26そのとき、XXLというライブラリにはDirectXなどの参照設定をしているとします。
他のプロジェクトからそのライブラリのプロジェクトをインポートして使うときに、今はこの機能はいらないからDirectXの参照をナシにしたい!
と言ったことを、ライブラリのプロジェクトを変更することなくできるでしょうか?
もしくは、ビルドオプションみたいに今回はDirectXに参照しないと言ったことを。
個別に別々のライブラリ作る方法しか無いのでしょうか?
0237デフォルトの名無しさん
2006/12/20(水) 22:11:140238デフォルトの名無しさん
2006/12/20(水) 22:22:390239210
2006/12/20(水) 22:52:14こんな感じで書いてるんですけど、選択範囲を変えても最初の位置から動いてくれないです。。。
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = this.CreateGraphics();
Size s = new Size(100, 50);
ControlPaint.DrawFocusRectangle(g, new Rectangle(this.CurrentCellAddress, s), Color.Red, Color.Yellow);
base.OnPaint(e);
}
0240デフォルトの名無しさん
2006/12/20(水) 22:57:20CurrentCellAddressってセルのインデックスだろ。座標じゃない。
0241デフォルトの名無しさん
2006/12/20(水) 23:20:04>>238
どうもです。やっぱりライブラリ分離した方がいいのかな。
0242デフォルトの名無しさん
2006/12/20(水) 23:43:43GraphicsをなんでPaintEventArgs からとらないのさ?
base.OnPaintは前に持ってきた方がいくない?
0243デフォルトの名無しさん
2006/12/21(木) 00:14:26わかった!ありがとう!!
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Point p = new Point(this.CurrentCellAddress.X * 100, this.CurrentCellAddress.Y * 45);
Pen BluePen = new Pen(Color.Blue, 2f);
e.Graphics.DrawRectangle(BluePen, p.X, p.Y, 100, 45);
}
一応動いてはいるのですが、おかしな点はないでしょうか?
0244デフォルトの名無しさん
2006/12/21(木) 00:20:52PenオブジェクトはDisposeしないとダメ
using (Pen BluePen = new Pen(Color.Blue, 2f))
{
e.Graphics.DrawRectangle(BluePen, p.X, p.Y, 100, 45);
}
0245デフォルトの名無しさん
2006/12/21(木) 00:27:030246デフォルトの名無しさん
2006/12/21(木) 00:35:20カラムヘッダとかボーダーとかで位置ずれてないのか?
というか、スクロールしたらずれるだろ。
0247デフォルトの名無しさん
2006/12/21(木) 00:36:49CellPaintingイベント使いなさい。
0248デフォルトの名無しさん
2006/12/21(木) 00:49:53助言ありがとうございます。
了解です!
>>246
取りあえずヘッダーVisibleをfalseにして使ってます…
0249デフォルトの名無しさん
2006/12/21(木) 17:01:29現状、System.Objectしか表示できないです
0250249
2006/12/21(木) 17:07:33普通にAddの引数に文字列入れればいいみたいです。
Objectってそういうもんなのか・・・
0251デフォルトの名無しさん
2006/12/21(木) 17:14:34ObjectをToStringして表示してる。
だから、DateTimeとかEncodingとかも気にせずそのまま突っ込める。
0252デフォルトの名無しさん
2006/12/21(木) 17:58:58そんなHPとか書籍ないですか?
今までC++Builderを使っていたのでそれほど抵抗なくC#に移行できました。
なので後は必要なときに適切なフォームをチョイスしてピンポイントで調べて使えばいいかな
と思っているのですが、知らなきゃ選びようがないし、
全部見てみるというのも時間がかかりそうだし、使うときには忘れていそうで。
もし、知ってるよ、という方がいたら是非教えて下さい。
0253デフォルトの名無しさん
2006/12/21(木) 18:32:17煽ってるわけじゃないよ。
協力できることはしたいが、俺には何言ってるかわからない。
0254デフォルトの名無しさん
2006/12/21(木) 18:34:370255253
2006/12/21(木) 18:34:420256どっとどす
2006/12/21(木) 18:35:27その中でIBatisというDLLを活用してますが、
そのIBatisのヴァージョンを上げたら、
「プロジェクト〜の依存関係 〜 Culture=neutral, PublicKeyToken=〜 は、
依存関係 〜 Culture=neutral, PublicKeyToken=〜 と競合するため、
実行ディレクトリにコピーできません。」
上記のようなエラーメッセージが出ました。
依存関係とか競合の意味が解らないので問題を解決する方法を教えてください。
0257デフォルトの名無しさん
2006/12/21(木) 18:35:480258デフォルトの名無しさん
2006/12/21(木) 18:36:54一度参照を削除して、出力ディレクトリから古いDLLを削除する。
0259デフォルトの名無しさん
2006/12/21(木) 22:15:50かゆいところに届きそうでもっとかゆくなる
0260デフォルトの名無しさん
2006/12/21(木) 23:02:56こっちへおいで
0261デフォルトの名無しさん
2006/12/21(木) 23:17:44チイイ
0262デフォルトの名無しさん
2006/12/21(木) 23:56:400263デフォルトの名無しさん
2006/12/22(金) 10:20:44トロール
0264デフォルトの名無しさん
2006/12/22(金) 16:44:05通常の「フォーム」の場合は、複数張り付いていても、
フォームの xxx_Load イベントは、1回しか呼ばれません。
しかし、「ユーザーコントロール」に複数貼り付けると、
ユーザーコントロールのxxx_Load イベントが、
貼り付けたActiveXの個数回呼ばれてしまいます。
どうやらEndInitが呼ばれたタイミングでこうなっているようです。
これは、どういうことでしょうか?
回避方法はあるのでしょうか?
0265デフォルトの名無しさん
2006/12/22(金) 17:59:26既にその子ウィンドウが生成されていればActiveして、
生成されていなければnewする。
ということをやりたいのですが、
子ウィンドウを閉じた後の挙動がよくわからないのでどうしようか迷っています。
メモリは解放されていないようなので、何かメソッドを呼んでやればいいのか。
それとも、メモリ解放のタイミングがまだ来ていないだけで後で勝手にされるものだから、気にせずにnewし直していいのか。
とりあえず今はIsDisposedプロパティを見てnewするかActiveにするかやっています。
このやり方で正しいのでしょうか?
0266デフォルトの名無しさん
2006/12/22(金) 18:11:18フラグ立てるなり参照にnullを代入するなりしとけば
0267253
2006/12/22(金) 19:45:58これはいいことを聞いたw
ActiveX複数貼ってもイベント1回しか起こらなくて困ったことが
あったんだが、ユーザーコントロールに貼ればいいんだな。
ありがとう!
0268デフォルトの名無しさん
2006/12/23(土) 00:45:24System.IO.StreamReader sr = new System.IO.StreamReader("test.txt");
try
{
Console.WriteLine(sr.ReadToEnd());
}
finally
{
sr.Close();
}
ファイルが存在しないときや排他的に開かれているときの
例外も捕捉したいようなときはどうしたらいいんでしょうか?
0269デフォルトの名無しさん
2006/12/23(土) 00:55:40この様な場合、誰にどの仕事を行わせることがもっとも低コストで仕事が
行えるか求めるフローチャートを作成しなさい、計算方法は、全ての組み合わせ(順列)を求める。その中から最も低コストとなる仕事の割り当てを得る(腕ずく法;Brute Force Method)。なお、最低コストが複数ある場合は、最後に判明した組み合わせのみを表示すればよい。
人1人2人3人4人5
仕事A1057128
仕事B1420151015
仕事C1830202522
仕事D358182012
仕事E201381017
できる人いませんか?
0270デフォルトの名無しさん
2006/12/23(土) 00:56:34この様な場合、誰にどの仕事を行わせることがもっとも低コストで仕事が
行えるか求めるフローチャートを作成しなさい、計算方法は、
全ての組み合わせ(順列)を求める。その中から最も低コスト
となる仕事の割り当てを得る(腕ずく法;Brute Force Method)。
なお、最低コストが複数ある場合は、
最後に判明した組み合わせのみを表示すればよい。
人1人2人3人4人5
仕事A1057128
仕事B1420151015
仕事C1830202522
仕事D358182012
仕事E201381017
できる人いませんか?
0271デフォルトの名無しさん
2006/12/23(土) 00:57:44tryの中でファイルを開かないと意味ないでしょうが。
try{
using(StreamReader sr = new StreamReader("test.txt"))
{
Console.WriteLine(sr.ReadToEnd());
}
}
catch(FileNotFoundException e) { }
catch(UnauthorizedAccessException e) { }
0272デフォルトの名無しさん
2006/12/23(土) 00:58:43この様な場合、誰にどの仕事を行わせることがもっとも低コストで仕事が
行えるか求めるフローチャートを作成しなさい、計算方法は、全ての組み合わせ(順列)を求める。その中から最も低コストとなる仕事の割り当てを得る(腕ずく法;Brute Force Method)。なお、最低コストが複数ある場合は、最後に判明した組み合わせのみを表示すればよい。
人1人2人3人4人5
仕事A10、5、7、12、8
仕事B14、20、15、10、15
仕事C18、30、20、25、22
仕事D35、8、18、20、12
仕事E20、13、8、10、17
できる人いませんか?
0273デフォルトの名無しさん
2006/12/23(土) 00:59:190274デフォルトの名無しさん
2006/12/23(土) 10:24:10>>268じゃないけど…
それって、usingステートメント内で例外が発生したら、usingの外のcatchで大丈夫なの?
それとも、中にもtry-catchいる?下みたいに。
try{
using(StreamReader sr = new StreamReader("test.txt"))
{
try{
Console.WriteLine(sr.ReadToEnd());
.......
}
catch(System.Exception){ }
}
}
catch(FileNotFoundException e) { }
catch(UnauthorizedAccessException e) { }
0275デフォルトの名無しさん
2006/12/23(土) 10:27:270276デフォルトの名無しさん
2006/12/23(土) 10:31:100277デフォルトの名無しさん
2006/12/23(土) 10:41:54即レス、サンクスです。
0278デフォルトの名無しさん
2006/12/23(土) 13:22:44宿題は早く終わらせようねw
0279デフォルトの名無しさん
2006/12/23(土) 17:28:18てか、キャッチしてなにしたいかによるわな。
usingはfinallyを使うだけで、例外には一切触らない。
0280デフォルトの名無しさん
2006/12/23(土) 18:38:130281デフォルトの名無しさん
2006/12/23(土) 18:42:360282デフォルトの名無しさん
2006/12/23(土) 18:46:150283デフォルトの名無しさん
2006/12/23(土) 18:49:41(1) 全ての組み合わせ(順列)を求める。
(2) その中から最も低コストとなる仕事の割り当てを得る。
(3) 最低コストが複数ある場合は、最後に判明した組み合わせのみを表示。
0284デフォルトの名無しさん
2006/12/23(土) 18:51:27C#と関係ないんだよ文盲
馬鹿が伝染るんだよ池沼
もう来るなよ低能
コストの配列5個作ってループで5!回計算して最低値をとっておけばいいだけだと思います
0285デフォルトの名無しさん
2006/12/23(土) 18:52:340286デフォルトの名無しさん
2006/12/23(土) 18:53:080287デフォルトの名無しさん
2006/12/23(土) 20:59:320288デフォルトの名無しさん
2006/12/23(土) 21:01:070289デフォルトの名無しさん
2006/12/23(土) 21:03:58つ【乱数】
どっちでも好きな方を選んどけ
0290デフォルトの名無しさん
2006/12/23(土) 21:04:31紙に書くとかアホかって思いながら課題こなした覚えが。
0291253
2006/12/23(土) 21:09:180292デフォルトの名無しさん
2006/12/23(土) 22:43:52ノードを選択状態でフォームを起動したいのですが、どうすればいいのでしょうか?
お願いします。
0293デフォルトの名無しさん
2006/12/23(土) 22:46:18終了。
0294デフォルトの名無しさん
2006/12/23(土) 22:46:27で、何が分からないのよ
0295デフォルトの名無しさん
2006/12/23(土) 22:47:48http://pc8.2ch.net/test/read.cgi/tech/1166240484/
0296デフォルトの名無しさん
2006/12/23(土) 22:51:21フォーム起動時じゃない場合(ボタンを押すなどね)は自分で出来るの?
0297デフォルトの名無しさん
2006/12/23(土) 22:53:570298デフォルトの名無しさん
2006/12/23(土) 22:55:130299デフォルトの名無しさん
2006/12/23(土) 22:56:320300292
2006/12/23(土) 22:56:33this.Setting_treeView.SelectedNode = this.Setting_treeView.SelectedNode.Nodes["Keyname"];
なんていう馬鹿なことをしていたのが原因で、はまってました。
低レベルで、お騒がせしました。死んできます…。
0301デフォルトの名無しさん
2006/12/23(土) 22:59:510302デフォルトの名無しさん
2006/12/23(土) 23:45:58自分でもやってみたけど、
SupportsTransparentBackColor使ってみたけどだめ。
けっこう需要はありそうと思うけど。
13 名前:デフォルトの名無しさん[sage] 投稿日:2006/12/16(土) 19:25:34
>>12乙
フォームの背景だけを半透明にしてその上に文字をクッキリ表示させたいと思い、
フォームのOpacitを50%にし、そのフォームにLabelを配置したのですが
Labelの文字まで半透明になってしまいます。
何か良い解決方法はないでしょうか?
0303デフォルトの名無しさん
2006/12/23(土) 23:53:44Formを2枚重ねる。
0304デフォルトの名無しさん
2006/12/23(土) 23:57:57なんちゃってだけど
0)Form1とForm2を用意する。Form1にはラベルとか貼り付ける。
1)Form1 のTransparencyKeyを設定する。とりあえずSystemColors.Control
2)Form1のコンストラクタで、Form2をOpacity =0.5でShow()する。
3)Form1に以下のコードを追加する。
protected override void OnMove( EventArgs e )
{
this.form2.Location = this.Location;
base.OnMove( e );
}
protected override void OnResize( EventArgs e )
{
this.form2.Size = this.Size;
base.OnResize( e );
}
Form2をアクティブにするとおかしくなるので、そこらへん小細工してちょ
0305デフォルトの名無しさん
2006/12/24(日) 00:01:00それは、やってないんだが、
Formの上にパネルをDockFillしたのはやった。
Formに描いた背景の半透明は可能
FormをTransparentkey使って、デスクトップを見ようとするんだけど、
デスクトップはどうやっても見えなかった。
MSDN見ると、SupportsTransparentBackColorは親のコントロールに描画を
委譲し半透明化処理するようだから、デスクトップに対してはだめなんかと。
0306デフォルトの名無しさん
2006/12/24(日) 00:07:17protected override void OnActivated( EventArgs e )
{
this.form1.Activate();
}
でいけるかも
0307デフォルトの名無しさん
2006/12/24(日) 00:09:54最初、意味分からなかった。
う〜ん、出来そうだけどトリッキーすぎないか?
0308デフォルトの名無しさん
2006/12/24(日) 00:15:13だから、トップレベルウィンドウを2つ作らないと意味ないの。
2000で色々できるようになったけど、パーピクセルで柔軟にうにうには
できない(と思う…俺はWin32の鬼ではないので間違っているかも)。
…まぁなんか変な手法なので汎用化できない、と思うかもしれないけど、
俺は数日くれればデザイナ対応のそんなフォーム作れるな、と実装見繕れた
程度なんでがんばれ。
0309302
2006/12/24(日) 00:24:41>>308
Thx
MDIはやったこと無かったので、試してない。
あと期待してたのが、やっぱWin32。
誰か、詳しい人どお。
落ちるけど、ちょくちょくのぞかせてもらいます。
0310デフォルトの名無しさん
2006/12/24(日) 00:28:11MDIじゃなくて…だからFormをトップレベルに2枚作るの。
基本的には >>304 とまったく一緒。
0311デフォルトの名無しさん
2006/12/24(日) 00:34:27>>304がMDIを意味しないことは理解してるよ。
まったく、重なった位置にFormを重ねましょうという意味だと受け取ってるんだけど。
で、MDIを聞いたのは、自分が扱ったことなかったから、
出来るか出来ないかを確認したかっただけです。
>MDIじゃなくて…
ってことは、だめと受け取っていいのかな?
0312デフォルトの名無しさん
2006/12/24(日) 00:40:170313デフォルトの名無しさん
2006/12/24(日) 00:40:52>MDI
基本MDIを重ねても駄目だと思われる。トップレベルウィンドウ以上の
描画はWindowsまかせなので。逆に言えばここを任せてないからVistaで
あんな力技が可能だし、WPFの制限がきついわけで。
…ってあ、WDM API使えばVistaだけは可能?
0314302
2006/12/24(日) 00:48:10Thx
ということは、さしあたって無理そうだね。
まあ、自分自信すぐに使いたいというわけではないので。
>>302の質問は終了で
0315デフォルトの名無しさん
2006/12/24(日) 16:51:04たとえば、1つのスレッドで何箇所からも同時にダウンロードする とか
ご教授願います
0316デフォルトの名無しさん
2006/12/24(日) 16:57:40できないほうがおかしい。
http://www.tt.rim.or.jp/~rudyard/torii009.html
0317デフォルトの名無しさん
2006/12/24(日) 17:01:081個のスレッドっていうわけじゃないけど、こういうんじゃね?
ttp://msdn2.microsoft.com/ja-jp/library/bbx2eya8(VS.80).aspx
0318デフォルトの名無しさん
2006/12/24(日) 17:04:46応答の遅いソケットがあればそこで止まるけど、ひとつのスレッドで扱うってのはそういうことだし。
0319デフォルトの名無しさん
2006/12/25(月) 00:32:27BinaryFormatterのSerializeでセキュリティ例外が出て、どう対処したらいいのか良くわからず
質問させてください。
コードは以下なような感じのをaspxに入れてるですが、LocalというかDebug環境では動くのですが、
サーバー上では、SecurityExceptionが出てしまいます。
どなたかお知恵をお菓子ください。
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
int[] nArray = new int[] {3,4,5,6,7,8 };
MemoryStream stm = new MemoryStream();
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(stm, nArray);
long nLen = stm.Length;
stm.Seek(0, SeekOrigin.Begin);
int[] nArray2 = (int[])binaryFormatter.Deserialize(stm);
Response.Write(String.Format("Success: length[{0}]: value[{1}]", nLen, nArray2[2]));
0320デフォルトの名無しさん
2006/12/25(月) 01:54:33C#ってプログラムをまったく知らない奴が2、3ヶ月で基本程度はできるものでしょうか?
目安程度でいいんでお願いします・・・
0321デフォルトの名無しさん
2006/12/25(月) 02:01:43まずそれ以前にオブジェクト指向を理解するのにどれくらいかかるもんだろ。
それに基本と言っても WinForm か ASP.NET かで全然違うしな。
0322320
2006/12/25(月) 02:14:30頑張れば2ヶ月くらいでいけますか?
0323デフォルトの名無しさん
2006/12/25(月) 02:18:57やる気・根気があれば2ヶ月でできると思う。
わからないとこがある時ここで聞けば教えるよ。
0324320
2006/12/25(月) 02:21:49逆を言えばヤル気と根気がなければやばそうってコトですかね
とりあえず仕事しながら合間見てがんばって勉強します!
0325デフォルトの名無しさん
2006/12/25(月) 02:25:080326320
2006/12/25(月) 02:28:15わからない単語とかあったらネットとかで調べたりします
あわよくばここに聞きに来ますのでそのときはよろしくお願いします
0327デフォルトの名無しさん
2006/12/25(月) 03:20:070328デフォルトの名無しさん
2006/12/25(月) 08:57:500329デフォルトの名無しさん
2006/12/25(月) 09:59:380330デフォルトの名無しさん
2006/12/25(月) 10:07:51自前で描画
>>329
SelectionStart
つーかドキュメント読めやハゲ
MonthCalendarで日付の取得方法聞くのは
TextBoxでテキストの取得方法聞くのと同じだぞボケ。
0331デフォルトの名無しさん
2006/12/25(月) 10:19:150332デフォルトの名無しさん
2006/12/25(月) 13:04:03UpdateLayeredWindowにMemoryDC経由でDIB渡す方法で、
ピクセル単位のアルファ値を設定することができる。
Win2000のころから原理的には可能。(冴子先生とか、これ)
ttp://www.microsoft.com/japan/msdn/windows/windows2000/layerwin.aspx
問題はWinFormsがWin32ウィンドウの単なるラッパーなところ。
WPFやIEみたいに最初からクライアント領域は
完全独自描画にしてればこんなに苦労しなくてすんだだろうに。
SendMessage使えなくなるけどね。
こういうサンプルもある。
ttp://www.codeproject.com/cs/media/perpxalpha_sharp.asp
0333デフォルトの名無しさん
2006/12/25(月) 16:30:350334デフォルトの名無しさん
2006/12/25(月) 16:35:190335デフォルトの名無しさん
2006/12/25(月) 17:03:55C++のtimeSetEventのように一定間隔で呼ばれるイベントがどれかわかりません。
こういう場合、何を使えばいいんでしょうか
0336314
2006/12/25(月) 17:09:02Thx
規制に捕まって書き込めなかった。
レス見て、レイヤードウィンドがらみでぐぐってみると、↓とかあった。
http://yellow.ribbon.to/~azumaya/doc_dotnet_uplayeredwnd.php
当該の問題以外にもレイヤードウィントは色々使えそうなので勉強してみます。
0337デフォルトの名無しさん
2006/12/25(月) 17:11:241. timeSetEvent を P/Invoke する。
2. SetTimer を P/Invoke する。
3. System.Windows.Forms.Timer を使う (内部で SetTimer を使用)。
0338デフォルトの名無しさん
2006/12/25(月) 17:12:37System.Windows.Forms.Timer
System.Threading.Timer
System.Timers.Timer
好きなのどうぞ
0339デフォルトの名無しさん
2006/12/25(月) 18:14:34>>338
ありがとうございます。
System.Windows.Forms.Timerを使ってみます。
これ、いくつも種類があるのってやっぱりそれぞれに個性があるんですかね?
使いどころというか。
0340デフォルトの名無しさん
2006/12/25(月) 18:22:060341デフォルトの名無しさん
2006/12/25(月) 18:23:480342デフォルトの名無しさん
2006/12/25(月) 18:35:01ある。
4〜5年前は>>341のように言われていたが実際流行ってきてる。
0343デフォルトの名無しさん
2006/12/25(月) 18:40:09C++と比較して、C++よりC#が優れている点ってないですよね?
それともC++で実現可能なことはC#でも実現可能?
0344デフォルトの名無しさん
2006/12/25(月) 18:43:550345デフォルトの名無しさん
2006/12/25(月) 18:49:520346デフォルトの名無しさん
2006/12/25(月) 18:51:33C++でできるなら何もわざわざC#を使う必要なんてありやしません。
0347デフォルトの名無しさん
2006/12/25(月) 18:57:11A、Bとする。最初にAが立ち上がっているとする。
Bの起動途中にAをシャットダウンすると、それ以降Aで.NETを
使うプログラムを動かそうとすると、mocoree.dllでエラーが出る
ようになり、frameworkのアンインストールすらエラーになる。
タイミングの問題らしいんだが、Bを再起動する事で直った。
ちょっと不安を感じさせる。
0348デフォルトの名無しさん
2006/12/25(月) 19:02:210350デフォルトの名無しさん
2006/12/27(水) 00:25:49自分で考えろと書いてあったろ?
0351デフォルトの名無しさん
2006/12/27(水) 03:15:300352デフォルトの名無しさん
2006/12/27(水) 03:30:53Graphics.FromHwnd(IntPtr.Zero)
これでデスクトップのGraphicsがとれるから、ひたすらガリガリ書けばいいんじゃね?
0353デフォルトの名無しさん
2006/12/27(水) 06:36:28MailMessage mail = new MailMessage();
mail.Headers.Add("To", "[email protected],\"山田 太郎\" <[email protected]>");
FormatException「ヘッダー値に無効な文字が見つかりました。」とでるのですが。
System.Net.MailMessage.HeadersはNameValueCollectionであるので
AddではFormatExceptionがでないと思うのですが、なぜでしょう?
0354デフォルトの名無しさん
2006/12/27(水) 06:58:210355デフォルトの名無しさん
2006/12/27(水) 10:14:35Addしただけで出るの?
もちろん、エンコードしないと漢字はまずいけどね
0356デフォルトの名無しさん
2006/12/27(水) 10:25:22テーブル内に列を追加してもビューに反映されません。
どうして?
0357デフォルトの名無しさん
2006/12/27(水) 11:31:490358デフォルトの名無しさん
2006/12/27(水) 12:10:03データの読み取りは、下のコードでいいでしょうか?
これをやったらダメ、ここはこうした方がいいという箇所
がありましたら教えてください。
String queryString;
String reqMethod = Environment.GetEnvironmentVariable("REQUEST_METHOD");
if ( reqMethod.Equals( "POST" ) ) {
String conLenStr = Environment.GetEnvironmentVariable("CONTENT_LENGTH");
int queryLength = Int32.Parse(conLenStr);
BufferedStream stdin = new BufferedStream(Console.OpenStandardInput(),queryLength);
byte [] queryBytes = new byte[queryLength];
stdin.Read( queryBytes, 0, queryLength );
queryString = Encoding.UTF8.GetString(queryBytes);
}
else {
queryString = Environment.GetEnvironmentVariable("QUERY_STRING");
}
0359デフォルトの名無しさん
2006/12/27(水) 12:42:170360デフォルトの名無しさん
2006/12/27(水) 13:13:41ありがと
0361デフォルトの名無しさん
2006/12/27(水) 14:13:10System.Net.MailMessage.HeadersはSystem.Net.Message.Headersを返すから、System.Net.Mime.HeaderCollection
Addする文字列に\x0100以上の文字があればFormatExceptionがでる。
0362デフォルトの名無しさん
2006/12/27(水) 14:21:28例外処理なんとかしる
0363デフォルトの名無しさん
2006/12/27(水) 14:39:19あくまでも学習用の素材なので、CGIを全否定されても
困ってしまう。DOS窓に Hello World! とか出力するのは
退屈すぎる。
>>362
すんません。例外処理は今後の学習課題です。例外処理というと、
JavaScriptのtry{}catch(e){}しか知らないんです。
最優先で例外処理を追加すべき箇所がどこか教えていただけると
助かります。
0364デフォルトの名無しさん
2006/12/27(水) 14:51:50ASP使わずに.NETでCGI書くのが変態であるのは曲げようのない事実であるが。
tryで囲むのはInt32.Parseくらいでいいんじゃないかな
ストリームを一回だけ読むのにBufferedStreamを使うのはあまり意味がなさそうだけど。
文字列の比較にEqualsを使うと読みづらくならない?
0365デフォルトの名無しさん
2006/12/27(水) 15:49:37ご指摘ありがとうございます。
BufferedStream については、環境変数CONTENT_LENGTHから得た値の
分だけReadメソッドでbyte配列かchar配列に標準入力を読み込めれば
なんでもよかったのですが、バッファの大きさを指定する場合、一番
簡単そうだったので使いました。
修正版は下のようになりました。
String queryString = "";
String reqMethod = Environment.GetEnvironmentVariable("REQUEST_METHOD");
if ( reqMethod == "POST" ) {
String conLenStr = Environment.GetEnvironmentVariable("CONTENT_LENGTH");
int queryLength = 0;
try {
queryLength = Int32.Parse(conLenStr);
} catch {
// 例外処理 HTMLでエラーメッセージを出力する
dispError( "CONTENT_LENGTH の Parse に失敗しました。" );
}
BufferedStream stdin = new BufferedStream(Console.OpenStandardInput(),queryLength);
byte [] queryBytes = new byte[queryLength];
stdin.Read( queryBytes, 0, queryLength );
queryString = Encoding.UTF8.GetString(queryBytes);
}
else {
queryString = Environment.GetEnvironmentVariable("QUERY_STRING");
}
0366デフォルトの名無しさん
2006/12/27(水) 15:54:34このスレを見ている人はこんなスレも見ています。(ver 0.20)
★S・しゃぶ・覚せい剤のスレ★質問とか part49 [薬・違法]
おい、誰だw
0367デフォルトの名無しさん
2006/12/27(水) 16:10:32強制的にIEのWindowを再描画して、書き込んだ図形を消去しようとしているのですが、
その方法に詰まっています。誰か良い解決策を教えてください。
ちなみにhWndは取得出来ています。
0368デフォルトの名無しさん
2006/12/27(水) 16:17:59hWnd あるなら API 呼んでみては。
即反映させたいなら、Invalidateの後にUpdateWindow
0369デフォルトの名無しさん
2006/12/27(水) 16:18:330370デフォルトの名無しさん
2006/12/27(水) 16:30:27返信有難う御座います。
invalidate()の使い方がイマイチ良く分かりません。。。
hWndをControlにする作業が必要なのでしょうか?
0371デフォルトの名無しさん
2006/12/27(水) 16:38:25Int32.Parseをtryでくくるなんてこと覚えずに
bool Int32.TryParseを使いなされ
例外を処理するところじゃない
>>370
APIのInvalidateRect()
0372デフォルトの名無しさん
2006/12/27(水) 17:39:24アセンブリ情報に\n入れても無視されます。
0373デフォルトの名無しさん
2006/12/27(水) 17:44:100374デフォルトの名無しさん
2006/12/27(水) 17:53:37タスクトレイに入れてFormは消した状態にしてるんですがショートカットを受けてくれません。
どうすれば解消できますか?
よろしくお願いします。
0375デフォルトの名無しさん
2006/12/27(水) 18:05:12フック
0376デフォルトの名無しさん
2006/12/27(水) 18:06:36キー入力はウィンドウが受けるものだから。
ホットキーを登録しないといけない。
0377デフォルトの名無しさん
2006/12/27(水) 18:16:29(A) try { queryLength = Int32.Parse(conLenStr); } catch { queryLength = 0; }
(B) bool result = Int32.TryParse(conLenStr, out queryLength);
(A)と(B)は機能的に等価で、例外処理をしなくて済む分、TryParseを
用いた方がベターだということですね。
ただ、ここでは環境変数REQUEST_METHODの値が"POST"で、なおかつ
標準入力から何も読み込まないのであれば、クライアントに
エラーメッセージを返すべきでしょう。
ですから、例外処理をしてもいいような気がしますが、どうなのでしょうか?
(A') try { queryLength = Int32.Parse(conLenStr); }
catch { DispError( 〜
(B') bool result = Int32.TryParse(conLenStr, out queryLength);
if ( queryLength == 0 ) { DispError( 〜
0378デフォルトの名無しさん
2006/12/27(水) 18:20:450379デフォルトの名無しさん
2006/12/27(水) 18:21:560380デフォルトの名無しさん
2006/12/27(水) 18:28:44InvalidateRect(hWnd, IntPtr.Zero, false);
UpdateWindow(hWnd);
このようなコードを書いて再描画させたのですが、再描画された部分は
IEのテキストが表示される部分の上の枠線部分のみで
全体は再描画されませんでした。
何が問題なのでしょうか?
0381デフォルトの名無しさん
2006/12/27(水) 18:32:180382デフォルトの名無しさん
2006/12/27(水) 18:35:17InvalidateRectって子ウィンドウに伝播しないんじゃなかったかなあ
RedrawWindowには子ウィンドウを再描画するかどうかのフラグがあったような
0383デフォルトの名無しさん
2006/12/27(水) 19:04:52そりゃクライアントエリアのHWNDもってくるか、子ウィンドウまで再描画させるかかな
0384デフォルトの名無しさん
2006/12/27(水) 19:10:530385デフォルトの名無しさん
2006/12/27(水) 19:13:370386デフォルトの名無しさん
2006/12/27(水) 19:17:46C#に限ったことじゃないだろうが、.NET系のEXEは起動時、
メモリーにロードするだけじゃなくてコンパイルまでやってるから
画面が表示されるまで時間が掛かるだろ?
そこでだ、例えばVisualStudio2005なんかもそうだけど、
起動するとまず素早くオープニングの小フォームだけ出して、
それから使うクラスをロード・・。
完了次第メインのフォームを表示して、最初の小フォームを閉じる。
これどうやればいいの?
0387デフォルトの名無しさん
2006/12/27(水) 19:24:04そのウィンドウのことを「スプラッシュウィンドウ」という。
それでググってわからんかったらまたおいで。
0388デフォルトの名無しさん
2006/12/27(水) 19:28:45ぐぐったらLCG=Lightweight Code Generatorというのは分かったけど
何かは分からなかった。これはなんでしょうか?
IronPythonなどを使ってevalしろってことでしょうか?
0389デフォルトの名無しさん
2006/12/27(水) 19:36:540390デフォルトの名無しさん
2006/12/27(水) 19:41:550391384
2006/12/27(水) 19:47:54変数に代入とかもできないと困るんですよね。
IronPythonを使ってevalしたほうが良さそうです。みなさん、サンクス。
0392デフォルトの名無しさん
2006/12/27(水) 20:17:50一応コマンドプロンプト(?)っぽい画面に文字を表示させるための文章は書き終えたのですが、表示時間の設定の方法が分りません。
一応作った文章載せておきます
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Test
{
static void Main()
{
System.Console.WriteLine(1983);
System.Console.WriteLine("なにかが起きた");
System.Console.WriteLine(0x7C1);
System.Console.WriteLine("なにかが起きた");
}
}
}
0393デフォルトの名無しさん
2006/12/27(水) 20:24:190394392
2006/12/27(水) 20:45:54「sleepは現在のコンテキスト内に存在しません」
と出てしまいます・・・。使ってるソフトはちなみに
visual C# 2005 Express Editionです
0395デフォルトの名無しさん
2006/12/27(水) 20:52:41ちょっとはMSDN検索しいな。
0396デフォルトの名無しさん
2006/12/27(水) 21:06:120397デフォルトの名無しさん
2006/12/27(水) 21:07:460398デフォルトの名無しさん
2006/12/27(水) 21:20:18あとはDOMで辿っていって、screenTopあたりじゃないかな。
0399デフォルトの名無しさん
2006/12/27(水) 21:27:35画面上の位置か度無上の位置か?
0400デフォルトの名無しさん
2006/12/27(水) 21:33:59画面上の位置を知りたいんですが、無理でしょうか?
0401デフォルトの名無しさん
2006/12/27(水) 21:37:39出来るかも…
Flushはむりだよ。
けど何に使うんだ?
0402デフォルトの名無しさん
2006/12/27(水) 22:01:03IE上の文字をアニメーションさせたくて、
そのために画面上の位置を知りたいと思ってます。
0403デフォルトの名無しさん
2006/12/27(水) 22:04:38もう一つ質問が有ります。
IEでも何でも良いのですが、.netで、あるWindow内のテキストを
フォーム内にドラッグアンドドロップした時にイベントを発生させるには
何というイベントを発生させると良いのでしょうか?
DragDropイベントだとファイルのドラッグアンドドロップにしか
対応していないようで。。。
0404デフォルトの名無しさん
2006/12/27(水) 22:08:31>>398
0405デフォルトの名無しさん
2006/12/27(水) 22:23:29private void Form1_DragEnter( object sender, DragEventArgs e )
{
e.Effect = DragDropEffects.All;
}
private void Form1_DragDrop( object sender, DragEventArgs e )
{
if( e.Data.GetDataPresent( DataFormats.Text ) )
{
string data = (string)e.Data.GetData( DataFormats.Text );
MessageBox.Show( data );
}
}
0406デフォルトの名無しさん
2006/12/27(水) 22:34:47有難う御座います。
しかし、このコードでも、テキストをドラッグアンドドロップしようとしても
罰マークが出てしまい、イベントを取得できません。。。
何か他の設定が必要なのでしょうか?
0407デフォルトの名無しさん
2006/12/27(水) 22:45:21DragEnter/DragOverとかのイベントで、ドラッグしてるデータがTextのときに
きちんとDragDropEffectを設定していないと思われ
上のははしょったけど
private void Form1_DragOver( object sender, DragEventArgs e )
{
if( e.Data.GetDataPresent( DataFormats.Text ) )
e.Effect = DragDropEffects.Copy;
}
みたいな感じで
まあそれでも駄目なら自分のコード貼れってこった
0408デフォルトの名無しさん
2006/12/27(水) 23:04:47申し訳ないです。ドラッグ&ドロップの仕方が悪かったようです。
最小化されているフォームに対して、テキストをドラッグ&ドロップしていたため、
イベントが発生しなかったようです。
最小化されているフォームに対してドラッグ&ドロップイベントを発生させることは
可能なのでしょうか?
0409デフォルトの名無しさん
2006/12/27(水) 23:19:47そのテキストが元々IEのウィンドウのどの位置に有ったかという情報を
取得することは可能なのでしょうか?
0410デフォルトの名無しさん
2006/12/27(水) 23:20:410411デフォルトの名無しさん
2006/12/27(水) 23:22:140412デフォルトの名無しさん
2006/12/27(水) 23:45:51それをやるにはどういう方法がありますか?
0413デフォルトの名無しさん
2006/12/28(木) 00:42:00やっぱり、CやC++やWin32API、これが基本にないと混乱の源。
この、掲示板を見てそう思う。
0414デフォルトの名無しさん
2006/12/28(木) 00:48:210415デフォルトの名無しさん
2006/12/28(木) 01:23:310416デフォルトの名無しさん
2006/12/28(木) 01:25:500417デフォルトの名無しさん
2006/12/28(木) 01:27:430418デフォルトの名無しさん
2006/12/28(木) 01:28:35そんなことがあれば俺はMSに命を捧げてもかまわない
0419デフォルトの名無しさん
2006/12/28(木) 01:28:47C++製のDLLの中に
void* get_pointer();
という関数があるとして、
それをDllImportで呼び出して戻り値をIntPtr型の変数に代入します。
その後、同じDLL内に
void manage_data(void* pointer)
という、渡されたポインタを構造体のポインタに変換してデータを変更する関数がある場合、
それを
[DllImport("hoge.dll")]
public static extern void manage_data(IntPtr pointer);
という形で宣言して、
先ほどget_pointerで取得したIntPtr型の変数をそのまま渡した場合、
データを正しく処理することはできますでしょうか?
0420デフォルトの名無しさん
2006/12/28(木) 01:28:59こちらへどうぞ。
最高にド低脳な発言してください in ム板(XV)
http://pc8.2ch.net/test/read.cgi/tech/1164376614/
0421デフォルトの名無しさん
2006/12/28(木) 01:30:26まあ問題ないでしょ
0422デフォルトの名無しさん
2006/12/28(木) 01:30:46できる思うが。
つーかやってみりゃいいじゃねーかハゲ
0423353
2006/12/28(木) 06:50:58自力でMIMEヘッダ対応なエンコードしなきゃだめなんですね。
Mail空間になんでMIMEエンコードクラスが公開されてないんだか・・
0424デフォルトの名無しさん
2006/12/28(木) 07:14:35C#でウィザードリィみたいなゲーム作れるのでせうか;
0425デフォルトの名無しさん
2006/12/28(木) 08:19:210426デフォルトの名無しさん
2006/12/28(木) 10:01:40このスレは回廊の終わりに達しました。
:
:
A PIT
0427デフォルトの名無しさん
2006/12/28(木) 10:28:170428デフォルトの名無しさん
2006/12/28(木) 11:28:13それどこのカルドセ(ry
0429デフォルトの名無しさん
2006/12/28(木) 13:08:39WindowsのEXE起動時、前回使用したときと同じ位置に
フォームを表示させるのに良い方法はありますか?
VB6だとLoadイベント内で位置やサイズを設定すればよかった。
が、C#.NETで同じことすると、設定前の位置に一瞬表示されてから
設定した位置に表示される。
これがみっともないから良い方法あったら教えてください。
0430デフォルトの名無しさん
2006/12/28(木) 13:16:14起動時は不可視にしとけば?
設定後に可視化。
0431デフォルトの名無しさん
2006/12/28(木) 13:19:27Loadイベントで設定読み込んでLocationとSizeにセットなんてしょっちゅうやってるが
0432デフォルトの名無しさん
2006/12/28(木) 13:34:430433デフォルトの名無しさん
2006/12/28(木) 13:50:210434デフォルトの名無しさん
2006/12/28(木) 14:20:44似たようなツールいくつかあった気がする。
あのツール使ってみると、正直ゾッとする。
0435デフォルトの名無しさん
2006/12/28(木) 14:21:23コンストラクタで設定するのが定石じゃね?
0436デフォルトの名無しさん
2006/12/28(木) 14:39:18コンストラクタ内だと設定しても反映されない不思議現象
0437デフォルトの名無しさん
2006/12/28(木) 14:39:490438デフォルトの名無しさん
2006/12/28(木) 14:54:01ちなみに使うソフトは Microsoft Visual C# 2005 Express edition です
0439デフォルトの名無しさん
2006/12/28(木) 14:55:41これだっけ?
やってる?
StartPosition = FormStartPosition.Manual;
0440デフォルトの名無しさん
2006/12/28(木) 14:56:59StartPositionをManualにしてコンストラクタでLocationを設定
0441デフォルトの名無しさん
2006/12/28(木) 15:06:56http://uchukamen.com/
http://homepage3.nifty.com/midori_no_bike/CS/
この辺見てみたら?
0442デフォルトの名無しさん
2006/12/28(木) 15:12:36初心者向けのスレは↓でそれの4あたり
http://pc8.2ch.net/test/read.cgi/tech/1166240484/4
0443デフォルトの名無しさん
2006/12/28(木) 17:41:59非同期なLoadって感じ
0444デフォルトの名無しさん
2006/12/28(木) 17:53:300445デフォルトの名無しさん
2006/12/30(土) 00:39:09とか、なぜみんなフルネームで呼ぶ!?
C#ほやほやの俺が見たところ大半はフルで表記してる
理由あるの?
0446デフォルトの名無しさん
2006/12/30(土) 00:42:090447デフォルトの名無しさん
2006/12/30(土) 11:26:470448デフォルトの名無しさん
2006/12/30(土) 11:56:480449デフォルトの名無しさん
2006/12/30(土) 14:41:34さらに、
参照設定してusingしている場合、何を参照しているのか、
どっちのクラスを使用しているのかがわからなくなる。
たとえば、HTMLDocumentクラス
これは、System.Windows.Formsにもあるし、
Microsoft.mshtmlにもある。
このクラスはクラス名は同じだが、
メソッドやプロパティ、また扱っている型が違う。
なので、
System.Windows.Froms.HTMLDocument
Microsoft.mshtml.HTMLDocument
とフルネーム書いたほうが、
どっちのネームスペース配下のクラスを使用しているのかがわかる。
また、Microsoft.htmlのHTMLDocuemntをしらず、
プログラム上で単にHTMLDocumentで宣言してたりすると、
System.Windows.FormsのHTMLDocumentのものだと思い込んでしまい、
初心者の場合、
「すいません、コンパイルエラーが出るんですが」
と、うざい言葉が返ってくるのが目に見えているから
フルネームで書けばうざいことにならずにすむ。
(ま、フルネームで書いてもいってくる超初心者がいるのも確かだが)
0450デフォルトの名無しさん
2006/12/30(土) 14:54:23それとWindows.FormsにあるのはHtmlDocumentな。
0451デフォルトの名無しさん
2006/12/30(土) 14:57:41global::System.Console.WriteLineと書け
0452デフォルトの名無しさん
2006/12/30(土) 15:11:390453デフォルトの名無しさん
2006/12/30(土) 15:20:47Hoge.System.Console.WriteLine
とかならできるか。
0454デフォルトの名無しさん
2006/12/30(土) 16:29:58両方ともよく使うnamaspaceだからちょっとぐらい長くても違う名前にしてほしかった
好みの問題だけどな!
0455デフォルトの名無しさん
2006/12/30(土) 16:34:31using Threading = System.Threading;Threading::Timer timer;とか
0456デフォルトの名無しさん
2006/12/30(土) 16:35:360457456
2006/12/30(土) 16:36:150458454
2006/12/30(土) 16:52:59思い出させてくれてありがとう
0459デフォルトの名無しさん
2006/12/30(土) 17:21:26IEのMLang.dllを参照すれば可能らしいのですが、tlb(?)のないCOMらしくてVSに参照させることが出来ませんでした。mlang.idlからtlbの生成も試しましたが途中でハングアップしてしまい無理でした…。
0460デフォルトの名無しさん
2006/12/30(土) 17:29:060461デフォルトの名無しさん
2006/12/30(土) 17:33:59デザインはそのままで、背景色を灰色にすることはできますか?
ToolStripManager.RenderMode = ToolStripManagerRenderMode.System;
は試してみたのですが、デザインがいまいち。
「Visual Studio」のメニューバーとツールバーのような感じを希望
(ツールバーは丸く浮き出た感じ。背景に余計な罫線なし)。
0462デフォルトの名無しさん
2006/12/30(土) 17:36:530463デフォルトの名無しさん
2006/12/30(土) 17:40:15ToolStripProfessionalRendererとかを継承したクラスを作って、
OnRender...()等々をオーバーライド。
そいつのインスタンスをtoolStrip.Rendererプロパティに突っ込む。
とりあえずオーバーライドして空にしとけば余計な描画しなくなる
0464デフォルトの名無しさん
2006/12/30(土) 17:45:39Thx。早速試してみます。
0465デフォルトの名無しさん
2006/12/30(土) 20:20:18私物を持ち出して申し訳ないが、これを直接ソースとして取り込めば大丈夫なはず。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3295.txt
使用法はこんな感じ。改変は適当に。
using (WebClient webClient = new WebClient()) {
Console.WriteLine(Encoding.GetEncoding(CodePageDetector.Detect(webClient.DownloadData("http://www.yahoo.co.jp/"), DetectCodePageHint.HTML)[0]).EncodingName);
}
0466465
2006/12/30(土) 20:21:070467デフォルトの名無しさん
2006/12/30(土) 21:45:52ありがとうございます。非常に簡単で大変助かりました。
一つ質問があるのですが、これはIEやMLang.dllのバージョンが上がった場合でも、そのまま利用することはできますか?
0468デフォルトの名無しさん
2006/12/31(日) 00:24:02もちろんそんな保証はないが、それはTlbimpで作った相互運用アセンブリと
同じこと。
0469デフォルトの名無しさん
2006/12/31(日) 01:52:52両方ともよく使うけど同じソース内で混在はあんまりないと思うけど。
同じソース内ではどっちかに使用頻度が偏るのでもう片方はusingしないで使う。
0470デフォルトの名無しさん
2006/12/31(日) 04:56:52System.Windows.Forms.WebBrowserでスクロールされたことを検知したいのですが
不可能でしょうか?
0471デフォルトの名無しさん
2006/12/31(日) 07:47:470472デフォルトの名無しさん
2006/12/31(日) 13:24:06うちのもおかしい\n ((((()))???
こんな感じだったかな?
0473デフォルトの名無しさん
2006/12/31(日) 13:55:140474デフォルトの名無しさん
2006/12/31(日) 14:57:23現在、System.Windows.Forms.WebBrowserを使ったアプリケーションを作っています。
WebBrowserに表示されているページのリンクをクリックするとIEが起動しますが、
そうではなくて、現在つくっているアプリケーション自身をもう一つ表示させてその中のWebBrowserに
リンク先を表示させたいのですが、このようなことは可能でしょうか。
0475デフォルトの名無しさん
2006/12/31(日) 15:50:16その Array が string[] であるのが明らかなら、単純にキャストで良いけど。
>>474
NewWindow2 を調べてみ。
0476デフォルトの名無しさん
2006/12/31(日) 16:12:35それともこれで開発したプログラムを公開するには.net framwork
をインストールしてもらわなきゃいけないのかな?
0477デフォルトの名無しさん
2006/12/31(日) 16:15:42型の不明なリストを任意の型の配列に変換したいならこんな感じか
T[] ToArrayOf<T>(System.Collections.IList list)
{
if (list == null) return null;
T[] x = new T[list.Count];
for (Int32 i = 0; i < x.Length; i++)
{
x[i] = (T)Convert.ChangeType(list[i], typeof(T));
}
return x;
}
0478デフォルトの名無しさん
2006/12/31(日) 16:30:408〜9割くらいは入ってると思うよ
0479デフォルトの名無しさん
2006/12/31(日) 16:46:190480474
2006/12/31(日) 16:49:02レスありがとうございます。
現在使用しているのがC#2005で、NewWindowイベントはあるのですが、NewWindow2イベントがありません。
調べてみたところ、以下のページでVB2005の場合の対処方法は見つかったのですが、
C#の場合はどうすれば良いでしょうか。
ttp://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserNewWindow2Event.htm
0481デフォルトの名無しさん
2006/12/31(日) 16:51:180482デフォルトの名無しさん
2006/12/31(日) 17:00:29そうなんですね、じゃぁ安心して勉強します。ありがとうございました
0483デフォルトの名無しさん
2006/12/31(日) 17:10:00Array.ConvertAll
0484デフォルトの名無しさん
2006/12/31(日) 17:22:50ArrayからObject[]へのダウンキャストが発生するから一般的には無理じゃね?
0485デフォルトの名無しさん
2006/12/31(日) 21:23:12ton
0486デフォルトの名無しさん
2006/12/31(日) 22:24:29依存関係が解決できずビルドエラーになります。
この依存関係を解決するにはどうしたらいいのでしょうか?
環境はVS2005です。
0487デフォルトの名無しさん
2006/12/31(日) 22:33:28それだけじゃなにをどうやってるのかさっぱりだ
0488デフォルトの名無しさん
2007/01/01(月) 00:09:530489デフォルトの名無しさん
2007/01/01(月) 00:20:390491【明日 交通事故で 死亡】
2007/01/01(月) 01:18:580492196.168.0.1
2007/01/01(月) 01:28:440493デフォルトの名無しさん
2007/01/01(月) 01:35:530495デフォルトの名無しさん
2007/01/01(月) 09:41:150496デフォルトの名無しさん
2007/01/01(月) 09:45:33C++/CLIは遅いよ。
VMやライブラリのせい。
でもメリットもあるわけで。
0497デフォルトの名無しさん
2007/01/01(月) 09:58:040498デフォルトの名無しさん
2007/01/01(月) 10:13:570499デフォルトの名無しさん
2007/01/01(月) 11:27:50そんなに起動に時間がかかったりしないと思うんだけど。
それに、Vistaなら初回起動以外は十分はやくなってるから気にすることはない
0500デフォルトの名無しさん
2007/01/01(月) 11:38:43いろいろ試行錯誤してみました。
Rendererから作成するのが大変だったので、ColorTableだけをカスタマイズすることにしました。
併せて
ToolStripManager.VisualStylesEnabled = false;
を指定したところ、期待する描画ができました。
ありがとうございました。
0501495
2007/01/01(月) 13:19:12Vistaは初回起動や画面描画が遅いし、メモリは少し多めに食うし
新しく開くコントロールの初期化が鈍いのでかなり遅い気がするのですがどうでしょうか?
それ以外については中々早いようなんですけど
0502デフォルトの名無しさん
2007/01/01(月) 13:23:270503デフォルトの名無しさん
2007/01/01(月) 15:20:00君はC#使わなくていいよ
0504デフォルトの名無しさん
2007/01/01(月) 17:05:33スレッド終了時点でフォームが閉じられてしまいます。
具体的には以下のようなコードとなっています。
原因がよくわからないのですが、何かわかれば教えていただけないでしょうか?
よろしくお願いします。
public void ThreadTest() {
Thread testThread = new Thread(fncA)
testThread.Start();
}
private void fncA() {
Form testForm = new Form();
testForm.Show();
//****************
その他の処理
//****************
} //<-この関数が終わるとtestFormも閉じられてしまう
0506504
2007/01/01(月) 17:42:53お教えいただいてありがとうございます。
実は別スレッドで処理を行う内容が不定でして、
delegateを定義して他の者に具体的な処理内容を任せると言う構成になっています。
当然、私が関与しないフォームの作成などが行われる場面も出てくるのですが、
このような場合には、一般的にはどのような方法がとられるのでしょうか?
つまり、フォームの個数が予め把握できていないので、こちら側のメンバにしづらいという事情があります。
お手数をおかけして申し訳ありませんが、もう一歩だけヒントをいただけないでしょうか。
よろしくお願いします。
0507デフォルトの名無しさん
2007/01/01(月) 17:48:160508デフォルトの名無しさん
2007/01/01(月) 17:50:520510504
2007/01/01(月) 18:16:42ありがとうございます。
そうですね。本体部分でArrayListを作っておいて、
保存しておきたいものはこちらに登録するという仕様にしてみます。
色々とご助言頂き、ありがとうございました。
0511デフォルトの名無しさん
2007/01/01(月) 18:18:520512デフォルトの名無しさん
2007/01/01(月) 18:37:44とすれば、そのスレッドでメッセージループがまわるよ
アプリ自体の終了でそのスレッドも終了する
0513デフォルトの名無しさん
2007/01/01(月) 18:43:25メッセージループはどのスレッドで動いてるんだよ?
メッセージループが動いているスレッド以外からフォームを作成すること自体が問題じゃないのか?
0514デフォルトの名無しさん
2007/01/01(月) 18:46:130515デフォルトの名無しさん
2007/01/01(月) 19:03:34>メッセージループはどのスレッドで動いてるんだよ?
元のスレッドと新しいスレッドの両方だよ。
別にApplication.RunじゃなくてShowDialogでも同じだけど。
つーかShowDialogのが普通でしたね。スマソ
あとアプリ自体の終了でそのスレッドも終了ってのは嘘だった。
thread.IsBackGround = true;にする必要があった
0516デフォルトの名無しさん
2007/01/01(月) 19:05:400517デフォルトの名無しさん
2007/01/01(月) 19:06:15俺へのレスじゃなかったのかorz
吊ってきます
λ.....
0518504
2007/01/01(月) 19:53:08お恥ずかしい話、メッセージループという概念自体知らなかったため、
今、勉強させていただきました。
「スレッドごとにメッセージループをまわせば」というアドバイスに従って
以下のようにコードを書換えたところ、一応、意図したとおりの結果を出すことができました。
>511
>気をつけないとformの亡霊がいっぱいできるよ!
できてました(笑
危なかったです
public void ThreadTest() {
Thread testThread = new Thread(fncA)
testThread.Start();
testThread..sBackground = true;
}
private void fncA() {
//****************
//もしかしたら誰かがFormを作るかもしれない処理
//****************
Application.Run();
}
0519デフォルトの名無しさん
2007/01/01(月) 20:01:24素人なもんで気がするだけ…かも。
0520デフォルトの名無しさん
2007/01/01(月) 20:14:41別スレッドで行わないといけない処理だけ別スレッドでやればいいのに
0521デフォルトの名無しさん
2007/01/01(月) 20:52:320522デフォルトの名無しさん
2007/01/01(月) 21:10:030523デフォルトの名無しさん
2007/01/01(月) 21:12:320524デフォルトの名無しさん
2007/01/01(月) 21:47:220525デフォルトの名無しさん
2007/01/01(月) 22:36:00T[]じゃいかんのかえ。
0526デフォルトの名無しさん
2007/01/02(火) 13:16:190527デフォルトの名無しさん
2007/01/02(火) 13:47:200528デフォルトの名無しさん
2007/01/02(火) 17:33:280529デフォルトの名無しさん
2007/01/03(水) 04:08:16user32.dllなどインポートライブラリが指定されている関数ならいいんですが
中にはヘッダファイルしか指定されていないものがあるんですが
こういうものは諦めるしかないんでしょうか?
0530デフォルトの名無しさん
2007/01/03(水) 04:54:04関数ならちょっと調べればどの DLL でエクスポートされてるか見つかるだろ
0531デフォルトの名無しさん
2007/01/03(水) 08:19:58通常、MSDNで調べるとどのDLLでエクスポートされているか書いているんですが
それはどのヘッダを使用しているかだけしかかかれていないんです。
0532デフォルトの名無しさん
2007/01/03(水) 08:53:08例に出したら調べかたまで説明してやるよ
0533デフォルトの名無しさん
2007/01/03(水) 10:01:25int TabCtrl_GetCurSel(HWND hwnd);
commctrl.h
このヘッダがいるのはわかるんですけど
よろしくお願いします
0534デフォルトの名無しさん
2007/01/03(水) 10:12:33commctrl.h の中を調べてみな。
0535デフォルトの名無しさん
2007/01/03(水) 12:02:03事前に見ていたんだけど意味はさっぱり・・
取り合えずDLLとかそういうんじゃないんですね
やぱ、C言語から始めてないときびしいなぁ・・
ありがとう。
0536デフォルトの名無しさん
2007/01/03(水) 12:13:310537デフォルトの名無しさん
2007/01/03(水) 13:42:33なんでわざわざAPIの方を使うんだ?
0538デフォルトの名無しさん
2007/01/03(水) 13:58:28気がつかなかった・・・
#define TabCtrl_GetCurSel(hwnd) \
(int)SNDMSG((hwnd), TCM_GETCURSEL, 0, 0)
これか。
#defineだからマクロだな
SNDMSG も、#define SNDMSG ::SendMessage
で、SendMessage()関数の置き換えだ。
結局、APIの ::SendMessage(hwnd, TCM_GETCURSEL, 0, 0);
を呼んでるだけだね。
TabCtrl_GetCurSel() という関数はどこにも無いので、DLLもインポートLIBも存在しない。
0539デフォルトの名無しさん
2007/01/03(水) 14:32:40TabControl SelectedTabで直接とれるけど。
これ、名前から同じもの探すのは手間だな。
0540デフォルトの名無しさん
2007/01/03(水) 14:34:45終了するときの処理はデストラクタに書いてもOK?
0541デフォルトの名無しさん
2007/01/03(水) 14:41:57特に問題ないと思うよ。
0542533
2007/01/03(水) 14:50:34> もしかして>>533 は>>532の返事か?
そうなのです。わかり難くてすみません
すごくわかりやすい説明ありがとうございます!!
>>539
そういうC#でお馴染みの構文で別アプリのコントロールの
情報を取得したり設定できたらいいんですけどねぇ
APIでやるしかないので苦労が絶えない
0543デフォルトの名無しさん
2007/01/03(水) 15:30:11自分の使用しているPCに実装されているインターフェイス情報を取得して表示する
という機能を付けたいです。どこか参考になるサイトがあれば教えて下さい。
0544デフォルトの名無しさん
2007/01/03(水) 15:35:02このインターフェイスってどの意味で使ってる?
0545デフォルトの名無しさん
2007/01/03(水) 15:35:11> PCに実装されているインターフェイス情報
まずこれを説明してくれ
0546デフォルトの名無しさん
2007/01/03(水) 15:35:210547デフォルトの名無しさん
2007/01/03(水) 15:36:560548543
2007/01/03(水) 15:37:210549デフォルトの名無しさん
2007/01/03(水) 15:40:01それともUSB他を含めた通信ポートのことか?
0550デフォルトの名無しさん
2007/01/03(水) 15:41:06http://www.atmarkit.co.jp/fdotnet/dotnettips/523serialportnames/serialportnames.html
0551デフォルトの名無しさん
2007/01/03(水) 15:48:190553デフォルトの名無しさん
2007/01/03(水) 21:13:12for(int i=0; i<インスタンス1.Length ;i++)
{
インスタンス1[i] = new クラス1();
インスタンス1[i].変数1 = this.textBoxあ.Text;
}
どの時点で初期化されたんでしょうか?
0554デフォルトの名無しさん
2007/01/03(水) 21:25:27どれがだよ?
0555デフォルトの名無しさん
2007/01/03(水) 21:26:51配列型のオブジェクトであるインスタンス1を初期化(格納されてるのはすべてnull)
>インスタンス1[i] = new クラス1();
インスタンス1[i]の中身を初期化
0556デフォルトの名無しさん
2007/01/03(水) 21:43:360557デフォルトの名無しさん
2007/01/03(水) 21:46:170558デフォルトの名無しさん
2007/01/03(水) 21:49:310559デフォルトの名無しさん
2007/01/03(水) 21:59:35これで実行したら
richTextBox1に"WindowsApplication1.クラス名"
がそのまま出力されて笑えた
0560デフォルトの名無しさん
2007/01/03(水) 22:03:370561デフォルトの名無しさん
2007/01/03(水) 22:04:540562デフォルトの名無しさん
2007/01/03(水) 22:05:15ん?すまんがどこが笑いどころか教えてくれる?
0563デフォルトの名無しさん
2007/01/03(水) 22:56:270564デフォルトの名無しさん
2007/01/03(水) 23:02:59調べてどうしたいのかによる
0565デフォルトの名無しさん
2007/01/03(水) 23:22:04as
キャストしてみる
好きなもの選べ
0566デフォルトの名無しさん
2007/01/03(水) 23:31:45んだけど、プログラムの勉強ってどんぐらいかかるもん?
とりあえずifとかelseとかは理解できたが、先が見えん…。
とりあえず、学校では勉強は出来たほう。レベルの低いとこ
だったが、それなりに勉強して学年2位から5位あたりをうろ
ちょろしてまんた。
0567デフォルトの名無しさん
2007/01/03(水) 23:33:34もしくはスレ違い
0568デフォルトの名無しさん
2007/01/03(水) 23:34:340569デフォルトの名無しさん
2007/01/03(水) 23:38:31楽しいと思えることしといたほうがいいよ。
どれくらいかかるとか関係ない
プログラミングが楽しければそれでいい。
if〜elseスンゲーこれでなんでもできるじゃんって思えたら良し。
できるやつなら何からはじめても、のめり込んで究めるだろうし
駄目なやつは何をやっても駄目。
0570デフォルトの名無しさん
2007/01/03(水) 23:40:51無料IDEあるんだし、すぐEXE作れて目に見えるんだし
なんか御題貰って作って見ればいいお
0571デフォルトの名無しさん
2007/01/03(水) 23:44:04始めてPC-8801をやり始めたころはそんな感じだったな
足し算引き算するだけで感動してた
今の人は目が肥えてしまってる分基礎を学ぶのはつらいだろうね
0572デフォルトの名無しさん
2007/01/03(水) 23:47:47ビルドした際に生成されるobjフォルダの位置を変える方法ってある?
binフォルダの位置は変えるのに成功したんだが・・・
0573デフォルトの名無しさん
2007/01/04(木) 03:03:36MSBuildファイル(*.csproj)でプロパティBaseIntermediateOutputPathあたりを設定する。
詳しくはWINDOWS/Microsoft.NET/Framework/v??/あたりにあるMicrosoft.Common.targets,Microsoft.CSharp.targetsファイルを参照してくれ。
MSBuildまわりのドキュメントって少ないなあ
0574デフォルトの名無しさん
2007/01/04(木) 13:21:240575デフォルトの名無しさん
2007/01/04(木) 14:30:38Reflectorで中身を見てみたら?
0576デフォルトの名無しさん
2007/01/04(木) 14:45:370577デフォルトの名無しさん
2007/01/04(木) 15:16:37DllImportを使ってDLLから関数を呼び出せることはわかったのですが、関数だけじゃなくクラス自体も使いたいです。
やっぱり無理でしょうか。
0578デフォルトの名無しさん
2007/01/04(木) 15:21:340579デフォルトの名無しさん
2007/01/04(木) 15:21:360580デフォルトの名無しさん
2007/01/04(木) 17:41:19やりたいことは独自のコントロールクラスでの値の取得、変更時のデータの反映なんですが。
考えたのはリフレクションを使って処理する方法。リフレクションを使わないでGenericsで記述できるでしょうか?
こんな感じ?インスタンスは後からくっつけられるとします。
myTextBox.Bind(new FieldStringBinder(typeof(MyClass),"_name",BindGet|BindSet));//_nameはMyClassのフィールド名。
0581デフォルトの名無しさん
2007/01/04(木) 17:45:58分からないからSystem._ComObjectなんだろw
0582デフォルトの名無しさん
2007/01/04(木) 19:20:44それだとどのMyClassのインスタンスを見に行ったらいいのかわからない
なんで普通にMyClassのインスタンスを渡さないの
それともインスタンスフィールドじゃなくてstaticフィールドを見に行きたいのか?
そんな必要ある?
0583デフォルトの名無しさん
2007/01/04(木) 20:19:42継承って理解してるか?
class MyClass:CollectionBase
{
public Add(MyItem item)
{
}
}
ま、簡単に書くとこんな感じ
これは独自のクラスにarraylistの基底クラスを継承して
ArrayListと同じような機能をするけど
追加できるのはMyItemというクラスのインスタンスだけって感じ
やりたいコントロールの基底クラスを継承した独自クラス作成して
同じようにやればいいだけ
0584デフォルトの名無しさん
2007/01/04(木) 20:26:27勘違いする人がでるといかんので補足しておくと、
CollectionBaseはIList.Add(Object)を明示的に実装しているので、
実際にはIListにキャストすることでMyItemクラスのインスタンスでなくても追加できる。
MyClass a = new MyClass();
//a.Add(new Object()); // error
((IList)a).Add(new Object()); // ok
0585デフォルトの名無しさん
2007/01/04(木) 20:58:300586デフォルトの名無しさん
2007/01/04(木) 21:00:06不正なデータの追加などはできないようにするのがルール。
しかしそれ以前にジェネリックのサポートによりこんなのはほとんど不要になった。
0587デフォルトの名無しさん
2007/01/04(木) 21:00:53普通にプロパティを作ればいいんじゃないのか?
リフレクションなんてよほど特殊なことをする必要がない限り使うことはないんだが。
0588デフォルトの名無しさん
2007/01/04(木) 21:04:060589デフォルトの名無しさん
2007/01/04(木) 21:08:08リフレクションやそれに近い方法意外ではできないこと確定。
0590デフォルトの名無しさん
2007/01/04(木) 21:13:08Foo Value;
MyClass instance;
typeof(MyClass).GetField("_name").SetValue(instance, value);
value = (Foo)typeof(MyClass).GetField("_name").GetValue(instance);
やはり邪道だな。
0591デフォルトの名無しさん
2007/01/04(木) 21:18:54{
// instanceのTypeDescripterゲット
// プロパティゲット
// TypeConverterでTに変換
return (T)val;
}
書き方忘れたからコメントだ。
ああそうさ、結局リフレクションだお。
しかも使いやすくないよ。
0592デフォルトの名無しさん
2007/01/05(金) 00:35:08�d
おかげでバックアップの際にずいぶん楽になった。
0593580
2007/01/05(金) 12:02:09質問が分かりにくくてすいません。
やりたいことはたとえば独自のテキストボックスでテキストが変わったときにバインドされたインスタンスのフィールドを直接変えることです。
その際にバインドされるインスタンスは特定の型に依存しないようにしたいと思っています。
つまりどんなクラス、ストラクトでもFieldとしてpublicのstringを持っていてそれを指定されればテキストボックスとバインドできるようにしたいんです。
>>582 今回の場合はインスタンスが動作時にインジェクトされる可能性があるため静的には動作の記述のみにしようと考えています。
>>583 使う型ごとにGenericsで専用のテキストボックスを作るという考え方はありですが、その型にテキストボックスバインド用のインターフェースを作るわけにはいきません。
あるクラスでstringのフィールドが複数あった場合におのおの別のテキストボックスにバインドすることもありえますから。
>>587 フィールドでなくプロパティ限定にしてsetter,getterのデリゲートとバインドさせるのはありかもしれません。
myTextBox.Bind(typeof(MyClass),"Name",BindGet|BindSet);
こんなかんじでしょうか?
>>589 これはリフレクション使う前提で文字列にしているだけであって文字列として記述しないですむならそれに越したことはないです。Lispみたいに文法拡張できれば済む話でしょうね。
リフレクション使えばまぁ満足できるコード記述量で望みの動作できそうですがいまいちエレガントでないきがしてます(´・ω・`)
0594デフォルトの名無しさん
2007/01/05(金) 12:14:24柔軟に対応できるよ
0595デフォルトの名無しさん
2007/01/05(金) 12:26:41デリゲートを直接引数に渡すってことね
そのつど匿名メソッドなりでフィールドの値を変更するメソッドを書けばリフレクション不要
0597デフォルトの名無しさん
2007/01/05(金) 12:36:000598デフォルトの名無しさん
2007/01/05(金) 13:12:27なんだ。フィールド言うからてっきりprivateなフィールドを操作しようとしてるんかと思った。
普通はフィールドをpublicにするのはWin32APIに渡す構造体を除けばstatic readonlyのときだけ。
class Foo { public String Bar { get; set; } }
textBox.DataBindings.Add(new Binding("Text", foo, "Bar"));
0599デフォルトの名無しさん
2007/01/05(金) 13:23:42それって内部的にはリフレクション使ってるんじゃないの?聞きたいのは、こういうクラスがあるとかじゃなくて技術的にどういうやり方があるかということだろう。なんか質問者の意図を汲み取らないで回答してる人多すぎ。
0600デフォルトの名無しさん
2007/01/05(金) 13:25:260601デフォルトの名無しさん
2007/01/05(金) 13:56:59選択肢はライブラリを使うか、一から自分で書くかの二通り。
0602デフォルトの名無しさん
2007/01/05(金) 14:02:19技術の話ならMSDNのDataBindingsのところに全部書いてあるだろ。
0603デフォルトの名無しさん
2007/01/05(金) 14:13:20みてないけどDataBindingsがどのように実装されてるかも書いてあるの?
0604デフォルトの名無しさん
2007/01/05(金) 14:26:440605デフォルトの名無しさん
2007/01/05(金) 14:34:070606デフォルトの名無しさん
2007/01/05(金) 14:34:260607580
2007/01/05(金) 15:10:31今回は独自のライブラリを書いているので既存のDataBinderを使うことは考えていません。ただ考え方は見ておこうと思います。
見た感じだと内部でリフレクションを使っているんでしょうか?Reflactorで見ればいいんですけど(´・ω・`)
Reflectionを使うのでも速度的には問題ないのでそれでいいかもしれません。
ただできればTypeを効かす様にしたかったのでそういう記述できればですが、ざっと見たところそういう記述の仕方はなさそうかと。
0608デフォルトの名無しさん
2007/01/05(金) 15:17:06大体必要そうな情報は出揃ってると思うんだけど。
0609580
2007/01/05(金) 15:46:02裏で複雑なことをしてもいいので、表は可能な限り簡潔に書ければと思ってます。
0610デフォルトの名無しさん
2007/01/05(金) 16:17:590611デフォルトの名無しさん
2007/01/05(金) 16:30:52ブロック挿入の違いを教えて
0612デフォルトの名無しさん
2007/01/05(金) 16:32:420613デフォルトの名無しさん
2007/01/05(金) 16:44:070614デフォルトの名無しさん
2007/01/05(金) 17:17:480615デフォルトの名無しさん
2007/01/05(金) 17:23:28そこでILGeneratorですよ
0616デフォルトの名無しさん
2007/01/05(金) 17:26:31そもそもどこで出てきた言葉なんだよ
0617デフォルトの名無しさん
2007/01/05(金) 17:30:17ブロック挿入 : 選択した範囲をifやwhileなどのブロックで囲む
後者は手で書いた方が早い
0618デフォルトの名無しさん
2007/01/05(金) 17:33:12C#でレイトバインディングみたいな真似をするにはリフレクションを使うしかないのよ。
0619デフォルトの名無しさん
2007/01/05(金) 17:40:16とりあえず一番簡単な方法。
tVVLj9MwED53pf0Po5wSUUVwBVWwrLawl1JR4O4m09bItSPHyVK1/e/4mVcfqCtxyWP8eWa++Wbsolo
ymkHGSFnClCLLP1Oeo7y/29/fjQpJa6IQJJJccLaDb8vfmCkoRSUzfOalIjzDD+eQ1tczXwkPtv9d5K
PgSgoGisg1Kv/XBcylKFCqnXXiUMHUhT3VyNUZzOOG8DXmdlnjzQ7HtcMy9nyoZzKGhZKUr2FlMIneY
6owoiuIAwQmE+AVY3A4OFQwGPRopDZSvADHF3iQ62qrY8/02tOfDAtFBT918xGiYIvgPUTWZ5QYhqO2
hitqnpMm0fQLqh+7AuPEfFlcbHeOwTDTFKaMrMt07igf+tYgnIti2Hn/15m0LFyV0qmQW6LiT1EU7d8
eowhoCVwoIFATRvMmW18osYL9u2M0Bp/pKZnEZaQ2tEz7PdbhPoRMnQquRmbx2FW7FjoRwz4ODZe5d6
N14RumJ7cHddUOuNsEHzrSenuTlTs49Yr3er7wont8X/OAjIOHVypfXFN+JtSiKgohlR6kW9Vv6tXo3
qZ6Qskr3w4zXiNvYQ1zeAORn/bolVXA/1CFpQ5Jlgwb2qkpgQmUzsgWPWNnWKD6RViFcdOcultrvSl1
xCz1Yc+bSrhdZwYmCbFCoxgX2mgJ2siWc/qQuyPyK+E50ydik0DcNSc2wuBoDWvtQPbO8la8IWDeTJL
L8dJ69wjXWLw84D+5qXbcjPA/nKXfcStq7BE/JXBrDXxa/l6yeZ1Hh2unRHMJjd0Vpo+PErDPoCv24o
rYl9ulX4NBxwzY2tYYw0lk+7TtE2ge/wI=
http://www.geocities.jp/c_cpp_cs/code/code.html で展開
0621デフォルトの名無しさん
2007/01/05(金) 17:54:580622デフォルトの名無しさん
2007/01/06(土) 01:50:00>>586
ジェネリックってすげーな。今までcollectionBaseを
必死に継承してたのがバカみたいだよ
他に知っておいたほうがいい機能ないか?
0623デフォルトの名無しさん
2007/01/06(土) 02:56:310624デフォルトの名無しさん
2007/01/06(土) 06:48:05キーボード入力を処理したいので、TextBoxのように、コントロールにフォーカスが来るようにしたいです。
コントロールにフォーカスが来るようにするには、どのようにしたらよいでしょうか。
なお、PanelのTabStopをTrueにしても、フォーカスは来ませんでした。
そもそもPanelをカスタマイズするという方法がダメなのでしょうか?
0625デフォルトの名無しさん
2007/01/06(土) 09:42:39C言語の__FILE__マクロみたいなものが欲しいんです
0626デフォルトの名無しさん
2007/01/06(土) 10:07:46http://messiah-annex.at.webry.info/200502/article_7.html
が、デバッグビルドじゃないと駄目みたいだな。
0627デフォルトの名無しさん
2007/01/06(土) 11:30:49おー
いけました。ありがとうございます。
でも、わざわざStackFrameを生成してやらないといけないのは面倒ですね
ライブラリ化して呼び出すわけにはいかないし(;´Д`)
0628デフォルトの名無しさん
2007/01/06(土) 11:50:06これならライブラリ化も可能です。ヽ(´ー`)ノ
0629デフォルトの名無しさん
2007/01/06(土) 15:26:23[MethodImpl(MethodImplOptions.NoInlining)]
付けといた方がいいかもしれん。
まあデバッグ実行用なら事実上不要かもしれんが。
0630デフォルトの名無しさん
2007/01/06(土) 15:29:41つけとけばいいんじゃない?
0631デフォルトの名無しさん
2007/01/06(土) 15:33:54直接コンパイラに指示を出してるのかな
0632デフォルトの名無しさん
2007/01/06(土) 15:34:06インリンって読んでしまった俺はどうすればいい?
0633デフォルトの名無しさん
2007/01/06(土) 15:41:51cscが読んでるみたい。
出力のMSILにメソッド本体は含まれてるけど、メソッドの呼び出しが抜け落ちてる。
0634デフォルトの名無しさん
2007/01/06(土) 16:15:21VC#が生成した、Program.csのMainメソッドすら呼び出されていないような感じでした。
Mainメソッドを
static void Main()
{
MessageBox.Show("test1");
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
と書き換えた場合、debugだとちゃんとtest1と出るのですが、releaseだと全く出てきません。
一応Form1クラスのダイアログはちゃんど出てきてるのですが・・・
何が原因なんでしょうか?
0635デフォルトの名無しさん
2007/01/06(土) 16:33:01Form1から
MessageBox.Show("test1");
じゃだめなのかい?
記述的にあまりよろしくない
0636デフォルトの名無しさん
2007/01/06(土) 16:35:34そんな気持ち悪いことが本当に起こるのやら
ildasmでMainの中身覗いたらどうなってるんかね。
0637デフォルトの名無しさん
2007/01/06(土) 16:37:250638デフォルトの名無しさん
2007/01/06(土) 16:38:010639デフォルトの名無しさん
2007/01/06(土) 16:39:270640デフォルトの名無しさん
2007/01/06(土) 16:42:17もしやと思いexeの日付見たら古いままでした。
思い当たる原因は無いのですが、とりあえず一度フォルダごと消して再度ビルドしたらちゃんと動作しました。
お騒がせして申し訳ないですorz
0641デフォルトの名無しさん
2007/01/06(土) 16:46:45>>639あったらすい。
0642デフォルトの名無しさん
2007/01/06(土) 17:05:140643デフォルトの名無しさん
2007/01/07(日) 02:22:53MessageBox.Showで出現するWindowのOKボタンの位置などを取得したいのですが
0644デフォルトの名無しさん
2007/01/07(日) 02:33:00FindWindow, GetWindowPos
0645デフォルトの名無しさん
2007/01/07(日) 02:33:21お勧めはMessageBox相当のフォームをつくってShowDialog、
MessageBoxを直接いじろうと思ったらC#の範疇じゃないな。
0646デフォルトの名無しさん
2007/01/07(日) 02:47:50OK押したいだけなら、BM_CLICK
0647デフォルトの名無しさん
2007/01/07(日) 12:32:34vs2003です。
0648デフォルトの名無しさん
2007/01/07(日) 12:41:30言語仕様的に持ってる。
Documentation Comment
0649デフォルトの名無しさん
2007/01/07(日) 13:04:260650647
2007/01/07(日) 16:39:54ありがとうございました。
0651デフォルトの名無しさん
2007/01/07(日) 17:16:13そのデリゲートの宣言ってどの場所に書くべきですか?
0652643
2007/01/07(日) 20:48:57645の方針で行こうと思います。
Win32を使用する場合、EnumWindowsなどを使用して、クラス名#32770を比較して云々しないと駄目みたいですね。
0653デフォルトの名無しさん
2007/01/07(日) 20:49:35そのクラスにほぼ特有のデリゲートなら、そのクラスと同じ名前空間が一般的じゃないかね。
0654デフォルトの名無しさん
2007/01/07(日) 21:31:07並んでると美しくないのでクラスの中に突っ込みたくなる
0656651
2007/01/07(日) 22:07:15namespase xxxClassLibrary
{
public class Class1
{
public class xxxEventArgs
{
・・・
}
public delegate ・・・
public Event ・・・
public void Method1()
{
・・・
}
}
}
0657デフォルトの名無しさん
2007/01/07(日) 22:14:45.NET の標準ライブラリ見ても、例えば DataGridViewHogehogeEventHandler/EventArgs は System.Windows.Forms にあるし。
0658デフォルトの名無しさん
2007/01/07(日) 22:17:32ほれほれ
http://msdn2.microsoft.com/ja-jp/library/ms229027(VS.80).aspx
0659デフォルトの名無しさん
2007/01/07(日) 22:24:540660651
2007/01/07(日) 23:27:12サンクス。
脅しかと思うくらい「しないでください」って書いてありますねw
乱用厳禁ってことか。
今回は親クラスでしかインスタンスを作成できないクラス(でも参照可)
でなくてもいいのでネストやめておきます。
そこで、EventArgsとデリゲートをセットで定義しようと思いますが
ファイル名はどうしようかと…w
xxxxEvent.cs
xxxxEventArgs.cs
…
0661デフォルトの名無しさん
2007/01/07(日) 23:34:44ttp://msdn2.microsoft.com/ja-jp/library/ms229040(VS.80).aspx
EventHandler の宣言はどうせ 1 行だし、EventArgs と同じファイルにそれっぽい名前つけときゃ良いんじゃね
0662651
2007/01/07(日) 23:40:24ありがとうございます。
xxxxEventArgs.cs に EventHandler と EventArgs 書くことにします。
>イベント ハンドラではないデリゲートの名前には、サフィックス Callback を追加します。
>サフィックス Delegate は、デリゲートに追加しないでください。
知らなかった…orz
0663デフォルトの名無しさん
2007/01/08(月) 10:00:26ためになるね。思いっきり 〜Delegate とか作ってたよ俺orz
0664624
2007/01/08(月) 10:47:37ScrollableControlを使うことにしました。
0665デフォルトの名無しさん
2007/01/08(月) 12:39:12だめになる俺のソース
0666デフォルトの名無しさん
2007/01/08(月) 19:06:520667デフォルトの名無しさん
2007/01/08(月) 20:31:48using System.CollectionsのArrayListを使ってプログラムを作っているのですが
class test {
...
public struct dPoint {
public double X;
public double Y;
}
private dPoint pos;
private ArrayList list = new ArrayList();
.....
//ユーザ定義関数1
this.pos.x = .... // 23.456...
this.list.Add(this.pos.x);
.....
//ユーザ定義関数2
g.DrawString("this.list[0]->"+this.list[0] ,...); //デバッグ用に出力
という風なプログラムなのですがデバッグ出力で”this.list[0]->0”と表示されるのですが原因がわかりません
this.list.Add(1)と即値を入れた時は”this.list[0]->1”と表示されます
よろしくお願いします
0668デフォルトの名無しさん
2007/01/08(月) 20:33:40pos,xのxは小文字でいいんかいな
0669667
2007/01/08(月) 20:36:00あ、すいません
小文字です
public struct dPoint {
public double x;
public double y;
}
this.pos.x = .... // 23.456...
this.list.Add(this.pos.x);
0670デフォルトの名無しさん
2007/01/08(月) 20:37:090671デフォルトの名無しさん
2007/01/08(月) 20:40:27structで定義してるからだよ
その場合値を変更することができない
public class dPoint {
にしたらいける
0673あのー
2007/01/08(月) 20:47:480674デフォルトの名無しさん
2007/01/08(月) 20:49:120675あのー
2007/01/08(月) 20:50:58ToString
げほげほ
0676デフォルトの名無しさん
2007/01/08(月) 20:53:48Stringとの+はString.ConCatにコンパイルされるから型変換は不要。
0677デフォルトの名無しさん
2007/01/08(月) 20:54:28...
public struct dPoint {
public double X;
public double Y;
}
private dPoint pos;
private List<dPoint> list = new List<dPoint>();
this.pos.x = .... // 23.456...
this.list.Add(this.pos);
g.DrawString("list[0]->"+list[0].x+
0679デフォルトの名無しさん
2007/01/08(月) 21:05:01・DrawStringの中身
0680デフォルトの名無しさん
2007/01/08(月) 21:05:43どうやって上手くいったのか言えよカス
0681デフォルトの名無しさん
2007/01/08(月) 21:06:070682デフォルトの名無しさん
2007/01/08(月) 21:08:340683デフォルトの名無しさん
2007/01/08(月) 21:11:30class Program {
static void Main() {
String hellostr = "hello";
StringBuilder hellosb = new StringBuilder("hello");
world(hellostr, hellosb);
Console.WriteLine("String:{0},StringBuilder:{1}", hellostr, hellosb.ToString());
}
static void world(String str,StringBuilder sb) {
str = str + "world";
sb.Append("world");
}
}
このコードで"String:hello,StringBuilder:helloworld"と出力されるのは、
str = str + "world"においては"hello"とは違う
"helloworld"が入った別のインスタンスが生成され、
sb.Append("world")においては"hello"と同じインスタンスの中身が書き換わっているから
というのであっていますか?
0684デフォルトの名無しさん
2007/01/08(月) 21:11:30ありがとうございました、かw
0685デフォルトの名無しさん
2007/01/08(月) 21:17:13生産性の欠片のない書き込みよりましだぬ
0686デフォルトの名無しさん
2007/01/08(月) 21:17:54http://pc10.2ch.net/test/read.cgi/tech/1166240484/
0687デフォルトの名無しさん
2007/01/08(月) 21:20:39悪いが全く意味が分からない。
0688デフォルトの名無しさん
2007/01/08(月) 21:22:23stringはクラスだからってことでしょ
0689デフォルトの名無しさん
2007/01/08(月) 21:23:13StringBuilderはArrayではないし、
ArrayやStringBuilderもクラスだ。
0690デフォルトの名無しさん
2007/01/08(月) 21:25:180691デフォルトの名無しさん
2007/01/08(月) 21:25:35そそ。Stringクラスのインスタンスはimmutableなのよ。
0692デフォルトの名無しさん
2007/01/08(月) 21:28:010693667
2007/01/08(月) 21:31:11すいません、うまくいったコード書き忘れました
書きなれていないので汚いですけど
public struct dPoint
{
public double x;
public double y;
}
public struct ArrayPosList
{
public ArrayList listx;
public ArrayList listy;
}
private ArrayPosList list = new ArrayPosList();
private dPoint dx_pos;
//コンストラクタ内
this.list.listx = new ArrayList();
this.list.listy = new ArrayList();
...
//timerで呼び出される関数内
....//座標計算
this.list.listx.Add(this.dxy_pos.x);
this.list.listy.Add(this.dxy_pos.y);
int count = this.list.listx.Count;
g.DrawString(""+this.list.listx[count-1],f1,Brushes.Gold,10,this.lineheight*7);
>>681
structでいけました
0694デフォルトの名無しさん
2007/01/08(月) 21:33:17だからどこが間違ってたのか言えよ
コードなんて書かれてもわかるわけないだろ
0696デフォルトの名無しさん
2007/01/08(月) 21:36:050697デフォルトの名無しさん
2007/01/08(月) 21:36:52やってる内容は最初に書いたコードと変ってない気がする。
記述ミスしてただけでは?
0698667
2007/01/08(月) 21:40:58おそらくご覧の通り目潰しコードなのでたぶんそうだと思います
昨日始めたばっかりなもので、もう少し精進します
皆さんお騒がせして申し訳なかったです
0700デフォルトの名無しさん
2007/01/08(月) 21:42:54{
public ArrayList listx;
public ArrayList listy;
}
X座標とY座標を別々のcollectionで管理してるのにはワロタww
0701デフォルトの名無しさん
2007/01/08(月) 21:57:24ヒントにあるように
メソッドに構造体渡してそこで代入して、また別のメソッドでaddしたのかな?
それか、コピペのあと書き直し忘れたか。
aaaa.x=100;
をコピペして
aaaa.x=100;
aaaa.y= 0;
としようとして
aaaa.x=100;
aaaa.x= 0;のままとか。これは俺が良くやるミスw
0702デフォルトの名無しさん
2007/01/08(月) 22:04:56ってときが一番危険なんだぜ
覚えときな
0703デフォルトの名無しさん
2007/01/08(月) 22:22:500704デフォルトの名無しさん
2007/01/09(火) 00:14:380705デフォルトの名無しさん
2007/01/09(火) 00:47:3412時前には寝るはずだったのに。。。
0706デフォルトの名無しさん
2007/01/09(火) 10:11:050707デフォルトの名無しさん
2007/01/09(火) 11:15:06XNAが楽しそうなので、C#の文法からライブラリの使い方までを学べる本を探しています。
自分はCを学校でやった後、VB6、JAVA、VB.NET、VB2005と使ってます。オブジェクト指向は一通り理解してます。
できればVB2005との比較が掲載されているような文法書だとよいのですが。
これ読んどけってのがあったらお願いします。
0708デフォルトの名無しさん
2007/01/09(火) 13:35:420709デフォルトの名無しさん
2007/01/09(火) 13:46:21xnaは非常に範囲が狭くて深いのであまり一般的な入門書は役に立たないかも。
0710デフォルトの名無しさん
2007/01/09(火) 15:35:22でもまあ役には立つ。
諦めてC#の本でも大丈夫だと思うけどね。
javaやってたなら特に。
0711デフォルトの名無しさん
2007/01/09(火) 15:53:15固定長の場合と行内容によって高さを変える場合と選択できるようにするためです。
実装クラスの名称はFixHeightほにゃららとVariableHeightほにゃららにしようと思っています。
おまいら的にはほにゃららにどんな名前をつけますか?
0712デフォルトの名無しさん
2007/01/09(火) 15:58:14それなら普通にFixedHeightListBoxとかつけとけばいいと思うが。
0713デフォルトの名無しさん
2007/01/09(火) 16:00:20FixHeight固定長List
VariableHeight可変長List
0714デフォルトの名無しさん
2007/01/09(火) 16:02:16ジェネリックスも知らないのか
>>711
FixHeightGets
VariableHeightGets
0715デフォルトの名無しさん
2007/01/09(火) 16:04:29>>661
Listを継承するならListとつければいい
0716711
2007/01/09(火) 16:24:37メソッドとしては
float Height(int rowIndex)
float YPosition(int rowIndex)
などがあります。
HeightManagerでもいいんですが、Managerというほどのものでもないので・・・
0717デフォルトの名無しさん
2007/01/09(火) 16:37:42FixHeightCol
0718デフォルトの名無しさん
2007/01/09(火) 16:38:240719デフォルトの名無しさん
2007/01/09(火) 16:39:13クラス名・変数名に迷ったら書き込むスレ。Part8
http://pc10.2ch.net/test/read.cgi/tech/1154448184/
0720デフォルトの名無しさん
2007/01/09(火) 16:39:220721デフォルトの名無しさん
2007/01/09(火) 16:41:340722デフォルトの名無しさん
2007/01/09(火) 16:43:50どこが気に入らないんだよカス
0723デフォルトの名無しさん
2007/01/09(火) 16:48:20ColもDataSetもItemsもHeightの管理を行ってるって内容にそぐわないだろうがボケ。
0724デフォルトの名無しさん
2007/01/09(火) 16:53:56管理つっても、idxもらって数値返すだけだろカス
0725デフォルトの名無しさん
2007/01/09(火) 16:56:38その内容に対してColとかDataSetとかItemsつけるなんてセンスじゃないんじゃないのデベソ。
0726デフォルトの名無しさん
2007/01/09(火) 17:11:46ここらへんが……
0727デフォルトの名無しさん
2007/01/09(火) 17:18:280728デフォルトの名無しさん
2007/01/09(火) 17:37:210729デフォルトの名無しさん
2007/01/09(火) 17:49:17ListViewItemCollectionはidxもらったらアイテムを返すけどな
これがおかしいというのか?
0730デフォルトの名無しさん
2007/01/09(火) 17:52:490731デフォルトの名無しさん
2007/01/09(火) 17:59:17だから上の人はItemの管理をそのクラスに任すんじゃなくてItemにおうじたHeightの管理をそのクラスで行うといってるんだろうが。
勝手に仕様変えてこれでいいだろとは何事だアホタレ。
0732デフォルトの名無しさん
2007/01/09(火) 18:01:290733デフォルトの名無しさん
2007/01/09(火) 18:02:340734デフォルトの名無しさん
2007/01/09(火) 18:23:250735デフォルトの名無しさん
2007/01/09(火) 18:31:090736デフォルトの名無しさん
2007/01/10(水) 00:05:590737デフォルトの名無しさん
2007/01/10(水) 00:35:03のlpszSourceUrlNameとlpszLocalFileNameにキャッシュのURLとファイル名が集まるらしいんですけど、
その内容をstring等で表示したりとってきたりするには、どこにどういったコードを入れたらいいのでしょう?
0738デフォルトの名無しさん
2007/01/10(水) 00:39:29あと DllImport に手を出すなら MSDN のアンマネージ コードとの相互運用以下を熟読、これ必須。
0739まよい羊
2007/01/10(水) 08:26:42問題なく動作。
ただ、中国語OSでCLICKONCEでDownloadして利用すると、Corelab.Oracle原因
でエラーが出ます。
多分、Oracleクライアント使うと問題無く動くのですが、どうしてもクライアント側
の運用に負担をかけたくなく、corelab.oracleで完結させたいと考えています。
このエラー回避について何かご存知の方がいれば、お知恵を拝借したいと思います。
0740デフォルトの名無しさん
2007/01/10(水) 08:43:49「日東紡」と「ニット帽」てすげえ似てるよな、と・・・
0741デフォルトの名無しさん
2007/01/10(水) 09:25:170742デフォルトの名無しさん
2007/01/10(水) 09:32:58前述の質問でもちゃんと読んでたらそうは返さないだろうっての多すぎ。
ねたにしてもねたになりきれてないし。
0743デフォルトの名無しさん
2007/01/10(水) 09:51:050744デフォルトの名無しさん
2007/01/10(水) 14:03:500745デフォルトの名無しさん
2007/01/10(水) 14:32:070746デフォルトの名無しさん
2007/01/10(水) 14:36:350747デフォルトの名無しさん
2007/01/10(水) 14:38:570748デフォルトの名無しさん
2007/01/10(水) 14:41:290749デフォルトの名無しさん
2007/01/10(水) 15:09:100750デフォルトの名無しさん
2007/01/10(水) 18:46:220751まよい羊
2007/01/10(水) 19:01:030752デフォルトの名無しさん
2007/01/10(水) 19:12:190753デフォルトの名無しさん
2007/01/10(水) 19:18:17あきらめてOracleクライアントを入れるか、WebサービスにしてDBアクセスはサーバーでやらせるか・・
0754デフォルトの名無しさん
2007/01/10(水) 19:25:47ところで…
〜でエラーが出ます。
これは何も言ってないのと同じ。
具体的にどんなエラーが出たか書くべき。
0755デフォルトの名無しさん
2007/01/10(水) 19:40:33Visual Studio 2005のC#で、CoreLab.oracleを使ってOracleにアクセスするアプリを
作っているのですが、日本語Windowsでは問題なく動作します。
しかし中国語Windows上では、CLICKONCEでDownloadして利用するとCorelab.Oracleが原因
で 〜〜エラーが出ます。
多分、Oracleクライアント使うと問題無く動くと思いますが、どうしてもクライアント側
の運用に負担をかけたくなく、corelab.oracleで完結させたいと考えています。
このエラー回避について何かご存知の方がいれば、お知恵を拝借したいと思います。
0756デフォルトの名無しさん
2007/01/10(水) 21:13:560757デフォルトの名無しさん
2007/01/10(水) 22:26:100758デフォルトの名無しさん
2007/01/10(水) 23:59:290759デフォルトの名無しさん
2007/01/11(木) 02:06:30DateTimeの引数なしのToString()とか意識してなくて挙動が変わったりとか。
CoreLab.oracleは使ったことないのでよくわからん。
漢字が微妙に違ってるけどなんとなく読めてなんとなく意味が通じるのがちょっと楽しい。
漢字のみの部分が多言語対応されてないリソースで日本語が表示されてるのか
ちゃんと中国語になってるのか一瞬わからなくて困ったりする。
0760デフォルトの名無しさん
2007/01/11(木) 07:37:04アプリ上のボタンを押下することによってアクティブ化し
タイマーを使って一定間隔でメッセージを自動送信したいのですが可能でしょうか?
もし可能だとしたらどのような方法でメッセの窓をアクティブ化するかご教授ください。
下記が途中まで作ったコードです。タイマー周りは後から実装予定です。
private void button1_Click(object sender, EventArgs e) {
// textBox1 で指定した「クラス名」の Window をアクティブにする
IntPtr hwnd = FindWindow(textBox1.Text, null);
if(hwnd != IntPtr.Zero) {
if(IsWindowVisible(hwnd)) {
SetForegroundWindow(hwnd); // アクティブにする
}
}
SendKeys.Send("保守{ENTER}");
}
この方法だとnotepadなどはアクティブ化できましたが、他のTeraPadやメッセなどは
まったく動きませんでした。
0761760
2007/01/11(木) 07:57:38タスクをメッセ窓に切り替えて自動でメッセージ送信したいということです。
0762デフォルトの名無しさん
2007/01/11(木) 09:29:57SetWindowPosも使ってみ
0763デフォルトの名無しさん
2007/01/11(木) 16:20:02クラス自体にはメソッドの規約などの概念をもたせないで実装についての定義のみを記述するように分離すればインターフェースとクラス共存できて実装の多重継承とか出来るのに・・・(´・ω・`)
0764デフォルトの名無しさん
2007/01/11(木) 16:23:380765デフォルトの名無しさん
2007/01/11(木) 16:43:29>ほんとにインターフェースとクラスの区別をしたせいで実装がすごいめんどくさくなるときがある・・・
共通して使うメソッドをまとめて別クラスつくればいいんじゃないの?
0766デフォルトの名無しさん
2007/01/11(木) 16:47:00SuspendLayout/ResumeLayout
0767デフォルトの名無しさん
2007/01/11(木) 16:54:52どのように記述すれば良いのでしょうか?
using キーワードで出来そうで出来ないみたいのですが。。。
0768デフォルトの名無しさん
2007/01/11(木) 17:02:56ついでにGenericsだと
T Max<T>(T lhs,T rhs){
return Max(lhs,rhs);
}
みたいなことってかけない?
0769デフォルトの名無しさん
2007/01/11(木) 17:12:53T Max<T>( T lhs, T rhs ) where T : IComparable
{
if( lhs.CompareTo( rhs ) > 0 )
return lhs;
else
return rhs;
}
0770デフォルトの名無しさん
2007/01/11(木) 17:15:36return lhs+rhs;
}
みたいなのは?
0771デフォルトの名無しさん
2007/01/11(木) 17:50:45リフレクションつかわんと無理だな。
0772デフォルトの名無しさん
2007/01/11(木) 17:57:080773デフォルトの名無しさん
2007/01/11(木) 18:28:33あえて付けてない
というかJavaの暴挙
0774デフォルトの名無しさん
2007/01/11(木) 19:22:460775デフォルトの名無しさん
2007/01/11(木) 19:30:41thx。やっぱり無いのか。
これまでの有名な言語から色々インスパイアして出来上がった言語だからか、
移行しやすいのは良いけど、半端に似ているので混乱しますね。
0776デフォルトの名無しさん
2007/01/11(木) 22:03:230777デフォルトの名無しさん
2007/01/12(金) 00:18:15していますが、LoadMenu で 0 が返ってきて取得できていません。
どこかおかしいところはありますでしょうか。
[DllImport("user32.dll", EntryPoint = "LoadMenu")]
static extern IntPtr LoadMenu(IntPtr HInstance, string lpString);
[DllImport("user32.dll")]
static extern bool GetMenuItemInfo(IntPtr hMenu, uint uItem, bool fByPosition, ref MENUITEMINFO lpmii);
[StructLayout(LayoutKind.Sequential)]
public struct MENUITEMINFO
{
public uint cbSize;
public uint fMask;
public uint fType;
public uint fState;
public int wID;
public int hSubMenu;
public int hbmpChecked;
public int hbmpUnchecked;
public int dwItemData;
public string dwTypeData;
public uint cch;
public int hbmpItem;
}
0778デフォルトの名無しさん
2007/01/12(金) 00:19:43public static string LoadMenu(string dllname, string menuname, uint menuID)
{
// DLL を開く
IntPtr lib = LoadLibrary(dllname);
IntPtr hMenu = LoadMenu(lib, menuname);
MENUITEMINFO mif = new MENUITEMINFO();
mif.cbSize = (uint)Marshal.SizeOf(typeof(MENUITEMINFO));
mif.fMask = 0x40;
mif.fType = 0;
mif.dwTypeData = null;
bool ret = GetMenuItemInfo(hMenu, menuID, true, ref mif);
// DLL を開放
FreeLibrary(lib);
return mif.dwTypeData;
}
Console.WriteLine(ReadDLLResources.LoadMenu("res_ja.dll", "32409", 32410));
0779デフォルトの名無しさん
2007/01/12(金) 00:29:430780デフォルトの名無しさん
2007/01/12(金) 00:38:12レスありがとうございます。
hogehoge.rc ファイルの
32409 MENU
BEGIN
POPUP "ポップアップ"
(略)
↑の32409 を指定したのですが、これではないですか?
0781デフォルトの名無しさん
2007/01/12(金) 00:46:340782デフォルトの名無しさん
2007/01/12(金) 00:48:29C++ では試してないです。C# しかできないので orz
0783デフォルトの名無しさん
2007/01/12(金) 00:51:580784デフォルトの名無しさん
2007/01/12(金) 00:58:56どもです。リソース識別子を string → uint 渡しにすることで、LoadMenu で
メニューのハンドルは取得できました。
ですが、GetMenuItemInfo でメニューの文字列はまだ取得できません。
mif.dwTypeData にメニューの文字列が入っているはずなのですが・・・
0785デフォルトの名無しさん
2007/01/12(金) 01:06:37>指定して GetMenuItemInfo 関数を呼び出します。このとき、 cch メンバにはアイテ
>ムのテキストを格納するのに必要なバッファのサイズ(Unicode 版では文字数)が格
>納されます。バッファを確保した後、このメンバにバッファアドレスを指定して再び
>GetMenuItemInfo 関数を呼び出します。
0786デフォルトの名無しさん
2007/01/12(金) 01:08:28ID渡すならfalseで
0787デフォルトの名無しさん
2007/01/12(金) 01:16:12GetMenuItemInfo だと微妙に微妙だし
0788デフォルトの名無しさん
2007/01/12(金) 01:26:57お返事ありがとうございます!GetMenuString を使ったら文字列が取得できました!!
色々探しているときに GetMenuString は obsolete だから GetMenuItemInfo を
使えと書いてあったので、GetMenuItemInfo でやろうとしていました。
今後の人の参考に、コードを書いておきます。
ありがとうございました。
0789デフォルトの名無しさん
2007/01/12(金) 01:30:56[DllImport("user32.dll", EntryPoint = "LoadMenu")]
static extern IntPtr LoadMenu(IntPtr HInstance, uint lpString);
つづき
[DllImport("user32.dll")]
static extern bool GetMenuItemInfo(IntPtr hMenu, uint uItem, bool fByPosition, ref MENUITEMINFO lpmii);
[DllImport("user32.dll")]
static extern int GetMenuString(IntPtr hMenu, uint uIDItem, StringBuilder lpString, int nMaxCount, uint uFlag);
public static string LoadMenu(string dllname, uint menuname, uint menuID)
{
// DLL を開く
IntPtr lib = LoadLibrary(dllname);
IntPtr hMenu = LoadMenu(lib, menuname);
StringBuilder sb = new StringBuilder();
GetMenuString(hMenu, menuID, sb, 256, 0x00000000);
// DLL を開放
FreeLibrary(lib);
return sb.ToString();
}
Console.WriteLine("'" + ReadDLLResources.LoadMenu("res_ja.dll", 32409, 32410) + "'");
0790デフォルトの名無しさん
2007/01/12(金) 19:30:24Process sprocess = (Process)((ListBox)sender).SelectedItem;
Hide();
if(sprocess == null) {
Debug.WriteLine("sprocessがnull");
} else {
SetForegroundWindow(sprocess.MainWindowHandle);
sousin();
}
Show();
}
private void timer1_Tick(object sender, EventArgs e) {
Hide();
if(sprocess == null) {
Debug.WriteLine("processがnull");
} else {
SetForegroundWindow(sprocess.MainWindowHandle);
sousin();
}
Show();
}
リストボックスのウィンドウのタイトルをダブルクリックして画像を送信するプログラムを書いてるのですが
ダブルクリックして取った値 プロセス変数 sprocess をタイマー処理の中でも使う方法ってありますか?
このままですと、当然ですがエラー
1名前 'sprocess' は現在のコンテキスト内に存在しません.
と出てきてしまいます。
0791デフォルトの名無しさん
2007/01/12(金) 19:31:240792デフォルトの名無しさん
2007/01/12(金) 19:34:54どなたか解決策等ご存知の方いらっしゃいませんか?
Buildフォルダのパーミッションとかは問題ないはずです
ターゲット InitializeEndToEndIteration:
UpdateBuildNumberDropLocation BuildNumber='BuildTest_20070112.11' DropLocation='\\dev01\VSTFSWork\BuildTest_20070112.11'
C:\Program Files\MSBuild\Microsoft\VisualStudio\v8.0\TeamBuild\Microsoft.TeamFoundation.Build.targets(165,5): error : 許可されていない操作を実行しようとしました。
プロジェクト "TFSBuild.proj" 内のターゲット "InitializeEndToEndIteration" のビルドが終了しました。 -- 失敗
プロジェクト "TFSBuild.proj" のビルドが終了しました。 -- 失敗
ビルドに失敗しました。
C:\Program Files\MSBuild\Microsoft\VisualStudio\v8.0\TeamBuild\Microsoft.TeamFoundation.Build.targets(165,5): error : 許可されていない操作を実行しようとしました。
0 警告
1 エラー
0793デフォルトの名無しさん
2007/01/12(金) 19:36:33よくわからんが
Process sprocess = (Process)((ListBox)sender).SelectedItem;
をタイマーの方にも書けばいいんじゃないの?
0794デフォルトの名無しさん
2007/01/12(金) 19:36:38Regex.Replace()を使えばできそうな気もするんですが、書き方がよくわからない。
VisualBasic.StrConv()はいらんものまで変換してしまって…
0795デフォルトの名無しさん
2007/01/12(金) 19:40:36前にも同じ質問しなかった???
0796デフォルトの名無しさん
2007/01/12(金) 19:42:521回ダブルクリックしたらそれ以降はタイマー処理で自動でやっていきたいので
それだと無理なんです。
private void timer1_Tick(object sender, EventArgs e) {
Process sprocess = (Process)((ListBox)sender).SelectedItem;
Hide();
if(sprocess == null) {
Debug.WriteLine("processがnull");
} else {
SetForegroundWindow(sprocess.MainWindowHandle);
keysousin();
}
Show();
}
と書いた場合、
Process sprocess = (Process)((ListBox)sender).SelectedItem;
の行で
InvalidCastException はハンドルされませんでした。
型 'System.Windows.Forms.Timer' のオブジェクトを型 'System.Windows.Forms.ListBox' にキャストできません。
と出てしまいます。
0797デフォルトの名無しさん
2007/01/12(金) 19:43:16Regex.Replace / MatchEvaluator / StrConv 組み合わせる
0798デフォルトの名無しさん
2007/01/12(金) 19:43:56>>600
さんくす。とりあえず
String.Normalize(NormalizationFrom.FromKC)
で、全角英数空白記号が半角になった。FromKDとの違いがワカラン...
副作用ってどんなことか気になるが、とりあえずOK?。
>>601
今回は数字のみだったので、ループで済ましてたが、
英字や記号までとなると、なんか馬鹿らしくなる。
だれかPHPのmb_convert_kana関数を移植してくれんだろうか?
0799デフォルトの名無しさん
2007/01/12(金) 19:50:03上手くいかないよと言う前に。
エラーメッセージを良く見ろ。
0800デフォルトの名無しさん
2007/01/12(金) 19:50:37sprocessをメンバに格上げすれば?
0801デフォルトの名無しさん
2007/01/12(金) 19:51:25http://pc10.2ch.net/test/read.cgi/tech/1168271508/
0802デフォルトの名無しさん
2007/01/12(金) 19:51:28ああ、失敬。(Process)((ListBox)sender).SelectedItemじゃなくて
(Process)listBox1.SelectedItem か。
つかそれくらい適当に書き換えてくれよ・・・
0803デフォルトの名無しさん
2007/01/12(金) 19:53:540804デフォルトの名無しさん
2007/01/12(金) 20:06:12大規模OFFスレにて【2ちゃんねる廃止反対オフ】スレが立っています。
内容としては廃止反対デモ運動を開催します。
参加できる方、協力していただける方、集まってください
http://off4.2ch.net/test/read.cgi/offmatrix/1168580932/
0805デフォルトの名無しさん
2007/01/12(金) 20:07:08すみません。読んだのですが。。。キャストの問題ですか・・?
>>800
static Process sprocess = (Process)((ListBox)sender).SelectedItem;
ってことですか?
>>802
(Process)listBox1.SelectedItemですか?
>>803
その通りです。ちょっと勉強します;
0806デフォルトの名無しさん
2007/01/12(金) 20:10:210807デフォルトの名無しさん
2007/01/12(金) 20:12:18それは初心者にのみ許される技。
0808デフォルトの名無しさん
2007/01/12(金) 20:15:480809デフォルトの名無しさん
2007/01/12(金) 20:19:35どこからこの発想が出てくるんだ?
0810デフォルトの名無しさん
2007/01/12(金) 20:23:58だれが遊んでるの?
17 名前:赤羽地方裁判所 ★[停止] 投稿日:停止
差し押さえました。
0811デフォルトの名無しさん
2007/01/12(金) 20:24:25タイマーのtag に sprocess といれましたがダメでした。
>>807
staticをつければいいのかと・・
最初の1回のみのダブルクリックによって発生したイベントでとった値をそのまま
タイマーで1分ごとで使いまわす というのは無理ってことでしょうか・・。
0812デフォルトの名無しさん
2007/01/12(金) 20:31:17staticじゃ無くて。
0813デフォルトの名無しさん
2007/01/12(金) 20:52:41sprocessをform1クラスのメンバー変数にしろってことですよね?
Process sprocess = (Process)((ListBox)sender).SelectedItem;
ごと外に出したのですが
名前 snder' は現在のコンテキスト内に存在しません
と出てきてしまいました orz
0814デフォルトの名無しさん
2007/01/12(金) 20:56:59悪いこと言わないから何か適当な入門書買って
一から勉強し直したほうがいいと思うよ。
これ以上はこのスレで質問することじゃない。
0815デフォルトの名無しさん
2007/01/12(金) 21:00:47俺も同意見
>>813
明日本屋か、図書館行ったほうがいいよ。
お勧めの入門書とかは聞かないでね。
入門は遥か前なので…
0816794
2007/01/12(金) 21:06:26>>797 の方法ですませた。
string replaced = Regex.Replace(str, "[a-z0-9]", new MatchEvaluator(RegexReplaceEvaluator));
///
static public string RegexReplaceEvaluator(Match m)
{
return Strings.StrConv(m.Value, VbStrConv.Narrow, 0);
}
0817デフォルトの名無しさん
2007/01/12(金) 21:45:030818デフォルトの名無しさん
2007/01/12(金) 22:43:48"[a-z0-9]"
これじゃ一文字ずつの置換になって効率悪い希ガス
0819デフォルトの名無しさん
2007/01/12(金) 23:02:47816でいいと思うよ。
何か代替案あるなら教えて!
0820デフォルトの名無しさん
2007/01/12(金) 23:04:020821代替案
2007/01/12(金) 23:31:02for(int i = 0; i < text.Length; i++){
switch(text[i]){
case 'A':sb.Append('A');break;
case 'B':sb.Append('B');break;
...以下略
}}
0822デフォルトの名無しさん
2007/01/12(金) 23:36:310823デフォルトの名無しさん
2007/01/12(金) 23:50:33static String ToHankaku(String str)
{
if (str == null) return null;
StringBuilder sb = new StringBuilder(str.Length);
foreach (Char c in str)
{
if ('0' <= c && c <= '9') sb.Append((Char)(c - ('0' - '0')));
else if ('A' <= c && c <= 'Z') sb.Append((Char)(c - ('A' - 'A')));
else if ('a' <= c && c <= 'z') sb.Append((Char)(c - ('a' - 'a')));
else sb.Append(c);
}
return sb.ToString();
}
0824デフォルトの名無しさん
2007/01/12(金) 23:57:070825デフォルトの名無しさん
2007/01/12(金) 23:57:480826デフォルトの名無しさん
2007/01/13(土) 00:00:27private string ToNarrow( string str )
{
StringBuilder sb = new StringBuilder( str.Length );
for( int i = 0; i < str.Length; i++ )
{
short s = (short)str[i];
if( ( s <= -198 && s >= -223 ) || ( s <= -166 && s >= -191 ) )
{
s += 288;
}
sb.Append( (char)s );
}
return sb.ToString();
}
0827デフォルトの名無しさん
2007/01/13(土) 00:06:38A-Za-z0-9で
return new string(Array.ConvertAll<char, char>(str.ToCharArray(), delegate(char c) {
return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')
? (char)((int)c - 0xfee0) : c;
})));
0828デフォルトの名無しさん
2007/01/13(土) 00:10:36intにキャストする必要はないな
0829デフォルトの名無しさん
2007/01/13(土) 00:19:360830デフォルトの名無しさん
2007/01/13(土) 00:27:300831デフォルトの名無しさん
2007/01/13(土) 00:28:440832デフォルトの名無しさん
2007/01/13(土) 00:38:44<= 'Z')
<= 'z')
0833デフォルトの名無しさん
2007/01/13(土) 00:48:10桁あふれを期待するコードは好ましくないな
いやまあこんなネタコードに好ましくないも何もないけど
0834813
2007/01/13(土) 02:30:46色々勉強しなおしてみます。
0835デフォルトの名無しさん
2007/01/13(土) 02:44:46.NETでグラフを書くプログラムを作っているのですが
ラベル用にn個の要素を「いい感じ」に色分けするColorの計算方法はないでしょうか?
いまのところ色相をn等分してHSV→RGB変換していますが、いまいち目立ちません
0836デフォルトの名無しさん
2007/01/13(土) 02:53:230837813
2007/01/13(土) 03:36:45String kaiwamozi ="会話";
private void updateTaskList() {
System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcesses();
listBox1.BeginUpdate();
listBox1.Items.Clear();
foreach(System.Diagnostics.Process p in processes) {
if(p.MainWindowHandle != (IntPtr)0 && p.MainWindowTitle != "") {
// if(Regex.IsMatch(p.MainWindowTitle, kaiwamozi)) {
listBox1.Items.Add(p);
// }
}
}
listBox1.EndUpdate();
}
タスクのウィンドウを全て拾ってリストボックスに表示させたいのですが
例えばMSNメッセを開いてた場合に
メインウィンドウ
誰かとの会話窓その1
誰かとの会話窓その2
とあった場合に、一番手前側にあるウィンドウしか拾ってくれないのですが
これを拾う方法ってありますか?
0838デフォルトの名無しさん
2007/01/13(土) 03:39:360839デフォルトの名無しさん
2007/01/13(土) 03:41:220840デフォルトの名無しさん
2007/01/13(土) 04:01:07C#のWebBrowserコントロールだとエラー吐くことがあるのはなんで?
http://www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter02/004/sample2/index.html
ためしにこのコード実行しようとすると
指定されたリソースは見つかりませんとか出るんだけど
0841840
2007/01/13(土) 04:10:37全然普通に動いたわ
何勘違いしてたんだろ俺
0842デフォルトの名無しさん
2007/01/13(土) 04:59:43RssBanditのコードにOneNoteのタブの色分けを真似してるとこがあった
アートのプロの配色だけにとてもきれい
0843デフォルトの名無しさん
2007/01/13(土) 07:29:13EnumWindows 関数とか使うしかない
0845デフォルトの名無しさん
2007/01/13(土) 10:20:55プロセスの中のスレッドを列挙すれば行けない?←やりかたしらんけど。
0846デフォルトの名無しさん
2007/01/13(土) 11:57:16ちゃんと勉強してからにしたほうがいいよ
0847デフォルトの名無しさん
2007/01/13(土) 12:12:160848デフォルトの名無しさん
2007/01/13(土) 12:26:25また祭りかよ〜
すっかり騙され値待った。
安心してスレたぁてよっと。
0849835
2007/01/13(土) 12:54:23情報ありがとうございます、ソースを見ましたが固定で色の配列をもっていますね・・
ある程度は固定で持って足りなくなった時に中間を求めるやり方のほうがいいかなぁ
0850デフォルトの名無しさん
2007/01/13(土) 12:59:24目立たない。
0851デフォルトの名無しさん
2007/01/13(土) 13:03:27色分けで区別するのは無理があると思う
0852デフォルトの名無しさん
2007/01/14(日) 02:37:24収束に向かっているようですが蛇足で。
人間の目(感覚)にとって適切な色を出力するということなので、固定の配列を用意するというのは、理にかなった正攻法かと思われ。
固定の数を超えた場合は、固定の配列をループして再利用。ただしその色の濃淡を変えていくというのがよいのでは?(もしくは網掛けの利用とか)
0853デフォルトの名無しさん
2007/01/14(日) 23:34:34やっぱり、ネイティブなvbの方がc#よりも早いのですか?
0854デフォルトの名無しさん
2007/01/14(日) 23:48:09から実行されるから,ネイティブじゃないからから遅いってことはないよ
0855デフォルトの名無しさん
2007/01/14(日) 23:56:16って表現に違和感アリ
0856デフォルトの名無しさん
2007/01/15(月) 00:06:120857デフォルトの名無しさん
2007/01/15(月) 00:47:230858デフォルトの名無しさん
2007/01/15(月) 01:04:48いや、ならないだろ。。。
0859デフォルトの名無しさん
2007/01/15(月) 01:16:24どういう部分の処理かによるんじゃね?
WinFormまわりか、純粋な計算なのか
0860デフォルトの名無しさん
2007/01/15(月) 02:41:34わからんくせに気にする奴大杉
0861デフォルトの名無しさん
2007/01/15(月) 02:45:07起動が遅いことについては要因が二つあって、ひとつはJITによるもの。これに関してはngenで改善する。
もうひとつ我慢ならないぐらい遅くなるのは必要なメモリ使用量と仮想記憶サイズの合計が大きいことで、
起動時にはその多くを実メモリに一旦ロードするためにページングなどが多く起きる。
これによる遅延が相当に大きい。
起動してしまえば実際に必要な箇所は限られるので実メモリ(ワーキングセット)は減少し安定してくる。
この問題を解決するには基本的に実メモリを増やすしかない。
そしてユーザーの多くのPCは旧VBはそれなりに動くメモリは搭載しているが.NETには足りないサイズしか搭載していない。
0862デフォルトの名無しさん
2007/01/15(月) 02:47:15マネージドの対義語はアンマネージドであって、ネイティブではない。
0863デフォルトの名無しさん
2007/01/15(月) 02:56:430864デフォルトの名無しさん
2007/01/15(月) 03:00:480865デフォルトの名無しさん
2007/01/15(月) 03:03:140866デフォルトの名無しさん
2007/01/15(月) 03:07:160867デフォルトの名無しさん
2007/01/15(月) 03:09:510868デフォルトの名無しさん
2007/01/15(月) 10:48:32同じスレッドに潜り込み済みのC#製dllからサブクラス化したいと考えています。
常套手段のSetWindowLong/CallWindowProcで実現できたのですが、
その場合注意することってありますか?
フィールドにおいたコールバックのデリゲートがGCされたり
なんてやばい局面は想定されたりするんでしょうか。
0869デフォルトの名無しさん
2007/01/15(月) 12:23:52switch文にて、いくつかの条件で指定するには
どうすればいいのでしょうか
たとえば
case 1 or 2 or 3:
↑1と2と3を指定したいのです。
0870デフォルトの名無しさん
2007/01/15(月) 12:29:28case 1:
case 2:
case 3:
文;
break;
case 4:
0871デフォルトの名無しさん
2007/01/15(月) 12:52:05ありがとうございます
0872デフォルトの名無しさん
2007/01/15(月) 15:33:44中身が入っていればtrueを返すような感じでやりたいのですが。
0873デフォルトの名無しさん
2007/01/15(月) 15:58:15System.IntPtr p;
// ...
bool b1 = p != System.IntPtr.Zero ? true : false;
bool b2 = System.Convert.ToBoolean(p.ToInt64());
0874デフォルトの名無しさん
2007/01/15(月) 16:35:43デリゲートならGCされることは十分にありうるので、
staticな場所に参照を確保しておく必要がある。
しかし、マネージドコードで安全にサブクラス化を行うために
NativeWindowクラスが用意されてるから、
十分な知識がないのであればこれを使うといい。
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.nativewindow.aspx
0875デフォルトの名無しさん
2007/01/15(月) 16:37:24ありがとうございます。
b1とb2には何が入るんでしょう?
b2にbool型のpの内容が入るんですか?
0876デフォルトの名無しさん
2007/01/15(月) 16:44:13普通に
bool b1 = p != System.IntPtr.Zero;
でいいんじゃね?
0877デフォルトの名無しさん
2007/01/15(月) 16:45:24b1もb2もお前さんの期待しているもの(>872)が入る
0878デフォルトの名無しさん
2007/01/15(月) 17:08:240879デフォルトの名無しさん
2007/01/15(月) 17:18:19何この記述。簡略系って奴か?
すごいねびっくり
b1の値は、pの値の変化に動的に変化するの?
それとも、この代入式を入れて更新しないとだめなの?
0880デフォルトの名無しさん
2007/01/15(月) 17:21:21常識だ
もう少し勉強してから出直してこい
0881デフォルトの名無しさん
2007/01/15(月) 17:31:05の削除を行わなくて、ファイル名を列挙したいので、下の方のwhileの中のDeleteUrlCacheEntryの行を
先ほど教えていただいたreturnValue = b1;に変更したのですが、無限ループに入ってしまいました。
やっぱり削除を行っていないのでbreakに入らないのでしょうか?
消さない場合はどのようにwhileを抜けたら良いですか?
0883デフォルトの名無しさん
2007/01/15(月) 18:15:28ちょっと便利。
0884デフォルトの名無しさん
2007/01/15(月) 18:34:06詳しく
0885813
2007/01/15(月) 19:14:13ttp://www.office-matsunaga.biz/cs/description.php?id=17 を参考にしてリストボックスのに列挙してあるウィンドウ名がダブルクリックされたら
それをフォアグラウンドにセットしてキー送信というのを作っているのですが
private void Form1_Load(object sender, EventArgs e) {
updateTaskList();
timer2.Interval = 5000; //5秒毎にリストボックス更新
timer2.Enabled = true;
}
つづく
0886813
2007/01/15(月) 19:15:16System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcesses();
listBox1.BeginUpdate();
listBox1.Items.Clear();
EnumWindows(new EnumerateWindowsCallback(EnumerateWindows), 0);
listBox1.EndUpdate();
}
private void listBox1_DoubleClick(object sender, EventArgs e) {
Process process = (Process)((ListBox)sender).SelectedItem;
Hide();
if(process == null) {
Debug.WriteLine("processがnull");
} else {
SetForegroundWindow(process.MainWindowHandle);
keysousin();
}
Show();
}
private void timer2_Tick(object sender, EventArgs e) {
updateTaskList();
}
Process process = (Process)((ListBox)sender).SelectedItem;
この部分で
InvalidCastExeption例外が発生し、InvalidCastExeptionはハンドルされませんでした。
型 'System.String' のオブジェクトを型 'System.Diagnostics.Process' にキャストできません。
と出てきてしまいます。どうしたら例外を起こすことなく処理が実行できるか教えてください。
0887デフォルトの名無しさん
2007/01/15(月) 19:23:020888デフォルトの名無しさん
2007/01/15(月) 19:27:48http://pc10.2ch.net/test/read.cgi/tech/1168271508/
0889デフォルトの名無しさん
2007/01/15(月) 19:29:47文字列をプロセスにキャストできるほど万能じゃない
0890デフォルトの名無しさん
2007/01/15(月) 19:35:360891デフォルトの名無しさん
2007/01/15(月) 19:40:160892813
2007/01/15(月) 19:42:15みなさんありがとうございました。
0893813
2007/01/15(月) 19:49:06StringBuilder sb = new StringBuilder(0x1000);
String kaiwamozi = "会話";
if (IsWindowVisible(hWnd) != 0){// ウィンドウが可視の場合
if (GetWindowText(hWnd, sb, 0x1000) != 0){ // ウィンドウのキャプションを取得
String S1 = sb.ToString();
String S2 = "(" + hWnd.ToString() + ")";
if(Regex.IsMatch(S1, kaiwamozi)) {//これでメッセウィンドウだけ引っ張ってくる。
Console.WriteLine(S1); //ウィンドウのタイトル出力.
listBox1.Items.Add(S1);
}
}
}
// 列挙を継続する為に0以外を返す
return 1;
}
これがリストボックスにItems.Addしてる部分なんですが。
ウィンドウの名前に関連付けてプロセスを取る方法ってありますか?
0894デフォルトの名無しさん
2007/01/15(月) 19:55:21チャットとかのログを自動で収集したいのか?
そんあことして、何がしたい?ストーカーか?
0895デフォルトの名無しさん
2007/01/15(月) 19:56:39せっかくプロセスの一覧とってるんだから使えよ。
Process[] processes = System.Diagnostics.Process.GetProcesses();
foreach(Process p in processes) {
if(Regex.IsMatch(p.MainWindowTitle, kaiwamozi)) {
listBox1.Items.Add(p);
}
}
0896813
2007/01/15(月) 19:58:15Windows liveメッセって多人数で同じ窓で会話してる時
長時間誰も発言なしで放っておくと参加者が削除されてしまうので
自動で一定時間ごとにメッセージを送信するプログラムを作ってるのです。
0897デフォルトの名無しさん
2007/01/15(月) 20:02:46何故プロセス取ってるの?
プロセスとってそこからどうするつもり?
0898デフォルトの名無しさん
2007/01/15(月) 20:03:480899813
2007/01/15(月) 20:07:51ListBoxにウィンドウ開いてる分だけ表示して任意の窓をダブルクリックしたら
そのプロセスに対して自動キー送信を一定時間ごとに実行したいということです。
>>895
それですと、メッセウィンドウを複数開いていても1つしかとってきてくれないのです。
name1 - 会話
name2 - 会話
と開いていた時に一番手前側のやつしかとってこない。
0900デフォルトの名無しさん
2007/01/15(月) 20:09:15ウィンドウハンドルだけで十分じゃないか
0901デフォルトの名無しさん
2007/01/15(月) 20:09:540902デフォルトの名無しさん
2007/01/15(月) 20:12:580903デフォルトの名無しさん
2007/01/15(月) 20:13:400904デフォルトの名無しさん
2007/01/15(月) 20:15:15出来ないと判ってから、「その手段で」解決する方法を
質問してくるから問題だ…
0905813
2007/01/15(月) 20:16:03リストボックスに会話開いてる分だけウィンドウのタイトルを列挙し
それをダブルクリックしてフォアグラウンドにしてSendKeys.send()を
同時にしたいので
メインウィンドウだけ取ってくる方法じゃ不可能な気がするのですが。
0906デフォルトの名無しさん
2007/01/15(月) 20:17:35手前でEnumWindowsしてるんだからハンドル全部覚えとけばいいだろうが
0907デフォルトの名無しさん
2007/01/15(月) 20:18:050908デフォルトの名無しさん
2007/01/15(月) 20:18:10プログラムじゃなくて、
別の方法考えたほうがいいんじゃないか?
0909デフォルトの名無しさん
2007/01/15(月) 20:21:280910813
2007/01/15(月) 20:27:33ごめんなさい。覚えておくというのは
StringBuilderで変数宣言したものに対して
数分だけforなどでまわして配列に格納しておいてそれを使うということでしょうか?
>>908
よく言われますし自分でもそう思います。
>>909
そういうわけではありません。
0911デフォルトの名無しさん
2007/01/15(月) 20:29:020912デフォルトの名無しさん
2007/01/15(月) 20:30:05sendkeyならアクティブにせにゃならんけど
メッセウィンドウ内のテキストボックスなどのハンドルわかってるんなら
SETTEXTなんかで文字列送ればアクティブにしなくていいよ
SendKeysだとアクティブにしなければならないが
アクティブって状況に応じて変化するから、失敗する場合あるしね
EnumChildWindowかなんかで、テキストボックスなどのハンドルと
そのフォームのキャプションを関連付けてリストに保存しておけば
もっと簡単にできるぞ
0913デフォルトの名無しさん
2007/01/15(月) 20:30:390914813
2007/01/15(月) 20:31:53ごめんなさい。どうしてもやりたいのです。。
>>912
貴重な意見ありがとうございます!
SETTEXTというのがあるのですね。早速調べてみます。
0915デフォルトの名無しさん
2007/01/15(月) 20:35:28windows メッセのスレで質問したほうがいいよ…
自動で切断されないようにするにはどうしたらいいのか。
0916デフォルトの名無しさん
2007/01/15(月) 20:36:390917813
2007/01/15(月) 20:37:36settextってただのあのせっとてきすとですね;;
EnumChildWindowというので特定のWindowのテキストボックスのハンドルを取れるのですね。
ありがとうございます!
>>915
なるほど・・
0918915
2007/01/15(月) 20:41:00あと自動退席のチェックボックスがありそうな感じだった。
0919デフォルトの名無しさん
2007/01/15(月) 20:41:090920デフォルトの名無しさん
2007/01/15(月) 20:43:060921813
2007/01/15(月) 20:45:56そのウィンドウで長時間、誰からのメッセージの送信がなくても
保持されるという訳ではないですよね?だから作ってるのです。
あと個人的に退席中と表示するのがイヤなので・・・。
0922912
2007/01/15(月) 20:47:261.メッセウィドウのハンドルをすべて取得:EnumWindow
2.1のメッセウィンドウ内のテキストボックスなどのハンドルをすべて取得:EnumChildWindow、FindWindowExなど
3.リストボックスに、メッセウィンドウのタイトルと2のハンドルを格納
4.メッセージを2のハンドルに送る
class メッセWndItem
{
string hwnd="";//テキストボックスなどのハンドル
string Title="";//メセウィンドウのキャプション
}
List<メッセWndItem> lbメッセWndList=new List<メッセWndItem>();
const uint WM_SETTEXT = 0x000C;
string msg="自動ログ:ただいま離席中";
//メッセージを送る
SendMessage(lbメッセWndList[lbメッセWndList.SelectItem.Index].hWnd, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalAnsi(msg));
0923デフォルトの名無しさん
2007/01/15(月) 20:47:480924813
2007/01/15(月) 20:54:28ありがとうございます。がんばります。
そんな方法があるのですか・・・。調べながらちょっとやってみます!
>>923
恐らく誰かが(自分も含む)退席中になってようがなかろうが、
自動で参加者が削除されるのだと思います。
そして発言なしで参加者が自動的に削除されるまでの時間は4分という情報もあります。
0925912
2007/01/15(月) 20:54:53ListBox lb=new ListBox();
//メッセージを送る
SendMessage(lbメッセWndList[lb.SelectItem.Index].hWnd, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalAnsi(msg));
0926デフォルトの名無しさん
2007/01/15(月) 20:55:260927デフォルトの名無しさん
2007/01/15(月) 21:35:120928デフォルトの名無しさん
2007/01/15(月) 23:16:201024×768 みたいな解像度で設定されている値です。
0929デフォルトの名無しさん
2007/01/15(月) 23:17:490930928
2007/01/15(月) 23:27:242chの人は親切だって話は本当なんですね。
0931デフォルトの名無しさん
2007/01/15(月) 23:59:04format c:してcね
0932デフォルトの名無しさん
2007/01/16(火) 00:05:340933デフォルトの名無しさん
2007/01/16(火) 02:16:33AutoHotKey使えよ
0934デフォルトの名無しさん
2007/01/16(火) 04:00:03Action って無いの?
右クリックメニューの中のメニューアイテムと、
メニューバーの中のメニューアイテム、いちいち Enabled とかの
同期を取るように書くの、めんどくさいよ・・・。
0935デフォルトの名無しさん
2007/01/16(火) 04:19:16MenuItem.Selected=ContextMenuItem.Selected;
0936デフォルトの名無しさん
2007/01/16(火) 07:31:23string B ="hoge";
int C = A.IndexOf(B);
のように、文字列を検索するコードを書いたのですが、
'System.NullReferenceException' のハンドルされていない例外が ConsoleApplication.exe で発生しました。
と表示されます。どうすればエラーは消えますか?
0937デフォルトの名無しさん
2007/01/16(火) 07:33:390938デフォルトの名無しさん
2007/01/16(火) 08:04:160939デフォルトの名無しさん
2007/01/16(火) 08:06:27って出てます。
ループの回数も結構多いので、実行して終了したあと少し時間を置いてエラーが出ます。
0940デフォルトの名無しさん
2007/01/16(火) 08:09:180941デフォルトの名無しさん
2007/01/16(火) 08:16:07ありがとうございました。
0942813
2007/01/16(火) 08:26:59SendMessageメソッドの第一引数
lbメッセWndList[lb.SelectItem.Index].hWnd をどのように書けばいいか分かりません。
教えてくださいm( )m
とりあえず適当にテキストボックス作って
SendMessage(this.textBox1.Handle, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalAnsi(msg));
とし、SendMessage送ることだけはできるようになりました。
0943デフォルトの名無しさん
2007/01/16(火) 10:44:33あと、そのコードリークしてるよ?
StringToHGlobal***はちゃんとIntPtrで受けて
SendMessageのあとにFreeHGlobalしろ
0944デフォルトの名無しさん
2007/01/16(火) 14:14:16--- Listのサブクラス
public class HogeList : List<Foo>
{
private int id = 0;
public int ID
{
get { return this.id; }
set { this.id = value; }
}
}
--- 出力結果(かなり省略版)
<?xml>
<Hoge>
<Foo>...</Foo>
<Foo>...</Foo>
</Hoge>
</xml>
0945デフォルトの名無しさん
2007/01/16(火) 14:26:42こんな感じ
class EventTest {
public event VoidDelegate Left;
public event VoidDelegate Right;
void ExecEvent(VoidDelegate deleg) { deleg(); }
public void DoEvent() {
ExecEvent(Left);
ExecEvent(Right);
}
}
static void OnRight() {
Console.WriteLine("Right!");
}
static void OnRight2() {
Console.WriteLine("Right2!");
}
static void OnLeft() {
Console.WriteLine("Left!");
}
static void Main() {
EventTest et = new EventTest();
et.Left += OnLeft;
et.Right += OnRight;
et.Right += OnRight2;
et.DoEvent();
0946デフォルトの名無しさん
2007/01/16(火) 15:31:51の中にあるファイルはSystem.IO.File.CopyやSystem.IO.File.Moveで移動させることはできないんでしょうか?
ファイル名の指定が間違ってるのかな・・・
また、他にもファイル移動の方法がありましたらご教授ください。
0947デフォルトの名無しさん
2007/01/16(火) 16:20:52コマンドプロンプトからTemporary Internet Filesに移動してdirしてみたら
0948デフォルトの名無しさん
2007/01/16(火) 16:40:12[DllImport("user32.dll", CharSet=CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, Int32 wParam, String lParam);
と定義すればわざわざ自前でマーシャラつかわなくてすむよ。
0949デフォルトの名無しさん
2007/01/16(火) 17:06:37イベントアクセサ(add;remove;)を使ってLeftイベントを定義してみたら
「イベント 'EventTest.Left' は += または -= の左側にのみ表示されます。」とエラーになった。
当たり前といえば当たり前だけどなんか気持ち悪い
0950デフォルトの名無しさん
2007/01/16(火) 17:23:51あぁこのフォルダ厄介だぁ。移動がうまいこといきません
0951デフォルトの名無しさん
2007/01/16(火) 20:25:290952デフォルトの名無しさん
2007/01/16(火) 20:39:290953デフォルトの名無しさん
2007/01/16(火) 21:12:54おまえは何を言っているのだ
0954デフォルトの名無しさん
2007/01/16(火) 22:04:08コレクションとかIEnumerableを継承しているとプロパティは出力されない
XmlSerializeのトピックに例外事項として書かれているはず。
0955デフォルトの名無しさん
2007/01/16(火) 22:09:32配列で返すなら、List<T>で返して欲しいな。とか思うことありません?
自分でAPI定義してても、IEnumerable<T>で返すか、IList<T>, T[], ICollection,List<T>
どれで返すのか迷ったりしてましたがList<T>で返すと特に嫌がられることってありますかね?
(相手は.Net2.0以降を仮定してもよいとして)
0956デフォルトの名無しさん
2007/01/16(火) 22:38:02クラスで返す必要はないだろ。
0957デフォルトの名無しさん
2007/01/16(火) 22:40:310958デフォルトの名無しさん
2007/01/16(火) 22:47:24List<T>ならList<T>で返して欲しいけどなあ。
IEnumerable<T>で返されたらIList<T>やその他のインターフェースのメソッドが一切使えなくなるわけだし。
でも>>957の言うことももっともかも。
0959デフォルトの名無しさん
2007/01/16(火) 23:16:31シリアライズについて詳しくないけど
プロパティって、外部に見せるためのラッパーみたいなものでしょ(表現おかしい?)
で、内部的に保持するidがきちんとxmlとして出力されてるなら
プロパティも仮想的に保持されるし、なにも問題ないんじゃないの?
0960デフォルトの名無しさん
2007/01/16(火) 23:26:29お前は何を言っとるんだ
0961デフォルトの名無しさん
2007/01/16(火) 23:27:23無駄なことで消費が早かった。
0962デフォルトの名無しさん
2007/01/16(火) 23:40:19>(表現おかしい?)
なぁ・・・表現だけなのか?
0963デフォルトの名無しさん
2007/01/16(火) 23:44:03>プロパティって、外部に見せるためのラッパーみたいなものでしょ
フィールドのように使えるが、実際はメソッド。
メソッドをシリアライズするのか? ということ。
0964デフォルトの名無しさん
2007/01/16(火) 23:57:570965デフォルトの名無しさん
2007/01/17(水) 00:02:37文字読めるようになってから書け
0966デフォルトの名無しさん
2007/01/17(水) 11:08:200967デフォルトの名無しさん
2007/01/17(水) 13:18:01XMLシリアライズは、いわゆるシリアライズのイメージと違う部分が多い。
プロパティのシリアライズなんてそんな感じ。
0968デフォルトの名無しさん
2007/01/17(水) 14:58:260969デフォルトの名無しさん
2007/01/17(水) 21:02:00Setterさえ制御できれば・・・
0970デフォルトの名無しさん
2007/01/18(木) 10:21:470971デフォルトの名無しさん
2007/01/18(木) 13:44:15やりたきゃIXmlSerializablでも実装すれば?
0972デフォルトの名無しさん
2007/01/18(木) 14:11:500973デフォルトの名無しさん
2007/01/18(木) 15:17:52意味通じてねーよ
0974デフォルトの名無しさん
2007/01/18(木) 15:24:53いいから内部状態を再現できないシリアライズに何の意味があるのかとっととかけボケ。
0975デフォルトの名無しさん
2007/01/18(木) 15:34:180976デフォルトの名無しさん
2007/01/18(木) 15:36:37Form1、Form2、Form3 と 3 つのフォームを作り、Form1 と Form2 には button1 を
置きます。また、Form3.ShowInTaskbar = false とします。
Form1 の button1_Click() を以下のようにします。
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog(this);
f2.Dispose();
this.Show();
}
Form2 では、Form2_Shown() と button1_Click() を以下のように書きます。
private void Form2_Shown(object sender, EventArgs e)
{
this.Owner.Hide();
}
private void button1_Click(object sender, EventArgs e)
{
Form3 f3 = new Form3();
f3.ShowDialog(this);
f3.Dispose();
}
0977976
2007/01/18(木) 15:37:51なって Form2 が出ます。タスクバーには Form2 のアイコンだけが見えています。
次に Form2 のボタンをクリックすると Form2 は見えたままで Form3 がモーダル
ダイアログとして表示されます。タスクバーには Form2 のアイコンだけ。ここまでは
希望どおりの動作です。
さて、ここでタスクバーの他のアイコンをクリックしてから Form2 のアイコンを
クリックすると、Form3 ではなく Form2 がアクティブになってしまいます。この
状態で [Enter] キーを叩くと Form2 のボタンが押され、Form3 がもう 1 枚開いて
しまいます。
タスクバーの Form2 アイコンをクリックしたら Form3 がアクティブになってほしい
ものですが、いいテはないものでしょうか。それとも私がヘンなコーディングを
している? なお、Form1 を非表示にしなくても同じ動作をするようです。
助けてエロい人。
0978デフォルトの名無しさん
2007/01/18(木) 15:50:00かつどうしてもやりたかったらインターフェイス実装しろってんだろーがよ
全部無視して意味ねー意味ねーうざいんだよ
0979デフォルトの名無しさん
2007/01/18(木) 15:59:15private void Form3_Load(object sender, EventArgs e)
{
this.Owner.Activated += new EventHandler(Owner_Activated);
}
private void Owner_Activated(object sender, EventArgs e)
{
this.Focus();
}
Form3にかけ
0980976
2007/01/18(木) 16:15:32うまくいきました。他フォームのイベントハンドラを自フォームに記述するという
発想は出て来ませんでした。
これで心置きなく納品できます。どうもありがとうございました。
0981デフォルトの名無しさん
2007/01/18(木) 16:22:410982デフォルトの名無しさん
2007/01/18(木) 17:15:08読める形での設定情報の保存とか
パブリックなフィールドやプロパティを
シリアライズ・デシリアライズする場面ならなんでも。
状態を完全再現したけりゃバイナリシリアライズすりゃいい
XMLシリアライズはそういう目的じゃないってだけだろ
0983デフォルトの名無しさん
2007/01/18(木) 17:18:16いつそんな質問があったんだよ。
お前が一人でとにかく使えんてわめいてるだけ。
0984デフォルトの名無しさん
2007/01/18(木) 17:21:11このスレいつから初心者相手にするようになったの?
0985デフォルトの名無しさん
2007/01/18(木) 17:53:09( ゚Д゚)<氏ね!能無し。
0986デフォルトの名無しさん
2007/01/18(木) 17:59:20C♯, C#相談室 Part37
http://pc10.2ch.net/test/read.cgi/tech/1169110545/
0987デフォルトの名無しさん
2007/01/18(木) 18:15:050988デフォルトの名無しさん
2007/01/18(木) 18:16:140989デフォルトの名無しさん
2007/01/18(木) 18:16:550990デフォルトの名無しさん
2007/01/18(木) 22:06:400991デフォルトの名無しさん
2007/01/19(金) 06:57:510992デフォルトの名無しさん
2007/01/19(金) 10:26:050993デフォルトの名無しさん
2007/01/19(金) 10:37:210994デフォルトの名無しさん
2007/01/19(金) 10:38:250995デフォルトの名無しさん
2007/01/19(金) 10:42:240996813
2007/01/19(金) 11:10:53Dictionary<string,IntPtr>
SendMessage(this.textBox1.Handle, WM_SETTEXT, 0, (IntPtr)Marshal.StringToHGlobalAnsi(msg));
Marshal.FreeHGlobal(msg);
こういうことですか?
>>948
SendMessage(this.textBox1.Handle, WM_SETTEXT, 0,msg);
という風に書くことが出来るようになるということでしょうか??
0997デフォルトの名無しさん
2007/01/19(金) 12:20:040998デフォルトの名無しさん
2007/01/19(金) 13:08:14地震は来るものじゃなくて起こるもの。
「その自信はいったいどこから来るの?」とは用法が若干異なる。
0999デフォルトの名無しさん
2007/01/19(金) 15:30:371000デフォルトの名無しさん
2007/01/19(金) 15:31:0410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。