1 :
デフォルトの名無しさん :
2006/05/23(火) 00:02:04
2 :
デフォルトの名無しさん :2006/05/23(火) 00:22:50
C#ではないですが。 WindowsXPのユーザーアカウントごとに同じプログラムを起動し、 それらとデータ交換するにはどうしたらいいですか?
いきなりスレ違いかよw しかも自分で宣言してるしw
5 :
3 :2006/05/23(火) 03:19:34
>>4 でもC#のコードが欲しいんですよ。
後出しですみませんが。
>C#ではないですが ↑↓ >でもC#のコードが欲しいんですよ。 >WindowsXPのユーザーアカウントごとに同じプログラムを起動し、 >それらとデータ交換するにはどうしたらいいですか? 意味不明瞭
7 :
3 :2006/05/23(火) 12:16:29
>>6 マーケットスピードっていう株取引のソフトがあるんですよ。
それを複数起動するためにアカウントをいくつか作って
ユーザー毎に起動するんですが、
それぞれから抜いたデータを統合したいなと。
銘柄数300って制限があるのを、複数起動で回避したくて。
マケスピとセットのRSSはユーザー毎に起動して動作するのは分かってるんですが、
DDEでの通信でどのユーザーアカウントで動かしてるやつと通信するのか
選択する方法がないと、複数起動の意味がなくて。
300件接続してから次のRSS起動するとその後の接続が新しいRSSに行くのかなとか思わなくもないですが。
8 :
990 :2006/05/23(火) 13:03:34
前スレの990です。
やりたいことは下記でできました!ありがとう!
//httpサーバに接続
System.Net.WebClient web =new System.Net.WebClient();
System.IO.Stream stream=web.OpenRead(
http://www.yahoo.co.jp );
//読み込み
System.IO.StreamReader sr= new System.IO.StreamReader(stream);
textBox1.Text=sr.ReadToEnd();
参考にしたのはVC#.Net逆引き大全500の極意です
自己解決スマソ
ありがとうございました。
MemoryStream の内容を BinaryReader を使って他のストリームにダイレクトに書き込むことは可能でしょうか? それともどうしても byte 配列に一度コピーする必要があるのでしょうか?
2ちゃんの特定のスレッドのデータを取得するプログラムを作ろうと思い
2ちゃんの仕様が書いてあるこちらのサイトを参考にさせてもらいました。
ttp://age.s22.xrea.com/talk2ch/ たとえばhttp要求ヘッダ例として
GET /newsplus/subject.txt HTTP/1.0
Accept-Encoding: gzip
Host: news2.2ch.net
User-Agent: Monazilla/1.00
Connection: close
と書かれています。
次にC#で2ちゃんと対話するにはどうすればいいのか調べるためHttpWebRequestクラスの
使い方を解説している以下のサイトを参考にしました。
ttp://dobon.net/vb/dotnet/internet/webrequest.html ところがこのサイトには上記のhttp要求ヘッダ例のAccept-EncodingやUser-Agent: Monazilla/1.00、
Connection: closeなどを指定している箇所は特に見あたりません。怪訝に思いつつも
実際に2ちゃんのとあるサイトのURLを上記のサンプルプログラムに入れてみたところ
なぜか問題なくスレの内容を取得することができました。
Accept-EncodingやUser-Agent: Monazilla/1.00、Connection: closeといったものは
特に指定しなくても2ちゃんのデータを取得することができるのでしょうか?
C#となんも関係ないし
12 :
10 :2006/05/24(水) 03:00:49
C#で実装したいと思っていまして・・・
ま た そ れ か
>>10 HttpWebRequestじゃなくてもっと低い層のクラスを使うべきでは。
TcpClientとかだったか。
>>10 WebClient を使えばいいんじゃない?
WebClient.Headers.Add でヘッダも指定できるし。
16 :
15 :2006/05/24(水) 16:26:41
あと、Connection: close も不要だった。
17 :
デフォルトの名無しさん :2006/05/24(水) 18:46:46
コマンドライン引数の受け渡しについて教えてください。 static void Main(string[] args) { string flg; flg = args[0]; } 上の用に書くと、配列の境界外を参照しています。というような例外が発生してしまいます。 よくあるサンプルだと foreach (string flg in args) { 処理; } のようになっていますが、私は1番目の要素にしか興味がないので気持ち悪いです。 申し訳ありませんが、何故このようになるのか教えてください。
ヒント:args.Length
19 :
10 :2006/05/24(水) 19:51:25
20 :
15 :2006/05/24(水) 20:36:39
21 :
15 :2006/05/24(水) 20:43:04
22 :
デフォルトの名無しさん :2006/05/24(水) 20:56:24
System.Windows.Forms.Keys を using Microsoft.DirectX.DirectInput.Key に変換するような関数はないですか? 出なければうまい方法とかでも良いのですが。
23 :
10 :2006/05/24(水) 21:22:13
>>20-21 2ちゃんぐらいでしたらどっちを使っても問題は無いけど
もっと細かいヘッダー情報を指定しようとしたらWebRequest
の方がいいということですね。
というわけでしたWebClientの方で実装してみようと思います。
ありがとうございます。
プロパティのsetterを使って状態を変更しようとしても、 場合によっては変更させないようにするような設計ってアリですか?
setだけとかgetだけとか普通にあるよ
26 :
24 :2006/05/24(水) 23:13:01
説明不足でした。 object X { set { if (this.State) this.X = value; else return; } } こういうようなことです
VC#2003のCOMの相互参照を登録するって、COM DLL相当ですか?ActiveX DLL相当ですか? VBAからイベントハンドラが設定できず困ってます。
>>26 それじゃ駄目なのか?
それかせいぜいInvalidOerationExceptionを投げるくらいしかないと思うが。
プログラムでかけないようにしたいとか思ってるならそfれは無茶な話だ。
>>10 とりあえずHTTPを勉強したほうがいいんではないかね?
そういえばWebClientの方って圧縮対応してたっけ?
30 :
24 :2006/05/24(水) 23:58:09
わかりました。26でいきます。 X = (新しい値);とやってるのに値が変わらないのは 気持ち悪い気がしたのですが、気にしないほうがよさそうですね。
31 :
10 :2006/05/24(水) 23:59:30
>>29 > とりあえずHTTPを勉強したほうがいいんではないかね?
確かにhttpよくわかってないです(´・ω・`)
勉強するのにお勧めのサイトご存じないですか?
日本語でおk
>>29 GzipStream で、ダウンロードしたストリームを圧縮解除するコードは
自力で書いたことがあるけどね。
DeflateStrem では、うまくいかなかったね。
>>34 まちがえた。
(誤)DeflateStream -> (正)DeflateStream
?
37 :
デフォルトの名無しさん :2006/05/25(木) 18:06:02
プログラムのバージョンってどうやって変えるんですか? (.exeを右クリしてプロパティのバージョン情報ってやつ)
C#を使う上でExpressとStandardってどう違うの?
42 :
37 :2006/05/25(木) 22:33:39
メニューにアイコンを表示させようと思っています。 調べた限りでは、DrawItem イベントをオーバーライドし、さらに MeasureItem をオーバーライドして サイズを指定しなければならないようなのですが、 MeasureItem でデフォルトのサイズを指定するにはどうすればよいのでしょうか。 あるいはもっと手軽にアイコンを表示する方法はないのでしょうか。
45 :
43 :2006/05/26(金) 15:09:47
>>44 どうもありがとうございます。そんな物があるとは知りませんでした・・・
わりと大規模な変更が必要になりそうですが、その価値はありそうですね
テキストボックスにドロップされたファイルが DataFormats.Format format = DataFormats.GetFormat(DataFormats.Text); と一致するか調べたいのですが、何か方法はあるのでしょうか?
47 :
43 :2006/05/26(金) 15:42:26
再びすみません。 ContextMenu と MenuItem を共通のロジックで処理している部分が多数あるのですが、 ContextMenuStrip と ToolStripMenuItem では同じようにはできないのでしょうか。 前者はともに Menu から派生しているのでよかったんですが、後者は継承関係が独立しているようなので・・・
48 :
43 :2006/05/26(金) 17:04:18
ContextMenuStrip.Items と ToolStripMenuItem.DropDownItems に対して共通の処理を施すことで対処できそうです。 ありがとうございました。
自前のCollectionを作ろうと思うのですが、 AddRangeメソッドを宣言しているインターフェイスってのは、何処にあるのでしょう? IList,ICollectionにあるのかと思ったのですが。 あともうひとつ、AddRangeを調べてて思ったのですが、 何故(params T[] items)が引数のAddRangeを用意していないのでしょう? そのほうが便利だと思うのです。
>>46 GetDataPresent
>>49 ないみたいね
各クラスでAdd呼んでるんじゃない?
Collectionには必ずしもAddRangeが必要、という訳ではないのですね。ありがとうございます
>>50 。
にしても可変長引数のAddRangeが無いの マンドクセ('A`)
string html = sr.ReadToEnd(); を実行したところ、(srはSystem.IO.StreamReaderクラス) System.ArgumentOutOfRangeException: 負の値ではない数値が必要です。 パラメータ名 : byteCount というエラーが返されてしまったんですがどういう状況にこういうことが起きるのでしょうか?
sr のインスタンスはどうやって作ったんだ
プロパティとGet...()はどう使い分ければいい? .NET FrameworkではインターフェイスメンバにGet...()が多い気がするけど
軽い処理とおもい処理とか プロパティのgetは常に同じ値を返すけれども メソッドのGetは同じとは限らないとか
56 :
52 :2006/05/28(日) 12:48:58
>>53 srのインスタンスは
System.Net.HttpWebRequest webreq = (System.Net.HttpWebRequest) System.Net.WebRequest.Create("
http://pc8.3ch.net/ ");
System.Net.HttpWebResponse webres = (System.Net.HttpWebResponse) webreq.GetResponse();
System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift-jis");
System.IO.Stream st = webres.GetResponseStream();
System.IO.StreamReader sr = new System.IO.StreamReader(st, enc);
という感じでつくりました。
> HttpWebRequest、HttpWebResponseクラスを使って応答を受信した時、
> そのステータスコード("200 OK"や"404 Not Found"など)はStatusCode
> プロパティで(またその説明はStatusDescriptionプロパティで)分かります。
ttp://dobon.net/vb/dotnet/internet/httpstatuscode.html とのことですが、StatusCodeやStatusDescriptionを調べても202や404といった数字の部分は
記述されていません。たとえば404 not foundが返されてきたときのStatusCodeはNot Found、
StatusDescriptionはNot Found、どちらにも"404"という数字は現れません。
この数字を取得したい場合はどうすればいいでしょうか?
>>57 StatusCode を int にキャスト
>>56 ネットワークのストリームに対して StreamReader はお勧めしない
>>46 ファイルがドロップされた時は DataFormats.FileDrop になるわけだが。
意味が分からん。
>>27 MSDN の「マネージ イベントとアンマネージ イベント」を調べてみ
>>59 =56=52 か?
byte[] と MemoryStream でまず自前でネットワークから読みとる。
で、その後 StreamReader なりなんなりの処理をする。
>>61 いや、全くの別人だけど気になったもんで。面倒くさそうだなぁ。
>61 StreamReaderでいきなり読み取るのがだめな理由でなんでしょう?
>>63 重いところだと途中で読みとりを終了する事がある。と言うかあった。
ストリームから読み出すアルゴリズムが、順調でないストリームからの読み出しを考慮していない印象。
.NET 1.0 の話なので改善されてるかも知れないが、信用しないようにしてる。
日本語でおk
66 :
57 :2006/05/29(月) 14:18:32
>>58 > StatusCode を int にキャスト
どうもです♪
なんでC#のSplitメソッドって区切り文字にchar型しか許容しないんだろうね? String型も許可してもっと柔軟にしてくれればいいのに。 なにか設計思想でもあるんだろうか?
2.0ならstring配列も使えるが
つか .NET Framework の問題と C# の問題をごっちゃにすんな
>>67 どうしてもやりたいんだったら Regex.Split を使うという手もあるね。
>>68 Visual Studio 2003(爆安学生版)って.NET1.1だっけ?
そだよ
>>71 期間限定で2005(.NET2.0)も入手できた。
(チッ、2005にしておくべきだった
IDisposableを実装したクラスから派生したクラスにIDisposableを実装させたいのですが、 Dispose()はどう定義すればよいのでしょうか? override指定されていないからオーバーライドはできないようですし、安易にnewしたらまずいですよね?
>override指定されていないからオーバーライドはできないようですし ? protectedならオーバーライドできるでしょ
77 :
75 :2006/05/31(水) 03:13:45
>>76 protected override void Dispose() { ... } という風にオーバーライドするということですか?
それでもできません。それにprotectedにしてしまうと外から呼べませんよね。
予想: virtual
79 :
75 :2006/05/31(水) 17:45:42
>>78 virtualを指定するとコンパイラの警告が出て、newを指定したのと同じことになるようです。
ん〜とだな。 基底クラスをいじれる?
81 :
75 :2006/05/31(水) 18:46:00
じゃ、基底クラス書いた奴を罵りながら諦めろ。 一応、再実装させた Dispose() で base.Dispose() を呼び出せば、 基底クラス型から Dispose() を呼び出さない限り(IDispose 型から呼ぶか派生クラス型から呼び出す限り)なんとかなるが。 その基底クラスに protected virtual(or override) の Dispose(bool) もないんだよな。 あと、MSDN の「アンマネージ リソースをクリーンアップするための Finalize および Dispose の実装」を読んで 正しい IDisposable の実装のお勉強を。 .NET 2.0 なら、アンマネージドリソースについて SafeHandle への分割の検討を。
83 :
75 :2006/05/31(水) 19:48:01
>>82 どうもありがとうございます。
大変参考になりました。
2003でコンパイルすると.NET1.1、 2005でコンパイルすると.NET2.0 ところで実行速度に違いは出る?
出てもおかしくないな
ボタンクリックイベントに関して質問させて下さい。 現在、10×10のマインスイーパーを作ってみようとしているのですが、 このボタンイベントを配列やswitch文でまとめて扱えるような方法はあるのでしょうか? 現在は、 private void MyIvent(object sender,System.EventArgs e) { if(button1.Clicked) { 〜〜〜〜〜; } else if(〜 と、全て定義している感じです。 出来れば、 for(n=0;n<100;n++) { if(bt[n].Clicked) { 〜〜〜〜〜〜; break; } } のように表記できれば理想的なのですが……
Button の Tag にでも識別子突っ込んでたらいいんじゃない?
>>86 Buttonの初期化のときに配列かリストにつっこんどくか、
一意のIDを付与する( button.Tag = indexみたいに)
まさか1〜100まで全部手動で宣言・初期化してるの?
this.button1 = new Button();
....
this.button100 = new Button();
って?
Button[] buttons = new button[100];
for(int i =0;i<100;i++)
{
buttons[i] = new Button();
...
}
ってしてるよな?
つーかマインスイーパのブロックをボタンで実現するってのが
すでに設計ミスの気がするが
>>88 正解ですorz
そんなんで出来るんですね……ありがとうげざいました。
デザイナーで適当に作ってたので、その定義に全て合わせてたんです。
とりあえず、まずはfor文ので作ってみます。
>>90 名前を指定して実行→mmc→スナップインの追加
>>91 サンクス、でもパフォーマンスの使い方がちょっと複雑だなぁ(w
昔は2次配列を仮想VRAMとかいって使ってたなぁ。
94 :
デフォルトの名無しさん :2006/06/04(日) 18:56:07
VSC#EEを使っているのですが、stringとStringはどのような違いがあるのですか? public string name; public string age; stringをStringに書き換えても正常にビルドできたのですが、 stringはpublicと同じ青に、Stringはクラス名と同じ黄緑に着色されたので、疑問に思いました。
>>94 string はクラス名ではなくキーワードであって System.String の別名
String と書いた場合は通常のクラス名
>>95 なるほど!System.は省略できるからStringと書いてもいけたんですね。ありがとう!
青はキーワードで黄緑はクラスか、憶えておこう。
参照設定にSystem.Windows.FormsがあるのにusingディレクティブでSystem.Windows.Formsが使えない。 インテリセンスもSystem.の後にWindowsが出てこないよ。 別のプロジェクトでは問題なくいける。 Winアプリとクラスライブラリという点を除けば条件は同じはずなんだが。
一旦参照を削除して改めて追加するとか。
>>98 それもやってみたけどダメ。
ていうかごめんなさい、単にそのクラスをプロジェクトに追加していないだけだった……。
System.Windows以外の名前空間はインテリセンスに出てきてそこばっかり目がいってた。
変な質問なんですが C#のpublicなメソッドは、外部からの不正な操作に対して安全なのでしょうか? と申しますのは、例えばMDIのタブブラウザーでMDI親から子にUrlを渡す場合、 コンストラクタを使う、eventを使う等色々方法があると思いますが、 直接、子のSetUrlメソッドを呼び出して良いのか、それを悪い人に悪用されないだろうか、 ということです。 C++なら子をprivateなclassにし、 親をフレンドクラスにすれば、(実際はどうであれ)安全で安心できたのですが。
public を使っちゃなんねぇとなると何も書けなくなるが。
public はそういうふうに使うことを想定してるでしょ。 > 外部からの不正な操作に対して安全なのでしょうか? 意味不明。
えっと、OracleをODBCで使う処理を作っているのですが COLUMN_1 の型は NUMBER(9) で SELECT MAX(COLUMN_1) FROM TABLE_1 とすると、戻り値の型が double になるのですが これを Int32 にする方法ってあるのでしょうか? PostgreSQL、MySQL、Access MDB では Int32 になっているので できれば SQL 側で Int32 を返すようにしたいのです ご教示よろしくお願いします
104 :
103 :2006/06/07(水) 14:53:23
やっぱいいです Oracle ODBC はサポート外だっ( ゚∀゚)
<チラシの裏> 今は、ウェーブダッシュ問題について調査中 OracleClient を使うのがいけないのか? </チラシの裏>
<チラシの裏> Oracle の文字コードは AL16UTF16 SQL*Plus や Common SQL Environment では チルダは化けず やっぱり C# 側の問題だろうか・・・ </チラシの裏>
Extending Explorer with Band Objects using .NET and Windows Forms
http://www.codeproject.com/csharp/dotnetbandobjects.asp ↑
ここのBandObject使ってエクスプローラのツールバー作ってるんですが、
何かコントロールのAllowDropをtrueにしただけで
explorer.exeが終了しなくなるんですが、どうしてでしょう。
ドラッグ&ドロップ自体は動作してます。。
ほとんどサンプル通りで、とりあえず表示できるかどうかやってみただけなんですが
解決策を御存知の方いませんか?
>>107 > ほとんどサンプル通りで
「ほとんど」の外を説明してくれないことにはエスパー以外答えられない
「ほとんど」の外=panelを追加してAllowDrop=trueにしたこと。 です。
Dispose(bool) のオーバーライドか Disposed かで AllowDrop を false にするとかしたらどう? それともそもそもこの辺すら実行されない?
>>110 それもやってみたんですが駄目みたいです。
RevokeDragDropやCoUnInitializeとか
関係あるか分からないけどP/Invokeしてみても駄目でした……
>>111 とりあえずspyあたりでWM_CLOSEとかメッセージの流れを追ってみては?
変な動作でも解決策ぐらいは見つかりそうな希ガス
113 :
デフォルトの名無しさん :2006/06/11(日) 18:34:54
2つほど質問なんですが、 文字列を10進数数値に変換したいのですが、 int.Parse("123"); と言うのではなく、 string a = "abc"; といった、文字列を無理矢理10進数数値にするにはどうしたらいいでしょうか? また、メソッドなどで、引数が2個あるのに0個指定出来たりする物がありますが、 あれはどのようにしたら出来るのですか?
>>113 一つ目:何が言いたいのかよくわからない
二つ目:C#では引数の省略はできないはず
とりあえずabcを無理矢理10進数にしたときの期待される数値を教えてください 引数は省略されたときの暗黙値を設定することができます
>>113 逆に聞きたいのだが "abc" を数値に変換するとどんな値になるの?
任意のオブジェクトを int にしたいのなら GetHashCode ってのがあるが
public void Hoge(){
}
public void Hoge(int a){
}
って感じで複数書けばいいだけ
>>116 GetHashCodeにて目的が果たせました。
"abc"をintに変換したところ、536991770という数値が返ってきました。
メソッドに関しても、下記の通りに記述したところ、引数0個指定でも
メソッドが動くことを確認しました。
ありがとうございました。
>>114 ,115
説明不足すいませんでした。
でも、やりたいことは
>>116 に書いてあるようなことです。
ざわ… ざわ…
>>117 あんたが求めてるのはこれっしょ?
sscanf(str,"&x",&data);
0x2001D81Aには何の意味もないぞ。
GetHashCodeには意味あるでしょ
MFCのDLLみたいに exeに .NetFrameworkを内部に埋め込みTAI
デストラクタに終了処理を書いて スコープ抜けたら自動終了してたおうちゃくものの私に デストラクタみたいに自動に呼ばれる終了処理を教えて><
楽をしたい 楽をするために今苦労して効率化を・・・
そして二度と使うことのない特化型フレームワークが完成する。
TextBoxコントロールでコピペ(マウスとCtrl+Vの両方)されたら、 内容をチェックして数値のみコピペOKにしたいのですが、 MouseClickイベントが発生しないし、どのイベントでチェックすれば いいのでしょうか?
TextChanged でやれば?
構造体のコピーをとりたいんですが b = a; だとポインタをコピーしてしまうようで aを変更するとbも更新かかるみたいです
それは構造体じゃないな
HTML上のパラメタ付URLリンクをクリックする事で動作する
ノータッチデプロイメントアプリケーションを作成しています。
パラメタの渡し方について質問なのですが、
例えば
http://localhost/test.aspx?q=テスト みたいに
全角をパラメタとしてそのまま渡す事はできないのでしょうか?
デバッグモードでコマンドライン引数を指定し、
画面を起動するとまともに動くのですが、
HTML上からサーバのアプリを動かそうとすると
無反応になってしまいます。
どなたかご教示ください。宜しくお願い致します。
windows2000, VS.NET 2003 ver1.1.4322, IE6 使用です。
エンコーディングの問題の予感 だが解決方法は特に思いつかん
M$のマニュアルが読みにくい・・・なんとかしてorz オススメのリファレンスとかありますか?
Ctrl+Alt+J
ListBoxを動的に変更したいのですが、 1行に複数のデータ(表示用データと内部用データ)を持たせることはできませんか? DataSourceだと動的な変更がきかないみたいなので。
できる。
140 :
138 :2006/06/14(水) 09:33:20
できましたー Clear()じゃダメなんですねー
>135 すみません。もう少々詳しく教えていただけませんか。 URLエンコードデーコードの事でしょうか?
>>142 思ったときにはすでにッ! 行動は完了しているんだッ!
文字が全角か半角か見分ける関数ってありますか?
そもそも全角半角ってどこで区別しますか?
文字の幅?
全角文字の中にも半角と同じ幅の文字があるんだよね
ちなみに、やりたいことはテキストファイルの文字(unicode)を 一文字ずつ全角半角が調べたいです。
>>148 >>145 の問いにはどう答える?
何が全角で何が半角かはっきりさせないと答えようが無い。
文字の幅と言ってもフォントその他によって様々だが。
>>151 じゃあ、その時のシステム標準のフォントでのフォントの幅を調べる方法を教えてくれ!!!
ん?
システム標準と言われても、タイトルバーやらメニューやらでそれぞれ任意に指定できるが……。
テキストファイルを読み込んで表示するのに文字の幅が必要なんで タイトルバーやらメニューやらの文字の幅はいらないです。
文字コードで調べます、って言えよ
文字コードで、と言うと、ひと文字ずつ全てのコードをifで判定するんでしょうか?
┐(´〜`)┌
>>157 マジレスすると、Graphics.MeasureString
160 :
86 :2006/06/15(木) 09:52:12
一応、感謝も込めて報告です。 件の方法でも出来たのですが、一応こんな方法もあったということで。 デザイナーで作ったボタンに対して、 private void MyMethod(Object sender,System.EventArgs e) { Button btn = (Button) sender; 〜〜〜 } とすれば、押されたボタンを判別出来ることが分かりまして。 配列にする必要が無くなりました。 後はbtn.TabIndexなりで判別すればいいだけのことですし。 まぁ、手書きでやった方は、構造がよく分かったのでそれはそれでOKだったのですが、 デザイナーでやった方が簡単だったので……。
TabIndex・・・
ボタン自身に「僕はn番です」って言わせるのが普通だと思うが。。。
誰かがお手本を作ってやれよ
構造体の内容をバイナリファイルに書く方法教えて
BinaryFormatterを使う
166 :
デフォルトの名無しさん :2006/06/15(木) 18:25:24
GraphicsをDisposeしようすると例外が発生します。 「System.ArgumentException: 使用されたパラメータが有効ではありません。」 Disposeしなかったら動作するのですが、それだとお行儀が良くない気がします。 どうすればいいですか? protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); Graphics g = e.Graphics; g.DrawString(counter.ToString(), font, brush, 0, 0); g.Dispose(); }
そのGraphicsオブジェクトは自分で作ったものじゃないから Disposeしないでほっとけばいい
質問です。 ここから … … ここまで 上の文のここから〜ここまでの間を含めた文を選択コピーまたは削除するにはどうしたらいいでしょうか?
抽象的すぎるな
while( null != (str = reader.Readline()) if( str == ここから) bNop = true; if(!bNop){ writer.WriteLine( } if( str == ここまで) bNop = false; } 飽きた
C#で、プログラムから別のアプリケーション(.exe)を起動する方法を教えてください。
174 :
デフォルトの名無しさん :2006/06/16(金) 23:13:30
DataGridで列幅を指定したのですが,ヘッダーを非表示にしたら設定が反映されません。ヘッダーを出したら、空白と一番上の線が邪魔になります。 どうすればいいでしょうか? どなたか教えて下さい。
こんな事がやりたいんですが。 class SuperStrng { private string str = "abc"; } class A { static void main() { SuperString STR = new SuperString(); Console.WriteLine(STR); } } 出力 abc SuperStringをどう変更したら実現できますか?
と、ToString()のオーバーライド
ToString を override じゃないかな
181 :
デフォルトの名無しさん :2006/06/17(土) 17:06:28
ウインドウに何か描きたい時ってOnPaint(PaintEventArgs)呼ばないと無理?
省略しすぎました。これを実現するならどうなりますか? class SuperStrng { private string str = "abc"; } class A { static void main() { SuperString STR = new SuperString(); STR = "cde"; Console.WriteLine(STR); } } 出力 cde
Console.WriteLine(STR); ↓ Console.WriteLine("cde");
ワロス
Console.WriteLine("cde"); ↓ Console.WriteLine(str);
STR = とかする時点で new する意味がどっかに行くが 型変換のオーバーロード
using SuperString = System.String;
>>187 お前賢い
そのために SuperStrng って i が抜けてたのか
using SuperString = System.String; using HyperString = SuperString;
>>190 スレタイ800回声に出して読んでごらん
192 :
190 :2006/06/17(土) 18:46:32
ゴメン
194 :
190 :2006/06/17(土) 18:54:20
うちのBorland C++ Compilerではコンパイルできました
C#2.0でステータスバーにチェックボックスとボタンを追加したいんですけど、 ラベル、プログレスバー、ドロップダウンボタン、スプリットボタンしか追加できないのでしょうか?
いざとなれば ToolStripControlHost
ControlHost は便利なんだけどフォーカスがちょっとおかしい
自分で作った子ウィンドウを再作成するときに、たまに下のような例外が発生してしまいます。 'System.NullReferenceException' のハンドルされていない例外が TestChild.exe で発生しました。 追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。 該当箇所は一番下のShowDialog()なんですが、なにかまずい箇所などありますでしょうか? if( mChildWnd != null ) { mChildWnd.Close(); if( mChildWnd.IsDisposed == false ) { mChildWnd.Dispose(); } mChildWnd= null; } mChildWnd= newChildWnd(); mChildWnd.ShowDialog();
マルチスレッドじゃなかろうな
本来的には ShowDialog したならそれが閉じられるまで処理が返ってこないんだから、 Dispose は ShowDialog の後に記述するもんなんだが。
newChildWnd() はnew ChildWnd() だよな? newChildWnd() という一続きのつづりだったらその関数内がnullを返しているわけだが。
>>200 そうです!
エラーの場所しか見てなかったので書くの忘れてました。
よく分かりましたね。
そうするとスレッド間の同期が怪しいですかね。
ちょっと調べてみます
>>201 ShowDialog してから Disposeする流れにまっています
>202
new ChildWnd() です。
ソースをそのままコピペしたら空白が無くなったみたいです。
すいません。
204 :
デフォルトの名無しさん :2006/06/18(日) 18:31:07
簡単な画像ビューア作るのに、Exifのサムネイルを取り出したいと思って、 したのようなコードを書いたが、new Bitmap(stFilename)の時点で、メインの 画像までロードされてしまうから、遅くてしょうがないんです。 誰かExifのヘッダだけ取り出すような方法をご存じないでしょうか。 Bitmap bitmap = new Bitmap(stFilename); // サムネイルを取得 Image original; index = Array.IndexOf(pils, 0x501B); if (index >= 0) { // Exifサムネイルがあればそれを使用。 PropertyItem pi = bitmap.PropertyItems[index]; original = Bitmap.FromStream(new MemoryStream(pi.Value)); } else { // Exif サムネイルがなければそのままの画像を使用 original = Bitmap.FromFile(stFilename); } bitmap.Dispose();
頑張ってヘッダを解析する。
207 :
デフォルトの名無しさん :2006/06/21(水) 13:26:00
hage
クリップボードにある画像を、byte配列に変換して取得するにはどうすればいいんでしょう。 ImageConverter converter = new ImageConverter(); byte[] byteArray= converter.ConvertTo(Clipboard.GetImage(), typeof(byte[])); ↑これでいいかなぁと思ったのですが、MD5値を求めるとき期待した値にならないのです。
終了ボタンのnameプロパティをcloseButtonにしてはいけないと どこかで読んだのですが理由が思い出せません。 何故なのでしょうか?
>>208 どうbyte配列に変換したいのかが分からんことにはなんとも。
期待した値があるって事は期待したバイト配列が存在するんだよな? それはどんな形式なんだ?
>>209 んなーこたーない
Nameプロパティなんて好きな値で結構
つまりは画像ファイルか。 なら受け取った Image を元の画像形式で Save すれば良いだろうが……。 Jpeg みたいな非可逆圧縮ならどうにもならんだろうしそれ以外にしてもヘッダとか変更されてしまわないかな……?
無理無理
異なる型の要素を、一つのリストにする方法はありますか? int a; string s; の2つの要素を、一つのリストに入れたいのですが
ArrayList 使えばよかろ?
わかりました
Visual Studio Express Editionでコンパイルした実行ファイルから、 コンパイルしたパソコンの情報はどこまで引き出せるでしょうか たとえば、OSのシリアルナンバーやユーザー名などが埋め込まれることはありますか?
>>219 何故それが気になったのか過程を書いてくれないと答えようがない
デバッグ情報をnone以外にしてると、 ファイルにフルパスが入るんじゃなかったっけ? ユーザーディレクトリにおいとくとそこからユーザー名を知ることができたり まさかシリアル番号が分かったら問題だと思うけど
ワレのは割れなんじゃろぅ?
ソースとバッチファイルを配布して各自でコンパイルしてもらうとか
ワレザーかよ 答える義理はないな
ヤフオクで買った物だから割れではないです^^;
VL版か?
割れであろーがなかろーが、
>>220 の質問に答える気が無いならコッチも答える気は無い
理由なんてそんなに大事なことか?
>>228 本人乙
さて、割レ厨は無視して元の雰囲気に戻すよー
Expressで割れ決めつけとかアホすぎね???
現在右クリックから起動するプログラムを作ろうとしているのですが、右クリックした際、 文字を反転させて選択した部分をプログラムのテキストボックスに送るにはどうしたらいいでしょうか?
express って無料なんだがな 一人鼻息の荒いアホがいるな
Expressで割れ(笑)
>>231 もっと分かるように書いてくれ
何を右クリックするんだ?
サッパリワカラン
まあクリップボードつかうか
COPYDATASTRUCTをSendMessageするかしたらいいんじゃね
235 :
231 :2006/06/22(木) 20:40:14
>>234 テキストを
「 」→「■」
みたいに反転させて、そこから右クリック→メニューからプログラム起動
と言うことをしたいのですが、その際にプログラム内のテキストボックスに
反転選択した部分のテキストを送りたいのですが・・・
>COPYDATASTRUCTをSendMessageする
上について調べてみます。ありがとうございました。
翻訳完了 ブラウザから文字列を選択 ↓ その状態で右クリック ↓ 右クリックメニューから自作アプリ起動 ↓ 選択範囲を自作アプリに反映 これでいいか?
IEだとしたら MenuExtに登録したスクリプトから起動させて、 二重起動のときは既存プロセスにテキスト渡すのかな。 つーかスクリプトからアプリケーション起動ってセキュリティ上できたっけ?
238 :
231 :2006/06/22(木) 20:55:06
違います;;
239 :
231 :2006/06/22(木) 20:56:21
>>236 まさしくその通りです。
最近日本語が怪しくなってきた orz
240 :
デフォルトの名無しさん :2006/06/22(木) 23:14:31
2枚の画像を重ねた画像を作りたいのですがGetPixcel()とSetPixel()を使う以外の方法ってありませんか?
アルファ値を使って半透明で描画
242 :
240 :2006/06/22(木) 23:30:54
243 :
デフォルトの名無しさん :2006/06/23(金) 00:05:11
Expressが無料なのは当たり前 なぜOSの情報が入るのが気になるのか理由を書けってことでしょ 読解力なさ過ぎw
>>244 >>225 わざわざオクで買うってことは契約違反のVL版か割れ焼CDだろ
金払ってExpress版買ったというならそれはそれで可哀想な人だが
>>243 全ての COM オブジェクトに対して Marshal.ReleaseComObject を行う必要がある。
そうじゃないと解放がアプリの終了時まで遅延される可能性がある。
まあ面倒なんだこれが……。
C#の少し大きめのアプリケーションのソースがあるサイトを教えていただけませんか? 入門書だけだとどうも良く分からないのです(⊃д`)
お前らほんと読解力ねーな。ヤフオクで買ったのはOSの方だろうが。
ま、俺はワレ使ってようが使ってまいが、気にせんがな。
>>219 そのような情報は埋め込まれないから、安心して配布できる。
うそつくなよ かわいそうだろ
>>221 *.pdb にソースなどのフルパスが入ってるがEXEには入ってない。ただpdbごと配布してしまうとばれてしまう。
Release ビルドであっても pdb を作る設定にしていると exe の中に pdb へのパスが書いてあったよ β2のころの話だから今ではどうなってるか知らんけど
>>249 違法VL版or割れ版を持ってる(入手先はヤフオクやP2P)
↓
個人情報が入らないか心配
↓
まずは無料のExpress Editionで埋め込まれないか確認しよう
↓
じゃあ上位版でも埋め込まれないかついでに聞いちゃおう
↓
(゚Д゚)ウマー
>>251 今でも入っている。だから、プロジェクトのパスにユーザ名が入っていれば、それはわかる。
表だって知らないだけでAdobeはしょっちゅうチェックして警告出してるし MSも・・・
正規版Windows確認COMは情報送ってるわな 色々文句言われて次のアップデートからは送らないように変更されるとさ
ユーザ名は漏れても大丈夫なように付けとくもんだ オレはいつも User001〜 コンピュータ名は PC001〜 もしもの時に備えてそういうセキュリティ対策も大事だろ
むしろユーザ名とネットで使ってるハンドルが同じ
>>258 はガクガクブルブル震えながら
煽ることで
>>254 を否定して欲しくてしょうがないそうです
こうしてワレザーの苦悩は続くのであった
で、誰もスレ違いだとはつっこまないんだなw
ふーん、最近のexeって通信機能標準装備なんだ。
心配ならマン喫でビルドすりゃいいじゃn
expressで割れ(笑)
C#で、gzipを処理するライブラリはありますか Httpを使う小さなアプリを開発してるのですが、gzipエンコードを処理しなくてはならなくなったので
SharpZipLib .NET 2.0 なら System.IO.Compression.GZipStream
おお! こんな便利なものがあったんですね >> System.IO.Compression.GZipStream
C#というよりVC#2005Expressの使い方に関する質問です。 普通にプロジェクトを作ると、ソースファイルの入っているフォルダにbinとobjフォルダが作られますが、 それらを別の場所に設定することはできるんでしょうか? binフォルダの方は変更できたのですが、objフォルダの場所を変える方法がわかりません。 具体的には、projectというプロジェクトを作ると、標準だと project---project-+-bin +-obj というフォルダ構成になりますが、これを project-+-project +-bin +-obj という具合にしたいのです。
270 :
269 :2006/06/23(金) 23:42:44
ずれたorz 具体的には、標準で projectの下にproject、その下にbin、obj となるのを、 projectの下にproject、bin、obj という具合にしたい、ということです。
基本的なことですいません Cから入ったもので、フォームやコンテナやデリゲートの宣言部分のために ソースがヤケに長くなってしまって見難いんですけど、 こういうのの対処法ってなにかりますでしょうか? 名前空間さえ一緒ならクラスを別々のファイルに分けても平気・・・なのかな?
>>271 そのセリフってVB6から来た香具師の専売特許だと思ってたよ
C+Win32SDKでもウィンドウクラスの定義やらウィンドウプロシージャの定義やらウィンドウ作成のコードで長くなるよな
同じこと
隠ぺいされている部分が多い分C#の方が見やすい
つか同じことやるならpartialで隔離されているところを含めてもC#の方が短い
275 :
271 :2006/06/24(土) 09:44:31
>>272 試してみます
>>273 partialでクラス宣言すればクラスを分割できたのですね!
ありがとうございます!!
時代はpartialじゃけん
regionだろ
278 :
271 :2006/06/24(土) 11:53:41
regionは使ってますが、左側の[+]がうざいんですよ・・・ い、いや、そーじゃなくて、実は大変勘違いしてたようなので書き込みにきたんです 実は、1つのファイル(名前空間)の中にクラスが4つ入ってました! そりゃ見にくくなりますよね・・・orz ソース整理してから組みなおすことにします。 ありがとうございました!!
> 1つのファイル(名前空間) なんだこの表現は
はいはいはなげはなげ
あんまり苛めてやるな じゃ、次の質問ドゾー オレは出かけるけどな
電卓のアプリケーションを作っています。 ボタンとキーボードのキーを対応させたいのですが どのようにすれば良いんでしょうか? KEYPRESSとか調べたんですが、よくわからなくて… 例 キーボードの'1'を押すと、 電卓の数字の1が押されたことと同じ処理が出来るようにしたいです。
なにが分からなかった?
共通の処理を書いたKey1Pressみたいなメソッドを用意して、 キーボードの1が押されたときのイベントハンドラとソフトキー1のボタンが押されたときのイベントハンドラから 共にKey1Pressを呼び出すようにする
ボタンの名前を &1 にする
それだ!
>>276 おまいそのCM古すぎ
・質問
DateTimePicker(Win, 1.1)でチェックボックスを表示していて、
日付の側にフォーカスがあるときにTabキーでフォーカスを前後に
移すと、チェックボックス部分のフォーカスを示す点線枠
(視覚スタイルオンならオレンジの強調表示)が残ったままに
なってしまいます。再描画させられませんか?LeaveでRefresh
してみたけどだめでした。
関係ないけどさ、「視覚スタイル」って言葉へんじゃね? なんだよ「視覚スタイル」って。 訳したやつ馬鹿じゃないの
ヴィヅアルスタイルでいいじゃまいか 中途半端に訳すから分からなくなる
じゃぁ完全に訳したら分かりやすいのかよ。 単に「最初に使った言葉から変えるな」ってだけだろ。 逆にそれだけなんだったら、一度聞けば「ああ、アレのことか」で済む問題。 たいした事じゃない。
既知の訳文が無い場合、そのままカタカナ語にするか、新しい訳文を作ることになる 元の英単語がカタカナ語でも比較的意味が通じるならそれでいいけど、そうじゃないと新しい訳文が付く 日本では「ビジュアル」に美的な意味もあるから「美しい」と間違われる可能性もあり、今回は特に見た目の話だからカタカナ語はやめたんだと思う そうなると新しい訳文がつくことになるが、そこは言葉の直訳より意味が通じるかが問題 508の観点からすると、要素に意味付けをする際はどの感覚に対して行うかがハッキリする必要がある 今回は視覚の部分ということで、Visualを視覚と訳し、スタイルはそのまま通じるため、視覚スタイルとした と、妄想ポワワワ
ポワトリン乙
聴覚スタイルとかあってもいいよな 「野太い男性声聴覚スタイル」とか「萌えアニメ声聴覚スタイル」とか 聴覚スタイル設定により、ボタンテキスト読み上げはアナウンサー声でチェックボックスの読み上げはオカマ声にできるとか もしかしてすでにある?
じゃあ俺は味覚スタイルを
じゃあ俺は触覚スタイルを
じゃあ俺は味噌田楽スタイルを
299 :
デフォルトの名無しさん :2006/06/28(水) 17:15:58
int型の配列をファイルに保存したいんだけど もしかしてintをbyte[]に直して保存、読むときもbyte[]として読んでintに直さなくちゃならないの?
switch (m.Groups[2]) こういう書き方ってできないんでしょうか? 整数型の値が必要ですと言われます。 リファレンス見ると文字列でもいけるはずなのですが。
>>300 m.Groups[2] の戻り値、string じゃなくて Group 型だろ。
>>299 BinaryReader/BinaryWriter で
int[] array;
for(int i; i<array.Length; ++i) bw.Write(array[i]);
とするか、
System.Array.ConvertAll か System.Buffer.BlockCopy 辺りを使うか。
>>299 どういう風に、ファイルに格納するかに依存するが。
>>301 そんな型があったんですか
string j = m.Group[2].ToString
とかできないようで今調べてます。
string j = Convert.ToString(m.Groups[2]); でいけました
306 :
299 :2006/06/28(水) 17:51:04
>>307 まだ早いと思って誰も書かなかったんじゃないかと
switch(i) case 1 or 2 : 文 みたいにすることはできますか?
case 1 : case 2 : statements;
>>310 それは C/C++。
C# だと、
case 1: goto case 2;
case 2: statements
としないと駄目。
>>311 実は C# でもできるんだよ。
case を並べる時だけはフォロースルーが有効。
>>310 できました。こんな使い方もできるんですね。
応用が利きそうです。ありがとうございました。
途中で文章を書いたらだめなんですね。残念。
なるほど、勉強になります。
普通に if (i){ case1 } case2 じゃダメなの?
case 3 があったら面倒じゃないか
VS2005を使用しています。 「Deleteキーが押されたらListBoxから項目を削除する」という処理を実現しようと KeyPressイベントを設定してKeyPressEventArgsのKeyCharでDeleteキーかどうか 取得できるかなと企んでいたのですが、Deleteキーは取得・設定不可でした。 ListBox上でDeleteキーが押されたかどうか取得する方法は他にないでしょうか?
>>320 検索しました?
調べたらすぐ出てきたんですけど・・・・。
keydownイベントに
if (e.KeyData == Keys.Delete)
{
}
>>321 Pressじゃダメだったんですね。できましたthx
基底クラスのコンストラクタが投げた例外を、 派生クラスのコンストラクタで捕まえることはできますか?
無理
class A { Random rr = new Random(); int z = rr.Next(50) //以下略 } っていうクラスがあって、メインの処理のほうで ArrayList Datas = new ArrayList(); for(int i = 0 ; i < 100 ; i++) { Datas.Add(new A); } をした後にDatasの中身をそれぞれのzでソートしたいんですけど、 スマートな方法ありますか?
C#のstrigは参照型だそうですが、C/C++でいうところの char* huga( void ) { char* string = hoge(); printf( "$s", string ); } char* hoge( void ) { char* string="hogehoge"; return string; } みたいなことをして大丈夫でしょうか。 C/C++だと、正常に表示されても 「メモリが破壊されてないので"偶然"表示されてるだけ。いつ無くなるかわからないからNG」 とされています。 これはC#でも同じでしょうか。 それともガーベージコレクションが実行されるまでは大丈夫なのでしょうか? 宜しくお願いします。
IComparer を実装したクラス作って Datas.Sort( comparer ); //Dataってもともと複数形だよ
>>326 参照が残ってる限りインスタンスは残る。
その場合だと hoge が参照を返すから、huga がその参照を持つのならインスタンスは残る。
329 :
326 :2006/07/01(土) 22:58:22
>>328 ありがとうございます。
作ってる最中でstringが実際に値を持たないと聞いて全部作り直しかと思ってました。
それではこのまま作りたいと思います。
>「メモリが破壊されてないので"偶然"表示されてるだけ。いつ無くなるかわからないからNG」 だれだそんなこと言ってるあほは?
>>326 C#でそれに相当するものをCで書くとこうなる。
char* huga( void )
{
char* string = hoge();
printf("%s", string);
}
char* hoge( void )
{
char* s ="hogehoge";
char* string = malloc(strlen(s))
strcpy(string, s);
return string;
}
>>330 スコープ上いつ死んでもおかしくない。
>>331 staticにすりゃ良いじゃん。
char* huga( void )
{
char* string = hoge();
printf( "$s", string );
}
char* hoge( void )
{
static char* string="hogehoge";
return string;
}
どいつもこいつも huga の return を書かないのはどうしてだ char* 返しやがれ
>>335 誰もそこ突っ込んでなかったから。
あと、
>>326 を C++ 的に書くなら、
std::auto_ptr<std::string> hoge(void)
{
std::auto_ptr<std::string> str = string("hogehoge");
return str;
}
じゃね?
>>336 それ、strのデストラクタ呼ばれますよね?
ここ何スレだっけ?
自分の知っている言語の知識をひけらかすスレです
>>332 331は配列がヒープに割り当てられることを忠実に再現してみた。
342 :
325 :2006/07/02(日) 16:58:06
>>327 >>341 ありがとう御座います。
しかしながら、IComparerの実装方法がヘルプみても良くわかんなかったので、
勉強してきます。
>スコープ上いつ死んでもおかしくない。 スコープで消えるのはstringとやらいう変数だけだ。 静的な文字列領域が勝手に消えるか。 # char*で返したら別の意味でまずいけどそれはまた別の話
>>342 class comparer : IComparer
{
public int Compare( object x, object y )
{
int ix = ( (A)x ).z;
int iy = ( (A)y ).z;
return ix.CompareTo( iy );
}
}
345 :
325 :2006/07/02(日) 21:52:53
>>344 おおお 出来ました。 ありがとう御座います。
頂いたコードを参考に、理解を深めるために他所で調べていたのですが、
1)Compare()メソッドが負、0、正の値を返すのをArrayList.sort(Comparer)メソッドが利用している
2)CompareTo()メソッドを使わない、もしくはオーバーライドすることによってまったく独自のソートが実現できる
3)引数を持たないArrayList.sort()メソッドはCompareTo()メソッドを利用して比較する
という考え方で良いですか?
ビルドしたものを実行すると、ボタンとかが古いデザインになってしまうようになりました。 前まではXPスタイルになってたのですが・・・。 それとデバック開始で試しているときはちゃんとXPスタイルになってるんですよ。 再インストールしてみたのですが駄目でした。 特に設定弄った覚えないんですが・・・orz
エスパーの人、答えてあげて
Application.EnableVisualStyles();
349 :
デフォルトの名無しさん :2006/07/04(火) 20:08:41
趣味でWinアプリ作ってみたいんでVC#2005EEでデビューしたいんですが 入門に最適な本ってありますか? プログラム経験は自分のサイトに使う程度のwebアプリをPHPでたまに作るくらいで、OOとかは全く理解してません
>>349 まずはWebで入門的なの載ってる所探して、そこ見て勉強始めてみたら?
その上で本選んだほうが、ベストな選択できると思うぞ。Webだけでマスター
できたら、金かからないし。
ある程度金を使っといた方がすぐに投げ出しにくくなる気もする
>>352 まったくプログラミング初めてだったら、そこのはつらいと思うけど、経験者だったら
そこでもOKかな。後はC#・入門などのキーワードでぐぐって良さげなところを
探すべし。
.NET2.0対応の本て少ないな
>>348 FormのLoadで記述してみましたが駄目でした。
もうワケワカンネorz
>>356 すんません、原因分かりました・・・。
アセンブリ名をsvchostにしてたからでした
コマンドプロンプトからcsc.exeでビルドする際、 絶対パスにスペースが入るとエラーが出るのですが、 これを回避するにはどうしたらいいでしょうか?
ダブルクォーテーション てかこんな基本……
"
361 :
358 :2006/07/04(火) 23:04:11
あ""か orz これなしでもビルドできたのですっかり忘れてました… ありがとうございます。
Documents" "And" "Settings みたいな書き方でもOKだお
>FormのLoadで記述してみましたが駄目でした。 >もうワケワカンネorz 別に関係はなかったようだが、 >この visual スタイルを有効にするには、アプリケーションでコントロールを作成する前に、EnableVisualStyles を呼び出す必要があります。 うまくいくわけねーだろ。マニュアルくらい読め。
普通のパソコンには入っていないフォントを使いたいのですが、 どうすればいいのでしょうか? ユーザーに自分でフォントをPCにインストールさせる?
>>364 まあそのフォントのライセンス次第だな。
Windows APIにフォント埋め込みに関するものがあるはず。
ごく少数の文字さえ扱えればよいのであれば、ビットマップとして持つのも悪くは無いと思う。
アプリ起動時に、そのアプリがすでに起動中だったら、 アプリの起動を阻止し、現在起動中のアプリにデータを渡す。 というのはどうやってするのでしょうか?
二回言った……。 VB2005 は引数渡すところまで My で多重起動禁止をサポートしてるらしいがどんな手段使ってるんだろ
>現在起動中のアプリにデータを渡す。 こうする必要があるなら、.NET 2.0のRemoting、IpcChannelが使いやすい。 VBならそれ専用のフレームワークが用意されていて、内部でこのIpcChannelを使ってるらしい。
>>370 どっかでサンプル見たことある?今API使って組んでるんだけど、API抜きで
できるんだったら、書き替えたいなと。以前一度Webで調べつつトライしたん
だけど、うまく動かなかった。
>>371 動かなかったコードを曝せや
「うまく動かなかった」じゃお前とエスパー以外理科できん
>>372 いや、別に長々とコード書いて、チェックしてくれとお願いするつもりはないし、
わざわざサンプルコード作ってもらうつもりもない。
どっかのページに載ってるの見たことあったら、urlだけ教えてほしかっただけ。
じゃあ無いから諦めろ
>>373 なんで貴様の利益だけのためにやる必要があるんだ?
「動かなかったコード」と「動くコード」の比較は「動くコード」だけを見るよりも有意義
貴様の失敗談を晒すことで多くの閲覧者の利益になるのにそれは自分だけというのは美味し過ぎるんじゃないの
結論:自分だけ美味しい思いをしたければ自分で探せ
ここは心の貧しいインターネッツですね
双方貧しいな
378 :
371 :2006/07/06(木) 13:37:37
質問しといてこんなこと言うのもなんだが、カルシウム足りてない奴が多いな(苦笑)。
>>375 あんたの考え方はわかったよ。しかし、おれだったら、この手のスレで人の書いたコード
で、画面スクロールしないと表示しきれんくらいのが出て来たらうんざりするな。そういう
時に限って、ちょっと調べればわかるような初歩的な質問の応酬が延々続いて、読ん
でるとうんざりする。
それよか、もしどっかのサイトで適当なサンプルが載ってればそれを紹介してもらった方
がよっぽどいい。そういうのが無ければないで、それも仕方ない。でもそういう情報が載
れば、みんなにも「有意義」だろうしね。ま、これはあくまでもオレの考え方だ。
(スレ荒らすつもりはないので、この件ではこれ以上書き込むつもりはない)
>>375 そう、誰もそんな義務を負ってないよ。でもね、普通の人はこうするんだ。
気に食わないレスはスルーする。
>>378 確かに「C♯相談室」でそれやったら煙たがられるよ
だからそういう人でも聞くための「ふらっとC♯」スレがある
>>1 くらい嫁
自作自演の人にも優しく接するのが初心者スレの粋ってもんです
387 :
366 :2006/07/06(木) 17:23:25
>>367 ,
>>368 ,
>>370 さんありがとうございます!
パッとできると思ったんですが、一ひねりいるようですね。
与えられたヒント・Urlのおかげでなんとかなりそうです。
本当にありがとうございます。
あと結果的に荒れる原因となった質問をしてしまい、申し訳ありませんでした。
多分そうだと思うが……
>>391 うむ
配列を作っただけでは配列の中身は空っぽだ
>>392 インスタンスの宣言が必要なのはTestがクラスだからで、
構造体ならインスタンスは在っても無くてもかまわないのですか?
というより、構造体なら配列を作った時点でインスタンスができる
>>394 ということはList5-6でも19行目でインスタンスを作ってますが、これは作る必要が無いのですね。
なくても全く問題ないと書いてある理由が分かりました。(というより無い方がいいのかも)
397 :
デフォルトの名無しさん :2006/07/10(月) 00:48:33
HttpWebRequest のRefererプロパティってどのように記述して設定すればいいんでしょうか・・・・
HttpWebRequestのインスタンス のReferer プロパティに、文字列を代入する。 インスタンスの意味は分かりますか?
399 :
デフォルトの名無しさん :2006/07/10(月) 00:55:50
HttpWebRequestという構造体の中にRefererというメンバ(インスタンス変数)が入ってるので、それを指定する ということは HttpWebRequest.Referer = "〜〜"; ということですか?
401 :
デフォルトの名無しさん :2006/07/10(月) 01:09:40
>>400 ちょっと概念勉強しなおしてきます
ありがとうございます
HtmlDocumentの非同期操作時、HtmlWindowだけが変な例外を投げるのですが なにか良い回避法はありませんでしょうか。 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { backgroundWorker1.RunWorkerAsync(webBrowser1.Document); //backgroundWorker1.RunWorkerAsync(webBrowser1.Document.Window); // パターン2 } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { Debug.WriteLine(e.Argument is HtmlDocument); // true HtmlDocument doc = (HtmlDocument)(e.Argument); Debug.WriteLine(doc); // System.Windows.Forms.HtmlDocument Debug.WriteLine(doc.All); // System.Windows.Forms.HtmlElementCollection Debug.WriteLine(doc.Window); // 例外 : 有効でないキャスト /* //パターン2 Debug.WriteLine(e.Argument is HtmlWindow); // true HtmlWindow window = (HtmlWindow)e.Argument; Debug.WriteLine(window.Document); // 例外 : ComObjectがどーたら */ }
>>402 それ、webBrowser1のインスタンスがbackgroundWorker1のスレッドにないからダメなんじゃね?
コピーをつくるなりしないと。
レジストリのキーを監視して、書き換えられたりしたらすぐさま元に戻す ということをTimerのTickで500ミリ秒ごとにやっていまして、 このときに RegistryKey reg = Registry.LocalMachine.CreateSubKey(省略); (監視の部分) reg.Close(); と毎回Closeさせているのですが、やはりTickには監視の部分の コードだけ書いてCloseとかはプログラム終了時にやるようにした方が 効率いいでしょうか?
文字列中に含まれる空白を全て除去したいのですが なにか良い方法はありませんか?
Replaceなり正規表現なりで空白を空文字と置換する
407 :
デフォルトの名無しさん :2006/07/11(火) 16:11:25
初歩的な質問ですみませぬ。 C#.NET 2.0ですが Debug.WriteLine("hogehoge:\t" + hogehoge); このような事を hogehoge の記述は一回だけで済ませたいのですが、 どのようにしたら良いのでしょうか? ググるキーワードだけでも助かりますです。
>>407 >初歩的な質問ですみませぬ。
すいませぬという必要はないが、人にわかるように質問してくれ。
「変数名:変数の値」をデバッグに出力したいってことなのかな? リフレクション?詳しい人よろしく
410 :
407 :2006/07/11(火) 16:54:49
>409 > 「変数名:変数の値」をデバッグに出力したい その通りです。
その記述に何か問題があるから質問したんだよな? なんで一回に済ませたいの? デバッグ用の関数を作って、そこに変数を渡したらデバッグ出力されるようにとか考えてる? もしそうだとしても、デバッグのためにプログラムフローを変えることはお勧めしない。 その書き方を必要な箇所に追加しておけば、ビルド時にデバッグ関係を外すとか簡単にできるからおすすめ Reflectionを使うともしても関数的に代入してしまっては意味ないし、プログラム中で使うとするなら“hogehogeを使う”ことは分かっているんだから複雑な構文を使う意味がない。 必要な箇所で「Debug.WriteLine("hogehoge:\t" + hogehoge);」が一番スマートかつ無駄な処理が無く最適だと思うが。 それでもどうにかしたいのであれば、その理由があると思っている。 もしかしたら違うアプローチで解決できるかもしれないから、根本的な要件を明示してくれ。
ちょっち質問 フォーマットの決まったデータを便利に処理するとき、C言語では構造体を当てはめて処理してたけど、 C#ではどうするのが正しいので? ビットフィールドも使えないみたいだし。
413 :
407 :2006/07/11(火) 17:53:53
> デバッグ用の関数を作って、そこに変数を渡したらデバッグ出力されるようにとか考えてる? はい。C言語のマクロ展開のような、簡単にできる方法があればと考えていました。 構造体のメンバ等をいくつもいくつもチェックするときに、記述の手間を 減らせたら良いと思っただけなのです。ものぐさですみません。 このような手間は惜しんではいけないのでしょうか…
VSのマクロ機能を使って自動で生成するようにするとか
途中で書き込んでしまった 書くのが面倒なだけならコードスニペットを使うとか
>>412 便利な方法はない。BitCoverterを使うか、BinaryStreamを使うかのどっちか。
>>407 リフレクションで拾えるのはクラスなどの型の名称だけで、インスタンスの名前は無理だったと思う。
面倒でも、そのまま
>Debug.WriteLine("hogehoge:\t{0}", hogehoge);
でよい。
C++だとプリプロセッサで出来てたんだけどね。
#define DEBPRT(x) printf(#x " = %d",x)
418 :
407 :2006/07/11(火) 20:02:22
いろいろと有難う御座います。 エディタ側で対処してみますです。
419 :
デフォルトの名無しさん :2006/07/12(水) 11:57:00
WindowsMobileなC#の質問でもここでいいんでしょうかね。 CE系はメモリが足りなくなると、裏に回っているアプリを勝手に終了するわけですが それを回避することは出来ますか? 本来の目的としては 「C#でWM上の常駐アプリを作りたい」 なのですが。
VS2005にSystem.IO.Portsというのがあるのですが、 これでシリアルポートに接続されたデバイスをリスト化することは出来るのでしょうか? 最終的には、デバイスマネージャのポートに入っている部分をリスト化して呼び出したいのですが。
421 :
デフォルトの名無しさん :2006/07/12(水) 21:41:18
C#でMIDIを扱うソフトを作るにはどうすれば良いでしょうか?
XPのタスクマネージャから強制終了できない様にすることってできますか?
425 :
421 :2006/07/13(木) 04:10:26
>>424 やっぱり無理ですかぁ、くだらない質問に返答ありがとうございました<_>
>>426 ウィルスだかトロイに疑似的に実現してるのがあるよ
複数のプロセスを別々に起動して常に他を監視
自分以外が落ちたら即起動
これを1つのアプリケーションに見せかけるのはそれなりにトリッキーな技術が必要だろうけど、一応ってことで
自力で止めるには止めるための処理を仕込んでおくかバイナリの置かれているディレクトリから実行権限を外せばOK
最近のウィルス対策ソフトだと感知されて起動禁止になるかもだけどね
rootkitみたいにプロセス一覧に表示されないようにするとか
そもそも強制終了されて困る要件って何だ?
それが分かれば別の対策も出るかもしれんぞ
>>422
>>429 業務PCで、USBメモリの有効無効のレジストリを常に監視して
パスワードがないとUSBメモリを有効にできないようにするソフトなのですが、
バイト君の中に結構PCに詳しいやつがいてタスクマネージャで強制終了させる
可能性があるので何とかできないかなぁと・・・。
タスクマネージャを無効にするとたまーになんですが困ることもありまして。
っ[誓約書]
BIOSで無効にしろ
BIOSで無効の上、BIOSにパスワードロックで完璧だと思うけど、 面倒だろうからポリシーでやるべきじゃ?
>>430 そういうのはDeveloperじゃなくIT Proの領域だな
どうしてもコードってんなら
>>427 のアイデアを借りば?
プロセス監視もUSB監視もWMI非同期イベントで見れるし
WSHスクリプトだけでできそうだな
>>430 USBの口をアロンアルファでふさぐ。
USB用貞操帯なんて作ったら、売れるかもしれんな。
終了時にシャットダウン
>>438 無理に外そうとしたら、恥ずかしげに身悶えるやつがあったら教えてくれ。
初歩的なことで質問なのですが、 アセンブリの「アンセーフコードの許可」をチェックすることのデメリットってなんでしょうか。
USBからOS起動されたらだめじゃん?
みなさんいろいろとありがとうございます。
ただ、有効・無効を簡単に切り替えれる必要があるので参考程度にさせていただきます。
現状は他の管理者に無理言って、レジストリエディタやタスクマネージャを制限することにしました
>>437 それのレジストリの書き換えを行うソフトをつくってました。
>>438 最終的にはこういうの使うかもです
ありがとうございました
446 :
420 :2006/07/14(金) 16:11:02
>>424 一通り調べてみましたが、System.Management名前空間に関係するいい情報が見つかりませんでした……。
一応、ポートを試しに開いてIO.IOExceptionで処理するようにしたのですが、
やはりスマートじゃないですね。
ManagementObject mo = new ManagementObject("Win32_〜〜.〜〜〜")
この部分が分からなくて困ってるんですが、もし参考資料などありましたら宜しくお願いします。
>>446 System.Managementってのは、WMIというシステム情報が格納されているデータベースみたいなもんにアクセスするためのインタフェース。
SQL Serverに対するSystem.Data.SqlClientみたいな感じ。
なので、WMIの構造を知ることと、System.Managementで問い合わせをする方法は別々に学習する必要がある。
前者はCOMとしてのWMIのサイトを参照すれば色々見つかるし、スクリプトならTechNetのスクリプトセンターにサンプルがゴロゴロしてる
後者はMVPの人とかがサンプルを沢山挙げてるから、それで勉強
450 :
440 :2006/07/15(土) 21:25:22
レスがない、ということはデメリットは特にないということでよいのでしょうか・・・
452 :
440 :2006/07/15(土) 22:29:05
それはおまえしか知らない
検証できないコードになる。
こんなこと言ってるようじゃ危ないな
456 :
440 :2006/07/15(土) 22:58:28
すみません、誤解があるようなのですが、アンセーフなコードの危険性は熟知しています。 アンセーフなコードのデメリットではなく、「アンセーフコードを許可する」をチェックすることのデメリットという意味です。 単にアンセーフコードをコンパイルできるかどうかという意味しかなく、実際のデメリットはないという理解でよいのでしょうか。
いやだから、なんでそれをしたいのかって話だよ。 アンセーフなコードの危険性を『熟知』してたらそんな質問は出てこないはず。
こんな風に気にする人たちがでてくる ってことじゃないか?
459 :
440 :2006/07/15(土) 23:18:03
>>457 別にそこまで深い意味はないのですが、「許可する」をチェックすることで
もし実行環境やプログラム配布の関係で何らかのデメリットが生じるのなら、無理をしてでもすべてセーフコードで書くべきかな、と思ったしだいです。
アンセーフコード自体の危険性は気をつけて書けば避けられるのに対しこういうのがあった場合どうしようもないので。
あと比較的どうでもいいのですが、たとえば今までアンセーフコードで書いていたコードをセーフコードで書き直すことができるようになった時に、
もし「許可する」のデメリットがないのなら、いちいちチェックをはずす必要もないのかな、と思いまして。
意味が分からんな。 チェックしなきゃコンパイルできないプログラム書いてんなら、 つけざるをえんだろ。 そしてそれは検証できないアセンブリになる。 「チェックをつけたことによって検証できなくなる」 のかどうかはよく知らないな でも普通はチェックする必要がないプログラムではチェックしないだろから そうだとしてもそれがデメリットというかは微妙
ん、話はもっと単純に 「例えばセーフコードのみのブツをアンセーフ許可してコンパイルしたら違うIL吐くのん?」 てことを聞いてるように見えるんだが、違うのかな。
463 :
440 :2006/07/15(土) 23:42:55
>>462 そういうことになりますかね。
ただ、実行コードだけでなく、アセンブリの諸々の情報(あまり詳しくないのですが)も同一である必要があると思います。
ちょっと手元で両方の設定でコンパイルしてみたところ、ハッシュの異なるアセンブリファイルが生成されました。
(同じ設定でもハッシュが異なるファイルが生成されたので、これだけでは何もいえませんが。)
コンパイルした日時が変わるだけでハッシュ変わる
>もし「許可する」のデメリットがないのなら、いちいちチェックをはずす必要もないのかな、と思いまして。 はずしとけ
デメリット: アンセーフコード自体の危険性は気をつけて書けば避けられるのに対しこういうのがあった場合どうしようもない
こういうのって何だよ
contextMenuStripにtoolStripMenuItemを追加したとします。 それをデザイナからLabelのContextMenuStripに設定したとします。 そしてtoolStripMenuItemをクリックしたときに、 クリックしたLabelのTextを取得したいのですがどうすれば出来るのでしょうか? string s = ((Label)sender).Textではダメでした。
検証できないアセンブリになる て何回言っても虫ですか。
もともと検証しないから、検証できないかどうかは関係ないってことでしょ
>>468 (ContextMenuStrip)(((ToolStripMenuItem)sender).Owner).SourceControl.Text
>>463 unsafe命令の有る無しに関係なく、/unsafeスイッチをつければ次の属性がONになってる。
assembly: System.Security.Permissions.SecurityPermissionAttribute(SecurityAction.RequestMinimum, SkipVerification=True)
473 :
440 :2006/07/16(日) 02:38:15
>>469 >>472 すみません。
検証についてちょっと調べてみたのですが、次のような理解であっていますか?
・「アンセーフコードを許可する」をチェックし、かつアンセーフコードが含まれているとと検証不可能なアセンブリしか生成できない。
・検証不可能なアセンブリは通常の方法では実行できず、実行環境でセキュリティポリシーの設定を変える必要がある。
>>472 アンセーフコードを含まず、「許可する」をチェックしてコンパイルしたアセンブリに対して peverify.exe を実行したところ
> All Classes and Methods in XXX.dll Verified.
と出ました。
これは検証可能なコードが生成されているということですよね。
>>473 >アンセーフコードを含まず、「許可する」をチェックしてコンパイルしたアセンブリに対して peverify.exe を実行したところ
ILは検証可能であるが、アセンブリがSkipVerificationを要求してる状態。
この状態のプログラムを \\server1\share1\prog.exe で実行するとSystem.IO.FileLoadExceptionで落ちる。
.NET的にはセキュリティ中立(つまりこの属性無しで)でUNSAFEなアセンブリは作れるのだが、
C#のコンパイラはそれを許していない。
>・検証不可能なアセンブリは通常の方法では実行できず、実行環境でセキュリティポリシーの設定を変える必要がある。
ローカルドライブからコマンドプロンプトやエクスプローラで起動した場合、
FullTrust(何でもあり)権限で起動されるので特にポリシーをいじる必要はない。
475 :
440 :2006/07/16(日) 05:03:44
>>474 なるほど、非常にわかりやすいレスありがとうございます。
つまり、まとめるとこういうことですね。
・「アンセーフコードを許可する」をチェックすると、アンセーフコードの有無に関わらず SkipVerification の許可が必要になる。
・ネットワーク経由で実行する場合、実行するにはセキュリティポリシーの設定が必要。
・ローカルで実行する場合、デフォルトで FullTrust の許可が与えられるのでこのような問題は一切気にする必要はない。
SslStream.AuthenticateAsServer が X509Certificate を要求するため、 適当にプログラム中で生成したいと考えています。 (暗号化のみでいいので認証処理は無視しています) X509Certificate.CreateFromFile は外部に証明書ファイルが必要になるので 使えない。同Import は渡す byte[] の構造が分からず利用不能。 X509Certificate#GenerateSessionCertificate みたいな感じで X509Certificateを作る方法はないでしょうか?
あります
>>471 ありがとうございます。
上手いこと出来ました。
479 :
476 :2006/07/17(月) 11:21:39
質問の語尾がまずかったですね。すいません。 X509Certificateをファイルを介さずオンメモリで生成する方法が知りたいです。 X509Certificate#Import が受け取ってくれるバイナリ配列の生成方法でもいい のですが
アッセンブリバージョンとファイルバージョンの違いって何? どう使い分けたらいいの?
482 :
480 :2006/07/18(火) 19:25:45
>>481 自分のような趣味で単体ツールを作っているモノとしては、
アッセンブリバージョンはあまり気にしなくても良さそうですね。
リンク先は少しずつ見ながら勉強していきます。
ありがとうございました。
> アッセンブリ という語句を聞きなれていないのは俺が無知だからですか
斡旋ぶり
アッセンブリをググると機械系のサイトばっかり アセンブリでググるとプログラミング系のサイトばっかり
PDM/PLMの用語だからな。
C#2005 EEでVS2003にあったクイックウォッチってないんかな?
Proをお買い求めください
アッセンブル・インサート ちゅうのは古いか
>>488 Pro買わないとダメなのかぁー
Standardに付いていたら購入するのに
C#だけつかうならEEもSTDも一緒?
んなわけない
どこが違うの?
MSはもっとC#布教頑張って欲しいな、どう頑張ればいいのか分からんが このままじゃ自然消滅だよ
.NetといえばC#かVB.NETって感じにはなってるけど 言語の普及以前に.Netをなんとかしないとどうしようもないよな
>>494 MS、結構いろいろやってるはずだけど。
オフィシャル情報多いし、日本語ドキュメントも充実してるし、
標準ライブラリも結構そろってるし、VS 使いやすいし、
コミュニティ支援とかまでやってるし。
これ以上、具体的になにやればいいと思う?
個人的にだけど、一応、C# 普及サイト持っててさ、
個人でもやれることあったらやろうかと。
.NETじゃないVBは消滅したんですか?VBAに含まれてるのかな
むしろVB.NETが消滅した。言葉だけは。
.NETとJavaが肉薄かぁ、これからはJ#の時代ですね
そりゃないだろ。 でももしもJavaの世界と.NETの世界を行き来できるのだったら、たしかにJ#はいけるだろうな。 ネイティブと.NETの世界を行き来できるC++/CLIのように。
先生、J#スレがありません
HTMLでいうと<hr>のような 水平線のみのコントロールはどこにありますか? ツールボックス内を探しても見つからないのですが…
GroupBox のTextプロパティを空にして、Heightを8くらいにして代用してるけど
>>506 おお、こんな方法があったとは…
ありがとうございます!
もしかして、みんなこの方法でやってるのかな?
自作して再利用してる 大した手間じゃないし
VC++のときはPictureBoxで代用してたけどC#ってできなかったっけ? 今自宅で開発環境ないからわかんない
>>509 が自作したのを公開してくれればいいんじゃないかな
ユーザコントロールに線2本引くだけだろ
513 :
287 :2006/07/21(金) 09:59:17
視覚スタイルへの対応はどうでしょう?
システムカラーで線描けばいいじゃない
515 :
デフォルトの名無しさん :2006/07/21(金) 13:54:36
テキストのログファイルを作成するに当たって、ファイルを回帰的に使用したいと 考えています。 指定行にテキストを書き込む方法(メソッド)を教えてください。
ない
無いな
>>515 ファイルポインタを指定行の先頭まで移動し、そこ以降を一旦メモリにバッファ
指定行の先頭から新しいテキストを書き込み、続けてバッファした内容を書き出す
以上をクラス化して再利用する
普通は固定長にする。
固定長にすると割り込みができるのか?
初心者にもほどがある。
523 :
515 :2006/07/21(金) 21:14:07
回答ありがとう御座いました。 VB6にあるようなPutステートメントがあるのかと思っていました。
>>519 お前の会社なり脳内の流儀はさておき、彼はログファイルをローテーションさせたいわけだ。
いや、そのために子低調にするのかと。
今時固定長にする利益を教えてください
同じファイルでサイクリックにしたいっていうから それなら普通固定長にする て言っただけなんだがなんかおかしかったか?
逆に固定長にできないなら、 それでもわざわざ同じファイルにして苦労する 価値があるかはあやしい。 固定長以外ではシンプルな方法は無理だからね。
サイクリックをlog rotationと間違えてる奴発見
ここはサイキックなスレですね
Regex.Replace( @"\abc\\def\\\ghi", "\\+", "\\" ) これで"\abc\def\ghi"が返ることを期待しているんだが 同じ文字列しか取得できない。なぜ?
第二引数、C# 文法におけるエスケープと正規表現におけるエスケープの両方必要。
>>536 回答ありがとう。
"\\+"ではなく"\\\\+"と指定しなきゃいけないのか。
第3引数は"\\"でいいのに。
>>537 第三引数は正規表現じゃないですから。
/\\+/,"\\"
TreeViewをプログラム上からスクロールさせたいのですがどうすればいいのでしょうか。 AutoScrollOffsetがそれらしいかと思って変更してみましたが変化がありませんでした。
node.EnsureVisible()
542 :
540 :2006/07/24(月) 05:38:07
>>541 ピクセル単位でスクロールする方法はないでしょうか?
VS2005を使用しています。コントロールの絶対座標を取得する方法はありますか?
あります
>>543 絶対の基準点はどれですか
以下は全て仕事で関わった「絶対座標」です
・ウィンドウ(視覚スタイルも考慮)
・クライアント領域
・デスクトップ(プライマリモニタの左上が基準点)
・特定のモニタの左上(マルチモニタを考慮)
・表示領域で最も左の上(マルチモニタを考慮)
・表示領域で最も上の左(マルチモニタを考慮)
・全モニタを合わせて矩形化した領域の左上
・上記のいずれかをベースとした任意の点
まあ、どれでも取れますが
クライアント領域
549 :
543 :2006/07/24(月) 14:50:37
if (s != ""){} if (s != string.Empty){} どっちを使った方がいいのかなぁ。 はどっちでも同じ?
初期化のやり方にあわせれば?
静的コード解析だと string.IsNullOrEmpty を使えって怒られるよね
>>552 静的コード解析なんてあんの?知らなかった。
if(s.length() != 0){}
>>552 それおかしい。
NULLじゃこまるがemptyで。ってとき対応できない。
>>554 Equals もそうだが s が null の時が怖い
フォーム上のWMPコントロールで ボリューム等が変更された場合それを知る方法はないでしょうか? AxWindowsMediaPlayer.setting が変更されるタイミングが知りたいのですが・・・
>>545 ちょびっとだけエスパーになって考えたら
デスクトップの左上を基準にした座標を言ってるんだと思う。
>>545 もいじわるだが、
>>549 がいたずらでなく本人ならちょっと笑える。いりません、って。
さすが夏休み。質問者も回答者も腐ってますね。
学校でC#やってるトコなんてあるのかね
あるよ
563 :
540 :2006/07/25(火) 08:32:46
無理なんですかね? AutoScrollOffsetっていうのはなんなんでしょう?
ピクセル単位は無理っぽいな 行単位ならできそうだが
>>563 AutoScrollOffset は MSDN2 に書いてるとおり。
スクロールは LVM_SCROLL を投げればいい。
SendMessage か派生クラスで WndProc の呼び出しかはお好みで。
パネルとかにGraphicsとかDirect3D.Spriteで描画した後、 描かれたものをBitmap型の変数に移す方法ってありますか?
逆に考えるんだ Bitmap に描画するようにすればいいんだ // D3D でできるかどうかは知らない
569 :
550 :2006/07/25(火) 21:38:26
なれてないので、ぱっと見は読みにくいけど、
>>555 に注意しながら
if (!string.IsNullOrEmpty(s)){}
を使うことにします。
>>552 さん、ありがとうございました。
なんかstaticメソッドだとStringと書きたくなる Int32も同様
572 :
540 :2006/07/25(火) 23:27:59
>>566 なるほど。やはりその辺りをしなければならないのですね。
どうもありがとうございました。
ボタンコントロールを動的に配置したのですが、ボタンクリック等イベントを作成できません Button btn = new Button(); btn.Location = new Point(250,220); this.Controls.Add(btn); どうすればクリックイベント等を作成できるのでしょうか? 助けてください・・・
MSDN でイベントとか調べればいいよ あと InitializeComponent メソッドの中調べるとか
>>573 OnClickとかのdelegateに代入すれば良し。
string二次配列使っているんですが、どうにも分かりづらいのでスッキリ代用できるクラスはありますか? 各要素数は不定です。
List<List<string>>とかは? 可能かどうかは知らん
580 :
576 :2006/07/26(水) 20:31:34
ジャグ配列でぐぐって自分が間違った宣言していることに気付きました。 string[,]でいいんですね。string[][]使ってました。 実際やりたかったことはListViewにアイテム追加するための表だったので どっちが行でどっちが列なのかハッキリ分かればいいのになぁと思ってました。 情報後だし申し訳ない。
ListView に追加するって目的がはっきりしてるんなら、端から ListViewItem[] 使えばいいような気がする
んな単純なことだったらここで質問しないだろ と思ったけどここ初心者スレだったな
句読点、書けない、バカを、サマージャンボする俺。
あぼーん推奨
587 :
573 :2006/07/27(木) 00:42:41
なんかデジャヴュ
なんか、何度も似たようなものを見ることをデジャヴュとか言う奴いるけど、 全くの間違いだから。
どう考えてもワザとだろ
2ちゃんで誤用を見つけたらどっかのスレで生まれた文化と思った方が良い 「ふいんき(←なこかへんかえできない)」とか「おながいします」とか
ちんちんおっきおっき
>>589 普通にそのままの意味じゃない?
既視感だろ
>>593 多分
>>588 は過去の投稿と同じことが繰り返された事をデジャビュと言ってる
本来のデジャビュは無かったことがあった事のように感じていること
だから微妙に違う
でも2ちゃんだからどうでもいい
くだらねぇ
2ちゃんらしい流れだ
.Net 2.0 の serialport クラスの private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { c = serialPort1.Read(r, 0, 32); } の終了はメインスレッドでどうやって待つ方法がいいでしょうか?
本来のデジャビュはフランス語で「もう見た」という意味なので 「無かったことがあった事のように感じている」という訳ではない
キスしてグッバイ☆ ありとあらゆるもの♪
で、お前らいつまでこの馬鹿話引きずるんだ?
.netが死滅するまで
次のネタふられるまで
じゃあ次は確信犯の誤用な
デリゲートで質問なのですが、 自己定義したイベントハンドラに += で2つ以上のメソッドを登録したあと BeginInvoke() を実行すると System.ArgumentException が出るんです。 BeginInvoke() を利用したい理由は、登録したメソッドの戻り値を1つ1つ判定したい為です。 通常だと最後のメソッドの戻り値で上書きされるため、BeginとEndInvoke を使ってみたのですが、まったくうまくいきません。 アドバイスや解説ページなどありましたら、どうかよろしくお願いします。
>>607 今は確信犯の誤用について語り合うのに忙しいから帰ってくれ
デリケートな質問かと思ったよ
流れ読めなくてすみませんでした。 とりあえず、GetInvocationList()を使い、目的である1つ1つの 戻り値判定はできました。 でもなんか、力業っぽいというか、、もっと勉強して調べたいと思います。 失礼しました。
つかイベントで返値使うな、と言うのが MS のガイドライン。 呼び出し元に情報を伝えたい時は EventArgs を派生させたクラスで。
イベントハンドラでないデリゲートならOK
614 :
607 :2006/07/27(木) 23:51:38
はじめはデイゲートインスタンス?を利用していたのですが、
メソッドの削除がちょっとうまく行かなかった為 event にしてみたんです。
delegate bool CheckDelegate( object value );
public class Sampel {
CheckDelegate checkDelegate;
public Remove( CheckDelegate check ) {
this.checkDelegate -= new CheckDelegate( check ); // ※1
}
※1で削除できなかったので event にしてみました。
インスタンス?が違うっぽいですから削除できないのは納得してました。
とくにメソッドの削除使う予定はないのですが。
単にデリゲートよいいいかな?と思って 簡単な event 使ってました。
もうちょっといろいろ読んで勉強していきます。
>>612-613 さんご指導ありがとうございました。
>>614 > public Remove( CheckDelegate check ) {
> this.checkDelegate -= new CheckDelegate( check ); // ※1
> }
うむ、全く意味不明なコードに仕上がってるな。
右辺は += のときと同じになるぜ?
+= のときの右辺はどうしてるよ。
>>615 さんこんばんは。
あれ?Addの場合は、Removeと同じく、
public Add( CheckDelegate check ) {
this.chekDelegate += new CheckDelegate( check );
}
です。※Remove の"-"が"+"になっただけです。
これでテスト動いてたのでいいと思ってたのですが。
もしよかったらご指摘お願いします。
delegateを勉強するよろし delegate void UnkoDelegate( string str ); void UnkoTest() { UnkoDelegate unko, unko2; unko = new UnkoDelegate( aho ); unko2 = new UnkoDelegate( aho ); unko -= unko2; unko += unko2; unko( "aho" ); } void aho( string str ) { MessageBox.Show( str ); }
イベントでずっと new してたので、意味もなく new が慣習になってました・・・ デリゲートというより、当たり前の事ですよね。インスタンス違うんだもん。 間抜けでした。 失礼しました。
new でも問題ない
620 :
デフォルトの名無しさん :2006/07/29(土) 14:00:59
質問です。 トラックバーを利用してシステムの音量を調整するのには どうしたらいいですか? また、音量の値も取得したいのですが…
すいません、ageてしまいました orz
別にsage必須スレじゃない
デリゲートは対象のインスタンスとメソッドが同じなら同じ扱い。
625 :
デフォルトの名無しさん :2006/07/29(土) 23:54:12
>>623 ありがとうございます。
Win32API使ったこと無いのでちょっと苦しそうですが
がんばってみます。
専ブラ使ってるのに何で設定が保存されないのだろう orz
627 :
デフォルトの名無しさん :2006/07/30(日) 16:55:00
>>627 live2chってのがとっくの昔にあるぞ。
live2ch は VB だったと思うが、最近変わったのか?
>>629 言語なんぞ些細なことで重要なのは要求する仕事をしてくれるソフトウェアです。
live2chはVBだよ、何が悪いの?
632 :
デフォルトの名無しさん :2006/07/31(月) 00:12:34
ちょっとお聞きしたい。 親子のフォームを作って、子でパラメータをいじれるようにして 親で子のパラメータをリアルタイムに反映させるようにするには どうするのが一番良いのでしょう? 親でstatic変数で管理? 子のイベントを親のクラスで作る? その他? C#が独学なんで、作ってて迷いが出てるんですよ 助言お願いします。
んん、要するに子にスライドバー置いて親に表示してる画像の拡大率変更、とかそんなんか。 イベント。 だが子のイベントを親のクラスで作るってのは意味不明。 子のイベントに親がイベントハンドラを登録する、だな。
プロパティでもイベントでもSendMessageでも。 やるとしたらイベントかな。
この場合、親は子の存在を知るべきか?子は親の存在を知るべきか?で話は違ってくる。 自分の理想では、親に子ウィンドウをインジェクション注入、子にはパラメータ変更時に呼び出すべき親のメソッドをデリゲートとして登録しておく。 これで、両者ともお互いの存在を知ることがない。
こんにちは。 stringの配列をプロパティにしたいのだけど、書き方がわかりません。 普通の変数であれば、わかります。 mohe.property[1] <= こんなふうにアクセスしたいです。 書き方を教えてくださいな。
637 :
デフォルトの名無しさん :2006/07/31(月) 11:55:41
できるんだっけ?
意味不明
>>636 string[] _aho = new string[30];
string[] Aho { get { return _aho; } }
>>639 ありがとう。むつかしく考えてたよ。
アホだ…。
え、まじでそういう話だったのか
質問です。 指定したアプリにVK_F1とかを送りたいです。 SetForegroundWindowしてからkeybd_eventで送れたことは送れたんですが、 タイミング?によってはうまく動きません。 (GetForegroundWindowで確認してからkeybd_eventをしてるのに) 代わりにPostKeybdMessageでアプリを直接指定して送りたいのですが、 FindWindowでとったハンドルを指定してもそこに送れてないし、 ハンドルを-1にしても、ASCII文字しか送れていないようです。 文字ではなくF1とかの仮想キーを、指定したアプリに送ることって出来ますか?
普通にSendMessageでWM_KEYDOWNじゃだめなのか? フォアグラウンドなんて関係ないっしょ
どこがC#の質問かと 百歩譲ってどこが.NETの質問かと Win32APIスレで聞け
646 :
642 :2006/07/31(月) 15:16:41
>643 なるほど、やってみます まだググって片っ端から試してみてる程度のレベルなので・・・ >644 うへ、これは別人ですけど このタイミングじゃどう思われても仕方ないですね・・・orz >645 コード自体はC#で書いてますけど、 改めてカキコ見直してみたら、確かにC#も何も関係ないですね スレ違い申し訳ない
キー送りたいという質問自体はよくあること
俺もよくやること
ダサいよなぁ。
651 :
632 :2006/08/01(火) 02:01:02
>>633-635 お答えありがとうございます。
なるほど、イベント登録がデフォなんですね。
子フォームにコントロールを追加していくと
勝手にイベントが追加されるのに、さらに
書かないと行けないのはめんどくさいなぁ・・・
http://sewig.jp/diary/?date=20060624 ↑のコードを元に以下のようなコードを書いたのですが、
unsafe public void Wave_generation(double f)
{
try
{
short* wave_data = stackalloc short[44100];
double dr = 2 * Math.PI / (44100.0 / f);
for (int t = 0; t < 11025; t++)
{
*(wave_data + t) = (short)(Math.Sin(dr * t) * 32767);
}
(中略)
wt.dwFlags = 1;
wt.dwLoops = 1;
wt.dwBytesRecorded = 0;
wt.dwUser = 0;
wt.lpNext = null;
wt.reserved = 0;
windows.waveOutPrepareHeader(hWOut, &wt, (uint)sizeof(wavehdr_tag));
windows.waveOutWrite(hWOut, &wt, (uint)sizeof(wavehdr_tag));
Thread.Sleep(300);
windows.waveOutClose(hWOut);
}
catch { }
}
このコードを連続実行するとtry〜catchで括っているにもかかわらず、何も言わずに
プログラム本体が落ちてしまいます。
これを回避するにはどうしたらいいでしょうか?
>>652 [ツッコミを入れる]
ツッコミ・コメントがあればどうぞ! E-mailアドレスは公開されません。
交流してやれよ
自分のコントロールでマウスをキャプチャするにはControl.Capture = true; とすればいいんですが、 キャプチャしているコントロールを取得するにはどうしたらよいのでしょうか?
MSDNライブラリの「Control.Capture プロパティ」の使用例のところにあるけど
>自分のコントロールでマウスをキャプチャするにはControl.Capture = true; とすればいいんですが、 本当か?
657 :
654 :2006/08/01(火) 20:24:34
>>655 使用例は「特定のコントロールがキャプチャしたとき」を判断するサンプルですよね。
>>656 失礼しました。Control.Captureプロパティを true に設定する、と言いたかったのです。
658 :
デフォルトの名無しさん :2006/08/02(水) 10:18:36
Control.Captureプロパティは読み込み専用ジャマイカ。
659 :
654 :2006/08/02(水) 18:56:42
>>658 いえ、そんなことはないはずです。
どうも無理なのですかね。
あきらめてP/Invokeでやることにします。
Form から Controls を再帰的に探していけば見つかりそうだが。
object obj = 1; int i = (int)obj; これは成功するのに IntPtr p = (IntPtr)obj; だと例外でるのはなんで? IntPtr p = (IntPtr)(int)obj; ってしなきゃいけないの?
数値リテラルは明示しなかった場合 int IntPtr じゃなくて long でも InvalidCastException だぜ
>>662 >>663 ありがとう
>互換性のない値型への参照をボックス化解除しようとすると、
>InvalidCastException が発生します。
ってことは、int と IntPtr は「互換性のない値型」ってこと?
(IntPtr)i
はできるのに?
>>664 だってObjectの中身が具体的に何かなんて知ったこっちゃないし。
IntPtr は Int32 からの型変換は定義してるけど Object からの型変換は定義していない
[Category("カテゴリ名")]のカテゴリ名一覧が知りたいんですが、どこかに載ってませんか?
ヘルプに載ってね?
671 :
668 :2006/08/04(金) 15:30:38
探したりなかったようで申し訳ない。
>>670 thx
C#で日付の差分をとる方法を教えてください。 VBでいうdatediffのようなものです。 宜しくお願いします。
TimeSpan span = date2 - date1;
>>672 C#にそういう機能はない
.NET Frameworkを使うしかない
∧_∧ / ̄ ̄ ̄ ̄ ̄ (ω・ )ゝ < なんだって? ノ/ / \_____ ノ ̄ゝ
.NET FrameworkもC#で実装されてる
,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;; {;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; ヾ;;;ハ ノ .::!lリ;;r゙ `Z;i 〈.,_..,. ノ;;;;;;;;> そんなふうに考えていた時期が ,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f. 俺にもありました ~''戈ヽ `二´ r'´:::. `!
ボクはVBer♪
axWindowsMediaPlayerを使ったプログラムを組んでいるのですが、 再生が終了したのを検出するにはどうしたらよいでしょうか? EndOfStreamイベントで検出出来るかどうか試したのですが、 検出できませんでした。 よろしくお願いします。
>>681 WMPPlayState.wmppsMediaEnded
>>682 うまく検出できました。
ありがとうございました。
684 :
デフォルトの名無しさん :2006/08/13(日) 12:18:25
ものっすごい見当違いな質問かもしれません。 Form1.csのイベントハンドラから、外部クラスのmethodに値を渡し、 そのmethod内で処理した結果をReturnで返すようにしているのですが、 それを受け取ってみてもフォームに反映されないのです。(正確には、反映はされる事があっても、その方法ではGUIがフリーズしてしまう) 外部クラスのmethodというのは、接続先とPortを渡されたら、TcpClientで接続し、ストリームから通信結果を受け取って、 stringとして格納していき、それをReturnするものです。 スレッドを使ってみたり、デリゲートを利用してみたり、backGroundWorkerを触ってみたりしたのですが、 どれも既にあるクラスをそのまま利用するというわけにはいかず、外部クラス内に手を入れなければいけないような感じですし… おそらく根本的に考えかたというか、GUIプログラミングの定石のようなものが理解出来てないせいだと思うのですが、 なかなか取っ掛かりが見えてきません…。 呼ばれたら一連の動作を実行して結果を返し、その結果をForm1.cs側で受け取ってUIに反映させるという流れで間違ってますでしょうか?
>>684 その方法で良いともうけど、なにが出来ていないのかよく分からない。
とりあえず、returnは止めて、Form1にstringを受け取れるフィールドとプロパティを作って、
そちらに送って、Form1で処理してみては?
要するにそのメソッドは同期的にある程度長い時間を食うものであると。 同期的なら当然そのメソッドを処理しているあいだ他の事ができないわけで、 この他の事というのに画面の再描画とかも含まれるから応答無しになるわけだな。 で、それを回避するには当然何らかの手法で別スレッドで処理させる必要がある。 .NET 2.0 なら BackgroundWorker だな。 で、何が分からないんだ?
>>686 普通にdelegateの非同期実行でええやん。
>>687 初心者は絶対 GUI とのやりとりでハマる。
逆にスレッドを使ってるせいでハングアップしてるんじゃないのかな? GUIを管理しているスレッド以外からはGUIの更新は直接は出来ない。Control.Invoke メソッドを参照。
>>688 はいはい、3組のパソコン博士君にはかなわないよ。
>>686 ,687
BackgroundWorker使ってみたと書いてあるやん。
デバックなら例外でるけど、 リリースバージョンならでないんじなかったっけ?
>>684 そのプログラムをどっかのアップローダに上げてみた方が解決は早いと思うよ。
695 :
デフォルトの名無しさん :2006/08/13(日) 12:40:16
>>685-686 そこまでが正しい考え方であるということは…。
別スレッドで処理した結果の受け取り方が鬼門になっていると言う事になるのですかね…多分ですが。
backGroundWorkerが一番手軽そうでしたので、それを例にして。
例えば、
string log;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Class1 cs1 = new Class1();
log += cs1.connect();
}
のようにDoWorkで外部クラスのメソッドを呼んで、結果をForm1.cs(public partial class Form1 : Form)の、
string log;に入れるようにして、
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
richTextBox1.Text += log;
}
という感じでスレッド側での処理が終わった時に通信結果を表示したいのですが、一向にフォームが書き換わる気配が無く…。
フォーム云々以前に値は帰って来てるのかい?
697 :
デフォルトの名無しさん :2006/08/13(日) 12:48:55
>>696 それがどうも、ブレークポイントを log += cs1.connect();の場所に仕掛けてみても、当然のようにlogはまだ何も入っていない状態で、
さらに、backgroundWorker1_RunWorkerCompletedのrichTextBox1.Text = log;にもブレークポイントを仕掛けてみたのですが
そちらは引っ掛かりもせずです。
ブレークポイントいれるなら log += cs1.connect();の次の行か閉じ括弧に。 それでブレークしないなら connect()でそっちのスレッドから返ってきてないんじゃ
まずシングルスレッドで Connect メソッドが成功するのかどうかから確認した方が良い気がする
日付型から和暦の年を最低1桁で取り出そうと思っています しかしこのコードだと1桁の和暦ではなく、例えば「平成 9年6月」という文字列が返ってきます この中の 9 という値だけが欲しいのですが、どうすればいいのでしょうか CultureInfo culture = new CultureInfo("ja-JP", true); culture.DateTimeFormat.Calendar = new JapaneseCalendar(); Label2.Text = date.ToString("y", culture); string.Format(culture, "{0:y}", date) でもだめでした ご存知の方教えてください
DION規制に引っ掛かってしまってレスが返せませんでした…orz
で、
>>698 氏の通りにブレークポイント位置を変えてみたら、
どうやら、DoWorkのlog += cs1.connect();で、logにはちゃんと結果が入ってる事が確認できました!
このブレークポイントの掛け方を知る事ができただけでも、かなり感謝です。
しかし、RunWorkerCompletedの方は、閉じ括弧のブレークポイントですら引っ掛からないので、
こちらは恐らく、使い方そのものがまずい悪寒。IRC等のチャットアプリケーション(通信を常に開いているようなもの)では、
TCPClientでの通信は避けて、Socketで非同期に通信するべきですかね…。
なにはともあれ、ありがとう御座いました。もすこし色々やってみます。
>>700 JapaneseCalendar cal = new JapaneseCalendar();
Label2.Text = cal.GetYear(date).ToString();
ちなみに書式指定は"%y"
703 :
デフォルトの名無しさん :2006/08/15(火) 13:50:55
IpcChannel を使ったアプリを WindowsMe で動かそうとすると PlatformNotSupportedException が出ます。 Me では使えないんでしょうか。
704 :
デフォルトの名無しさん :2006/08/16(水) 10:33:32
C#相談室から誘導されてきました リストビューからIEのお気に入りのショートカット(.url)をクリックして axWebBrowser1に表示させたいのですが、「ファイルのダウンロード-セキュリティの警告」 という画面が出て直接表示されません。 「開く」を押すと新しいIEが開いてそこに表示されてしまいます。 これをセキュリティ警告を出さず、直接表示させるにはどのようにすれば良いでしょうか。 お願いします。
>>704 URLファイルからURLを取ってきてWebBrowserのNavigateに放り込めいいじゃない
>>704 urlファイルからどうやってリンク先を取得してんの?
C#からやると結構面倒だけど。
ShellLinkObjectクラスとIShellLinkWインターフェイス実装してるの?
それともShell32を参照に追加?
urlファイルの中身は単なるiniファイルですが何か
知らんかった
709 :
704 :2006/08/16(水) 11:06:40
>>705-708 ありがとうございます。
>>705 URLの取り方はStreamReaderでurlファイルから読み込めばいいのでしょうか?
それとも日付とかサイズ取得するみたいになんか簡単に取得できるのかな
>>706 リンク先の取得をせずに直接ショートカット(URLファイル)にアクセスしています
>>709 url ファイル (下のは2chへのリンク) の中身をダンプするとこんな感じ (
>>707 の通り単なる ini ファイル)
[InternetShortcut]
URL=
http://2ch.net/ Modified=606955AF07C1C6015C
// だからかなり処理を省くとこんな感じのコードで読める。 (全角スペース → タブ / 未テスト)
StreamReader reader = new StreamReader("link.url");
string url = null;
string line;
while ((line = reader.ReadLine()) != null)
{
if (line.StartsWith("URL="))
{
url = line.Substring(4);
break;
}
}
もちろんWin32API を使って ini を読むのもアリ。
#
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/INIfile.aspx
Componentクラスの上にSqlConnectionとか置いておいたら ComponentクラスがDisposeされるときにに一緒にDisposeされる もんだと思ってたんだけど違うようだと気付いた あれは一個一個if (this.sqlConnection1 != null)sqlConnection1.Dispose みたいにやっていかないといけないの?
>>711 君がComponentクラスと呼んでるものが、
> System.ComponentModel.IContainer components = new System.ComponentModel.Container();
これのContainerクラスのことなら、これにAddされたコンポーネントは
componentsをDisposeすれば連鎖的にDisposeされる。個別にDisposeする必要はない。
>>710 横からですが、この
Modified=606955AF07C1C6015C
ってのはどういう値なんでしょうか?
>>713 epocのミリ秒版とかそんなんでしょう。
715 :
704 :2006/08/17(木) 02:17:21
>>710 さんのソースでやりたいことができました。ありがとうございます。
あとでWin32APIを使った方法も試してみたいと思います。
ありがとう。
C#相談室で回答を貰えなかったのでこちらでも質問させてください。 DataGridViewで列毎にCharacterCasingを設定することは可能なのでしょうか? 可能なら設定の仕方を教えてください
>>716 ぅぉ-ありがとう。
なぜにMSのサイトに載ってないんだろ。
>>719 うるせーバカ
わかんねんだろ?
もうどうでもいいよ!
721 :
デフォルトの名無しさん :2006/08/17(木) 21:35:15
プログラム初心者です。 C#相談室でこちらに行けといわれました。。。 掲示板の質問も取り消せないほどの初心者です。 WinCEでプログラムを走らせているのですが、 その時の文字のエンコードをUnicodeに変更しなくてはいけません。 Shift_JISからの変更だったので下のようなプログラムを書いて見ました。 StringBuilder _DataArry; string DataArry = _DataArry.Tostring(); byte[] test = Encoding.Unicode.GetBytes(DataArry); DataArry = Encoding.Unicode.Getstring(test); しかし、ビルドをすると 引数を'1'個指定できる、メソッド'GetString'のオーバーロードはありません。 とエラーが出てしまいます。 すみませんが、どなたか教えていただけませんか?
>>721 なぜコンパイルエラーが出るかといえば、
GetstringがVirtualだから。
やるとするなら
UnicodeEncoding unicode = new UnicodeEncoding();
unicode.GetString(buffer);
だけどそのコード意味ないよ。
#
>>721 じゃないけど。
>>721 を補足すると、
Encoding.GetString(byte[]) はWinCEじゃサポートされてないから、
Encoding.GetString(byte[], int, int) を使えって話ね。
この場合は、
Encoding.Unicode.GetString(test, 0, test.Length);
かな。ただsjis からだと前の行も
byte[] test = (new Encoding(932)).GetBytes(DataArry);
って変更が必要。
もっと単純な話じゃないの? >.NET Compact Framework によってサポートされています。 と書いてあるのはこの書式だけ。 >Encoding.GetString (Byte[], Int32, Int32)
726 :
724 :2006/08/17(木) 21:51:05
間違えた。こっちか。 byte[] test = Encoding.GetEncoding(932).GetBytes(DataArry);
>>712 いや、単にSystem.ComponentModel.Componentを継承しただけのクラスです
(メニューの「コンポーネントの作成」で作られるやつ)
なんかデザイナ上でSqlConnectionとか貼れるから、Disposeまで自動で
してくれるのかと思ったんだけど、実際Disposedイベントを監視してみると
自動ではDisposeされない、と最近知ったという、だめぽな俺。
よく見るとSqlConnectionのコンストラクタにIContainerを受け取るのが無いし。
自分で全部IContainerにAddしとけば? Disposing(bool)をオーバーライドしてまとめてDispose
Form1のDataGridViewをダブルクリックした時に Form2を開きDataGridの選択された行の内容をTextBoxに表示したいのですが TextBoxに表示する方法がわかりません どうすればいいのでしょうか?
DataGridView dgView=new DataGridView(); TextBox tb=new TextBox(); tb.Text=dgView.ToString();
DataGridViewをpublicにするなり Form1にpublic staticなフィールドもってそこにいれておくなり Form1にプロパティつくってForm2で読むなり Form2のコンストラクタに行の内容渡すなり お好きな方法でどうぞ
>>731 それのやり方がわからないので聞いたのですが?
どの方法かわかりませんが自己解決しました
ここは役に立たないインターネットですねw
/\___/\ / / ヽ ::: \ | (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ,,ノ(、_, )ヽ、,, | < まーた始まった | ,;‐=‐ヽ .:::::| \_______ \ `ニニ´ .:::/ /`ー‐--‐‐―´´\
「何となくだけどできちゃった。俺SUGEEEEE!!!」 は解決したとはいわない。 っていうかぶっちゃけ危険分子。
>>734 そういうことばっかり言って・・・
ちゃんと教えてくれないくせに・・・
本当に意地悪っ子だね・・・
×役に立たない ○レベルが高すぎて理解できない
737 :
デフォルトの名無しさん :2006/08/19(土) 12:02:17
用はソースコードを示さないと理解できないんだろうが、 情報が与えられていない以上あれ以上の教え方ができるやつはどこに行ってもいない
publicとstaticの説明からはじめろってことだろw
>>737 そうそう。コードないとわからないのよ。
で、あれ以上の教え方を得るためにはどのような情報を与えてやればいいんだ?
しっかし、質問しても人湧いてこないのに
少し煽るとわらわら湧いてくるんだなw
740 :
デフォルトの名無しさん :2006/08/19(土) 12:18:00
>>739 環境からやりたいことからプロジェクト名か何から何まで
思いつくもの全部書け
それでたりなかったら無理。あきらめろ。どこいってもだめ
ちなみに女子高生です
742 :
デフォルトの名無しさん :2006/08/19(土) 12:29:58
俺は年齢一桁が専門です
うわっ、キモ
ちなみにすぐ下の妹が女子中学生で、一番下の妹が年齢一桁です
住民票うp
>>739 必要な情報はあれだけで十分。あとは理解しなさい。
個人的には public string プロパティを Form2 に作るが。
それともプロパティの作り方から教えなきゃダメか?
748 :
デフォルトの名無しさん :2006/08/19(土) 12:44:49
>>747 そういう方法じゃなくて答えをもらわないといけないんだと
プロぐれマートしてはさいくあのにんげん
プロパティってなんですか?
>>747 いや、その方法で自己解決したので結構です
こういう流れのときはこの板にIDがあったらといつも思う
おまんこ
MSDataSetGeneratorを用いて <DataSet> <Table1> <name></name> </DataSet>
755 :
754 :2006/08/19(土) 19:52:14
ごめん間違えた、MSDataSetGeneratorで、 入れ子になったDataTableを作りたいんですがどうすればいいのでしょう? <dataSet> <table1> <name></name> <tables> <table2> <data></data> </table2> </tables> </table1> </dataSet>
まずは雛形的に簡単な DataSet 作ってそいつのスキーマ取得してみたらどうだ。
Visual C# 2005 Express Edition で質問です オプション → キーボード の「次の追加キーボード マップ スキーム を適用」に (既定) 以外がありません。 何か特別なことをしないと駄目なのでしょうか?
Standardを買ってください
760 :
757 :2006/08/20(日) 15:18:55
しまった orz こんなこと書かれてた orz (例えば Visual C# 単体をインストールしただけでは「既定」しか選択できません。 Visual C++ をインストールすると,Visual C# でも「既定」に加えてテキスト エディタ「Brief」と「Emacs」の操作方法を選択できるようになります)
using (A a = new A()) { ... } このとき、Aのコンストラクタで発生した例外をcatchするには、 usingブロック全体をtryブロックでくくらないといけないのですか?
>>762 using ブロックで例外を catch できるとでも思ってるの?
正直そう言う構文は有りだったとも思う。 using ( ... ) { ... } catch (HogeException ex) { } みたいなの。 そのうち採用してくれんかな。
あー、でも using ステートメントで宣言した変数のスコープの問題もあるか……。
766 :
762 :2006/08/20(日) 19:06:24
try using (StreamReader reader = new StreamReader(path)) { ... }
767 :
762 :2006/08/20(日) 19:10:43
すみません。 try { using (StreamReader reader = new StreamReader(path)) { ... } } catch (FileNotFoundException) { ... } みたいなことをするなら、はじめからusingを使わずにfinallyを使ったほうが 見た目がきれいなのではないかと思ったからです。 usingを使うようなクラスは、コンストラクタで例外を投げるものが多いように感じますし
FileNotFoundException なら先にファイルの存在をチェックしろといいたい
>>768 その理屈はおかしいよ。
存在チェックした後実際に触るまでのあいだに削除される可能性は常に考慮してないと行けない。
事前に存在チェックするのも大事だけど。
770 :
デフォルトの名無しさん :2006/08/20(日) 23:56:48
タブブラウザを作るときってaxwebbrowserをいくつも作るんですか? なんか違うと思うのですがどのように実装するのか分かりません。 ヒント頂ければ幸いです。
そのコントロールを使うかどうかは自由だが IEコンポーネントはタブの数だけ必要だろ
772 :
770 :2006/08/21(月) 00:06:37
>>771 タブだけ別に用意して、タブが切り替わったら axWebBrowser の中身を入れ替えるというのも
アリといえばアリ。
774 :
770 :2006/08/21(月) 00:21:06
>>773 そっちで想像していました。普通にいくつも作ればいいみたいですね。
ありがとうございました。
>>773 いや、なしだと思うぞ…
そんなブラウザ使えねーだろ…
質問です。 try-catch文でcatch出来ない例外や、catchし損ねた例外が発生した際、エラーログを出力するメソッドなどはありますか? また、そのメソッドがない場合、例外が発生した時に発生するイベントを自作することは出来ますか?
セキュリティとかステートとか履歴とかスクリプト処理とかゾーンとかあらゆることが無茶苦茶になるわな
ASP.NETならApplication_Error WindowsフォームならThreadExceptionとかUnhandledExceptionEventHandlerとか 「未処理の例外」でぐぐれ
780 :
776 :2006/08/22(火) 01:48:09
>>778 ヒントを元にググったら何とか目的が達成できました。
ありがとうございました。
ToolStripComboBoxには普通のComboBoxのように DataSource、DisplayMember、ValueMember等の設定は出来ないのでしょうか?
ToolStripComboBox.ComboBox プロパティ
日付や結果などのログを表示するのに ListViewの詳細表示とDataGridViewのどっちを使う方が良いと思いますか?
ログがDBやDataTableに格納されているならバインドが楽なDataGridView ログがリアルタイムに発生して単にコントロールに追記するだけならListViewで十分 軽さを求めるならListView アイコンを手軽に使いたいならListView その他判断基準は色々ある 自分で両方試して目的に合う方を使うのがおすすめ 比較することでそれぞれの特性も理解できるし
787 :
785 :2006/08/24(木) 03:33:17
>>786 目的的にはListViewで十分そうですが
せっかくですので今後の勉強のためにも
両方使ってみることにします
ありがとうございました
メインフォームから別のフォームを呼び出すときに、 データを渡して内容を変更したいのですが、 どうしたら良いのでしょうか?
別のフォームとやらにデータ渡し用のpublicなメソッドを実装して、そこ経由で渡す 渡すだけじゃなく参照もしたいならプロパティで実装すれば良い
[System.Windows.Forms.Design.ToolStripItemDesignerAvailability (System.Windows.Forms.Design.ToolStripItemDesignerAvailability.ToolStrip)] public class ToolStripDateTimePicker : ToolStripControlHost { public ToolStripDateTimePicker() : base(new DateTimePicker()) { } } のコードを記載してデザイナでDateTimePickerを追加したいのですが 追加をすると一瞬表示されるのですが消えてしまいます。 理由わかりますか? 同じコードでnumericUpDownとかMonthCalenderとかは表示できるのですが・・・
791 :
790 :2006/08/25(金) 11:49:41
どなたかお解かりになる方いらっしゃいませんか?orz
>>791 public ToolStripDateTimePicker()
: base( new DateTimePicker() )
{
this.Control.CreateControl();
}
で表示されたけど
>>792 表示されました!!
本当にありがとうございました!
794 :
790 :2006/08/25(金) 12:51:30
なんどもすみません・・・orz DateTimePickerは表示できたのですが、そのFormatの設定の仕方が分かりません・・・ 設定の仕方を教えて頂けないでしょうか?
InitializeComponent()の後で DateTimePicker dp = (DateTimePicker)this.toolStripDateTimePicker1.Control; dp.Format = DateTimePickerFormat.Custom; dp.CustomFormat = "yy/M/d/ddd"; など。
あと、ToolStripDateTimePickerクラスの定義で public DateTimePicker DateTimePicker { get { return (DateTimePicker)base.Control; } } みたいにプロパティでDateTimePicker にアクセスできるようにしておくと吉
HttpWebRequest を並列化するために、BeginGetResponse じゃなくて Thread + GetResponse で構成するのって邪道なんですか? なんか別々の URL にアクセスしたはずなのに、全く同じレスポンスが返ってきたっぽいんですが (;´Д`) 並列系のバグは再現性がなくて困るよ orz
べつに自前でスレッド使ってもいいと思うぜ。 でも俺はそんなバグに出会ったことはない。 なにか間違ってるんだと思うよ。
じぶんならMSの実装なんか当てにしないで別スレッドにしますが。
それもMSの実装だろ
いうと思った。
それなら.NET FrameworkやWindowsも(略
質問です。 プログラムAからプログラムBを起動するメソッドを書いていたのですが、 プログラムAにドロップされたファイルをプログラムBに渡すにはどうしたらいいでしょうか? 試しに以下のようなコードを書いてみましたが、プログラムBには渡せていませんでした。 private void Form1_Load(object sender, EventArgs e) { string file = ""; bool first = false; string[] args = Environment.GetCommandLineArgs(); foreach (string work in args) { if (first) file = work; else first = true; } Process p = Process.Start(testprogram.exe,file); p.WaitForExit(); } //テストプログラム側 private void Form1_Load(object sender, EventArgs e) { string[] args = Environment.GetCommandLineArgs(); foreach (string work in args) MessageBox.Show(work); }
突っ込みどころが多すぎて
806 :
804 :2006/08/26(土) 21:15:37
修正 起動するメソッドを→Form_Load時に起動するコード ドロップされたファイル→ドロップされたファイルのパス
>>799 いや、明らかな間違いはないと思う。
今までに何十回とテスト飛ばしているけど、1件しか発生してないし。
というより、別々のオブジェクトからリクエスト飛ばしているから、
共有オブジェクトは全部洗い出して、そういうのは自前のソース中に無いらしいことは確認しているからなぁ……。
むしろ、そういう簡単な間違いであって欲しかったんだけど orz
>>804 引数fileに空白が入ってると
複数の引数と認識される
ようするにダブルクォーテーションで括れってこった
ついでにそれだと複数ファイルをドロップしたときはどうすんの?
>>804 最初の foreach ループは何をしたいの?
GetCommandLineArgsで返ってくる配列の最初は自身のパスだから それを飛ばしてるみたいですよw
>>808 file = work;
のところを
file += "\"" + work + "\" ";
とすると複数ファイルでもうまくいきました。
ありがとうございました。
>>809 ,810
例文の
file = work;
が+=じゃなくて=だけだったから変な風に見えたのかもしれません。
それでも最初のは十分おかしいのかもしれませんが…
>>811 >>804 の書き方だと string file = args[args.length-1]; と同じことになるよ。
2番目以降の要素を結合したいんだったら
for (int i = 1; i < args.length; ++i) { file += "\"" + args[i] + "\" "; }
とすればいい。
得体の知れないフラグを導入する必要はない。
すみません。Yahooに自動でログインさせるメソッドを作っているのですが、(1)のあと
表示するのを待ってから(2)以降を実行させたいのですがどのようにすればいいのですか?
public void Login()
{
webBrowser1.Navigate("
http://login.yahoo.co.jp/config/login?.src=www&.done= http://www.yahoo.co.jp "); //(1)
HtmlDocument doc = webBrowser1.Document; //(2)
doc.GetElementById("login").InnerText = "ユーザーID";
doc.GetElementById("passwd").InnerText = "パスワード";
doc.GetElementById(".save").InvokeMember("Click");
}
DocumentCompleted とかのイベント使えば
815 :
デフォルトの名無しさん :2006/08/28(月) 06:17:33
WebBrowserであるwebサイトを表示 ↓ webページのリンクをクリック ↓ IEが開いてリンク先のページが開く このことを検出したいのですが WebBrowser.Navigatingを使えばできるんでしょうか?
Form1のDateTimePickerの日付をAccessのReportのTextBoxに表示して印刷したいのですが方法が分かりません どのようにすればよろしいのでしょうか?
そのまんま一つ一つやっていけば
あぁ、すみません。 印刷は出来るのですが、ReportのTextBoxに値を設定する方法がわかりません。 Accessを開いた後に何かをすればよろしいのでしょうか?
oleAccess.Reports!(ReportName)![テキスト1].ControlSource = "=111"をC#にするとどういう風になるんでしょうか?
Access知らんけど Accessを参照設定してるなら インテリポイントでなんか出てくるっしょ
>>819 ((Microsoft.Office.Interop.Access.TextBox)oleAccess.Reports[ReportName].Controls["テキスト1"]).ControlSource = "=111";
埋め込みリソースから取り出したexeをファイルとして書き出さずに MemoryStreamなどから起動する方法はないでしょうか?
ない
テキストボックスの書式って、どうやって設定すんの?
つMaskedTextBox
>>826 桁区切りを表示したいだけなんだよなー
データーを読み込むたびに書式設定してやれば出来るんだけど
もっと簡単にテキストボックス自体に書式設定できないのかなーと
簡単には出来ないんだね。ありがと
ドラッグ&ドロップされたテキストファイル名をTextBoxに表示するって難しい? 極意の本にも載ってないしアロウドロップtrueにしてもうまく行かない
>>829 はやい!!ありがとうございます!今から見てきますね
感謝
831 :
828 :2006/08/31(木) 21:38:45
エラー1名前 'ListBox1' は現在のコンテキスト内に存在しません。 なんて出ました。なんでだろ? DragEnterの方は正常に動いたのに ListBox1.Items.AddRange(fileName);のトコでエラーになります・・・
ちなみに namespace study1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void listBox1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy; else e.Effect = DragDropEffects.None; } private void listBox1_DragDrop(object sender, DragEventArgs e) { string[] fileName = (string[]) e.Data.GetData(DataFormats.FileDrop, false); ListBox1.Items.AddRange(fileName); } } } こんなです。
*** サンプルコードは、自分の作っているプログラムに即するように変更すること *** TextBox に表示するんなら、変数名が TextBox1 だとすると TextBox1.Text = fileName + "\n"; に変えなさいな ListBox1 を作ったのならばこのとおりじゃないけど。
まちげーた TextBox1.Text += filename + "\n"; これでおk
ListBox1 じゃなくて listBox1 じゃねえのか?
ありがとうございます。一応フォームにはリストボックスを貼り付けました。 どこか根本的な間違いを犯していると思います。 指摘お願いします。
あ、すみません。2005EXPRESS EDITIONです
>>836 D&Dの仕方を学ぶより、先ずはC#の基本を学びましょう。
ちなみに、煽りじゃなくて切実に言ってますんで (・ω・`)
>>836 コンパイルエラーのでた箇所が表示されてるだろうが。
そこで波線を付けてくれた部分をよく見ろ
>>838 そうですよね。判ります・・・
本も何冊か買ったんですけどクラスとか構造体とかよくわからなくて・・
んでサンプルをコピペ改変して遊ぶうちに見えてくるかなぁと
なんかお勧め本とかありませんか?お願いします
真剣に覚える気はあります
>>841 こんな感じですじゃなくて。
変数名は大文字小文字を区別します。
↑こんなことまで言わせるつもり?
´∀`)σ)´Д`;)
>>844 ま、基本は大事ですよーと (・ω・`)
昔を思い出すなぁ。
java の話だけど、int と Integer の違いがさぱーり分からなかったとか ( ´ー`)y-~~
847 :
844 :2006/08/31(木) 22:45:00
>>845 >>846 なんかム板は怖いとこだと感じてましたがココは優しい人が多いですね
デバッグ出来ましたが動作は成功しませんでしたなんて言えません・・・orz
教えて頂いたサイトで勉強します
またなんか判らなかったら宜しくお願いします
でもみんな良くこんな難しいことできるよなぁ・・・・・
>>847 ちゃんと貼り付けたlistBox1にDragEnterイベントとDragDropイベントを設定した?
>>832 のコード貼り付けただけじゃ駄目だよ
>>847 >ココは優しい人が多い
たまたまかもねー。
確かにム板は初心者にはきつい所もあるけど、尻込みせずに気楽にどうぞ。
プログラムは 【慣れ】 が重要だから、練習あるのみ、かな?
気づいたら何となく出来るようになってます。はい。
>>848 はい。プロパティのイベント(雷マーク)ですよね?
だとしたらOKです。そしてそこをダブルクリックしてコードエディタで埋め込みました。
これって変ですか?
>>849 わたしもバッチ、WSHとサンプル弄くりたおして覚えたクチでして・・・
でも今回ばかりはそうはいかないみたいです(笑)
ああああああああああ!判った!!
分かったんかよw
出来ました!!! 原因はフォームエディタでForm1のプロパティにイベント設定してました・・・・・orz アフォですね。アフォすぎますね・・(´Д`;) ポインタはプラスマークに勝手になるんじゃないんですね。設定の仕方は本に載ってました あああああ!なんかすごい嬉しい。こんな程度の事ですけど 本当にありがとうございました。これからも宜しくお願いします
あ、プラスマークになりますね。 もう、付き合ってられないですよね(笑) では、おやすみなさい
×ポインタ 〇カーソル 「ポインタ」はプログラムの話をするときは別の意味がある
856 :
854 :2006/09/01(金) 20:42:57
>>855 ひょっとして有名なぬるぽの「ぽ」ですか?
明日も会社にこっそり行ってC#勉強してきます!
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | unsafeを感知しました | |__________| / / / _ ビビビ /||__|∧ / 。.|.(O´∀`) / |≡( )) ))つ `ー| | | (__)_)
/unsafe+
ToolBar、アイコンの横にテキストを配置している状態で、ボタンごとにサイズを変えることは出来ないのですか? なんか全部同じ大きさにそろってしまうのですが……。
C#でテキストエディタを作ろうと思い、まずテキストビューワーを作っています。 タブや全角スペースに色をつけるため、DrawStringで一文字づつ表示をしているの ですが、実行速度が非常に遅いです。 TextOutなども試してみましたが、あまり変わりませんでした。 なにか良い方法はないのでしょうか?
改行ごとに分けた string をリストとかにぶち込むといった前処理はしているよな
まともなエディタ作りたいなら少なくとも今のところはネイティブな C++ で書くべきだがね。 ダブルバッファリングはしてるかい?
>>860 unsafeでポインタを使うといいかもしれない。
>>863 やはり、C++でやるべきですか…
描画をpictureBoxで行っているので、デフォルトでダブルバッファリングをしている
と思うのですが…
>>864 すでにやってみましたが、あまり大きな変化はありませんでした。
[1] picturebox 使わない [2] 画面外の文字はそもそも DrawString しない どう?
>>865 画像処理とか、計算とかのピーキーなチューニングが効果的な処理ならともかく、
GUI周りの処理で、C#をC++にしたところで、速度に実効的な差はでない。
「何で」書くかではなく「何を」書くかで決まる。
GDIリソースの取得タイミングとか、
>>866 の言ってるような、クリッピング処理とか、バッファリング処理とか。
何が重い処理なのかを体感して、その重い処理の実行回数を減らすアルゴリズム
を考える。
>何が重い処理なのかを体感して 「計測して」だろが。C#用のまともなプロファイラあるのかしらないが。
C#というよりWin32/64アプリとしての計測になるかと ユーザは言語やフレームワークなんて関係ないから
RichTextBox
>>867 いや、基本的に GDI+ を使う事になる .NET は GUI コンポーネント制作には向かんよ。
ヒント:Swing
VGAカードが正式にGDI+をサポートするようになったら考えてもいいな。
空白のテキストボックスをemptyじゃなくてnullにしたいんですけど どうすれば出来ますか?
意味が分からん
TextBox.Textはnullにはできません。 継承元のControl.Textが set { if (value == null) { value = ""; } ... } みたいにしてた記憶がありんこ
>>876 nullには出来ないのですね・・・残念です。
バインドしているデータなのでデータグリッドのセルやデーターテーブルをnullにして対処します。
ありがとうございました。
テキストボックスをコンテナとして使おうとしてたの?
>>878 コンテナというのが良くわかりませんが
データテーブルの内容をテキストボックスに表示してます。
空白のテキストボックスをデーターベースに戻すと空文字禁止のエラーが出るのでnullにしたかったのです。
描画処理は余計なところは描画しないようにすでにしてありました。 また、pictureBox以外に描画をしましたが余り変わりませんでした。 また、DrawString時に、フォントを常にnewで作っていたのを描画前につくって おくようにしたところ、若干向上が見られました。 C++で作り直すことも含め、まだ速くできないか検討してみます。 多くのご回答ありがとうございました。
>>880 まず1文字ずつ描くよりも、まとめられるところはまとめてやったほうがよいと思う。
あと、Control.WndProcをオーバーライドし、
WM_PAINTを捕まえ、GDIで描くというのはどうだろう。
そこまでやるんだったら、C++(/CLI)にすべきだろうけど。
C#固執で速度だけ求めるならManaged DirectXで描けばいいじゃない
>>882 どの処理に時間を割いているのか、調べる必要があるだろうよ。
あと MDX でもフォントの描画は GDI だな。
BindingNavigatorのボタンを押したときの処理ってのはどんなことをしているのですか? どこかにコードで書いてありますか?
>>885 >処理を実装するコードは一般に公開されていません
そうなんですか・・・。ありがとうございました
昨夜、テキストボックスをnullに出来ないかと相談したものですが データグリッドとかをnullにして出来たと思っていたのですが、いろいろな不具合が出ます ADO.NETでデーターベースはAccessなのですが、Accessで空文字を禁止にしているので 空欄のテキストボックスをアップデートするとエラーが出てしまいます。 こういう場合はどのような処理をするのが一般的なのでしょうか? Accessの空文字を許可するのが一番簡単なのでしょうか?
データベースにテキストボックスから戻すときに Length==0 なら nullを戻せばいいんじゃね?
>>888 行を追加する場合や訂正ごとに更新をする場合はそれで大丈夫っぽいのですが
数行を訂正してから更新する場合にどうすれば良いのか困っています
昨夜悩んでデータグリッドのCellEnterとテキストボックスのkeyPresイベントに
if (String.IsNullOrEmpty(TextBox.Text) == true)
{
this.DataGridView[0, this.DataGridView.CurrentCell.RowIndex].Value = null;
}
を書いて成功した!と喜んだのですが、行の追加をするとエラーが出ることが判明しましたorz
それと、数行を訂正してから更新するとエラーが出たり出なかったりします
もう少し悩んでみます・・・
if(hogehoge == true) って C ではやっちゃいけないし C# でもやるべきじゃねえだろ
>>890 そうなんですか?では==trueは消しますね
後、空文字禁止のAccessの場合の一般的な処理を教えていただけると助かります
なんかBindingSource.EndEdit()をするとnullに設定したものもstring.Emptyにされちゃうみたいですね・・・ 考えられるありとあらゆるところにnullに設定するコード書いてみました・・・ とりあえず大丈夫そうですが本当にこれでいいのか心配です・・・
>>890 よこレス失礼します。
なぜ駄目なのか後学のため、教えてください。
かっこ悪いから。 そういうしきたりだから。 読むときにif (obj.IsHoge)みたいに自然な感じになるから。 ==falseもやめとけ。if (!obj.IsHoge)にする。
ぷっ
C だと非0が true だから
論理型と整数の暗黙変換があるC/C++の場合とそうでないC#の場合は別に考えないと。 論理型の変数や関数は単体で論理式として成り立つので、 簡潔であることをよしとする人は if (hogehoge) を好むが、 if (hogehoge==true) こっちの方が見やすいという人もいる。 どっちにしても最適化でロードモジュールには差は出ないだろう。ただし・・ if ((hoge > 0) == true) これはさすがにやめろといわれる。 if (((hoge > 0) == true) == true) なめとんのか・・・
if( ( ( !( blFlag == true ) == false ) ? false : true ) != false ) { ... }
コンパイルすると == true は消えるよ。Debugでやっても消えた。
まあ、一生 C# で書くつもりなら == true つけてもいいと思うが、 その癖を持ったまま他の言語を使うと失敗することもあるから気をつけな。
if (x)よりもif (x == true)と書くほうがよいと思うなら、 なぜそれよりif ((x == true) == true)と書くほうがよいと思わないのか? なぜそれよりif (((x == true) == true) == true)と書くほうがよいと思わないのか? というのをどこかで見た気がする。
そもそもC#ではif文はboolしか受け付けないので(x == true)と明記する意味がない。 C++なら(x != FALSE)とか書くが。
まあ、なんだ、思うわけねーだろぼけぇ
if ステートメントは true であるか否かを判断するためのものだから == true というのは蛇足
==trueもまたbool値を返してるわけだしな
>>906 確かに蛇足なんだが、ブロックのインデントと同様に、
あくまでも個人のセンス(可読性)に任せるべきだと思う
おそらくコンパイラの吐き出すコードは一緒
可読性は他人も読めるかを問うもの 個人だけならどうでもいいわけで で、そのコードを共有する人々の多数が == true の方が良いというならそれで良いってだけ エラーにも警告にもならない以上は正しいことであり、あとは使う人の問題
C だと TRUE は non 0 だから、== TRUE だと 2 == 1 の比較みたいになりそうで怖い。 true は知らん。
>>903 何か凄い納得。
==trueってのは、数値に無駄に0足してるようなもんなのかな
a = 1 + 2 + 0
はエラーにはならないが「正しい」書き方とは言い難い。
まぁ、一見さんには意味が通りやすいってことだわな。 3a−2b=8 を 3×a−2×b=8 と書けば、確かに分かりやすいけど、慣れると上の方が見やすいことに気がつく。 条件文の中身はtrueを表す『式』を書かなくてはいけない、 って思ってたんで、自分も==を書いてたけど、面倒になって省略した。 誰に対する可読性かを考えて、どちらにするかを決めればいいんでない?
3a-2b ってのは単なる簡略表記であって 3 x a - 2 x b と同じ式だけれども == true ってのは式を評価すると結果として同じにはなれど式としては別の式だよ
式ばかりに目を取られて if ステートメントという大枠を見失っていないか? ifステートメントに限らず、制御構文の意義を理解すれば == true なんて書かなくても見やすいし意味が分かると思うんだが
結論でないんだからどうでもいいじゃん
どうでも良いならレスしたっていいじゃん
917 :
デフォルトの名無しさん :2006/09/06(水) 17:07:12
WebRequestでWEBページを取得したいんですが、
なぜか自分以外のPCへ要求するとタイムアウトが発生してしまいます。
関係あるかわからないけど
[プロジェクト]-[プロパティ]-[セキュリティ]は完全に信頼する・・・にしてます。
try{
WebRequest webReq = HttpWebRequest.Create("
http://yahoo.co.jp ");
webReq.Method = "GET";
webReq.Timeout = 1000;
WebResponse webRes = webReq.GetResponse();
}catch (Exception ex) {
Console.WriteLine(ex.Message);
}
URL間違ってるなw
>>917 .NET Framework クラス ライブラリ
WebRequest クラス のサンプルコード とよく見比べてください。
マルチかよ 教えてやるんじゃなかった。
構成ファイル(*.config)の内容をビルドの種類で変えることってできるのでしょうか? C#のコードであれば #if〜#else〜#endif で制御できるのですが、.configの中は同じ方法でできませんでした 実現する方法をご存知の方、教えてください
>>922 config ファイルをプロジェクトに登録せずに、直接 bin\Release とかに配置する
924 :
デフォルトの名無しさん :2006/09/06(水) 22:55:57
axWebBrowserで作ったブラウザのリンクをクリックすると InternetExplorerが新しく開いてしまうのですが、これを 自作のブラウザで開くようにするにはどうしたらいいでしょうか? お願いします。
>>922 前は構成ごとにビルドイベント作れてそれで別々のファイルをコピーとか出来たと思ったんだが
2005では構成で分けられないみたいだからdebugとreleaseそれぞれに別のファイルを別個でコピーしたら?
926 :
924 :2006/09/06(水) 23:53:52
質問訂正します。
ブラウザをタブブラウザに改造したいのですが、
新しい Window を開く場合にタブブラウザ内で開くにはどうすれば良いでしょうか?
下記に参考になるソースがあったのですが新しいウインドウを開いてタブブラウザで表示する動作に
関する記述がコードのどこにあるか分からなかったので・・
ttp://myanya.ifdef.jp/stb.html
shdocvwでやればNewWindow2ももれなくついてくるけどな
>>926 コメントに「新しいウィンドウを生成しようとしたら」って書いてあるのに…
.NETのありがたみが薄れる
つーかWebBrowser.NewWindow があるような気がするが
932 :
922 :2006/09/07(木) 00:24:24
>>923 >>925 レスありがとうございます
Windowsアプリは教えていただいた方法で対応できました
プロジェクトでの設定と同期しないのが不便ですが、手順書で何とかできそうです
ですが、ASP.NETアプリやWebサービスは Web.config の場所が変えられないために対応できません
こればかりはどうしようもないのでしょうか
934 :
デフォルトの名無しさん :2006/09/07(木) 10:15:50
サイドバーやタスクバーのようにデスクトップにドッキングできるようなフォームは どうすれば実現できるでしょうか。
自力でスナップさせる
938 :
934 :2006/09/07(木) 12:05:31
名前を忘れてしまったorz
940 :
924 :2006/09/07(木) 13:49:32
>>927-
>>931 ,
>>933 ありがとうございます。できました。
AxSHDocVw.AxWebBrowser axWebBrowser = new AxSHDocVw.AxWebBrowser();
e.ppDisp = axWebBrowser.Application;
941 :
934 :2006/09/07(木) 14:19:41
>>936 ,
>>939 なるほど、Win32APIですか。調べてみます。
ありがとうございました。
942 :
924 :2006/09/08(金) 11:45:08
すみません。また質問なのですが、タブページにタイトルを設定したいのですが、
うまくいきません。
例えばヤフーだったらYahoo!JAPANとタブページに表示させたいのですが、
現在のコードではURLがひょうじされてしまいます。
System.Windows.Forms.TabPage tabPage = new System.Windows.Forms.TabPage();
省略
this.tabControl1.Controls.Add(tabPage);
省略
axWebBrowser.TitleChange += new AxSHDocVw.DWebBrowserEvents2_TitleChangeEventHandler( SetTitle );
public void SetTitle( Object sender, AxSHDocVw.DWebBrowserEvents2_TitleChangeEvent e )
{
this.Text = e.text;
}
924のココ↓を参考にしてるんですが自クラスが多くて分からなくて・・・
ttp://myanya.ifdef.jp/stb.html お願いします。
943 :
デフォルトの名無しさん :2006/09/08(金) 11:45:51
あげ
944 :
デフォルトの名無しさん :2006/09/08(金) 11:55:22
perlでいうmapやgrepといったリスト処理を扱うクラスってありますか?
>>889 もう遅いかもしれないけど、DBに書き戻すときに
DBNull.valueを挿入するようにするとうまくいくんじゃないかとおもう。
>>942 よくわからんが
this.Text = e.text;
を
this.Text = this.browser.LocationName;
にしたらどうか。
>>942 >自クラスが多くて分からなくて
って、2つしかclassがないわけだが
>>944 つ System.Text.RegularExpressions.Regex
>>944 .NET2.0ならArrayまたはListクラスのConvertAllメソッドとFindAllメソッドがそれに近いかな
なるほど。逆にいえばそれに相当するものは、2.0じゃないとないということですか。 ご回答ありがとうございました。
ConvertAll や FindAll なら自前で作るのも簡単でしょ ジェネリクスなしだと使い勝手はよくはないけどさ
C#やってる 鬱だ 鬱だ 鬱だー
俺はCで他人が書いたもちふのコードをC++でWinに移植してる。 これは激しく欝だ。
すみません。EXCELのあるセルの文字を置き換えて保存したいんですが 参考になる所をどなたかご存知ないですか? いまから具具ってきます
ExcelのVBAを使ったほうが早いだろ
簡単ではないということですね。 ExcelVBAってわからないんですがC#からExcelシート立ち上げてマクロを動かすってことですか?
順番が逆 ぐぐって見つからなけりゃここで質問してよ
なんか厨ぽいですけど・・・ クリップボードとSENDKEYSでやってみます
馬鹿か! Visual C# で Excel を自動化して、配列による範囲内へのデータ入力 および範囲内からのデータ取得を行う方法
c# excel で検索すればいいものを…
962 :
924 :2006/09/09(土) 02:46:57
できましたーーーーーーーーーーー!!ありがとう!
かなり難しかった。
でもこんな簡単なことだったのか・・・
>>946 >>947 ありがとうございました
963 :
デフォルトの名無しさん :2006/09/09(土) 18:43:02
notifyIconをクリックでtrackBarみたいなのを出したいのですが どうすればいいのでしょうか?イメージはボリューム調整のnotifyIcon?みたいな 感じです。 マウスカーソルの座標取得してtrackBarのLocationを設定したら表示されなかった。
C#でx^2とかってどういう風に書くんでしょう? とりあえず整数乗したいんですが
>>964 1. 素直に x * x
2. 整数乗という制限を無視して Math.Pow(x, 2.0)
バカ Pow だ
Powはしってますが、実装は知らんけれどなんか遅そうな感じが。
>>963 その TrackBar を Form に載っけてないとか言わないだろうな?
>>968 何万回も呼び出すんで無い限り無意味な心配だがね。
まあ整数乗なら簡単にメソッド化できるだろ。
自作してコード量無駄に増やして面倒なことになるよりもよほど早い
大量データのNLogNアルゴなのでパフォ削れるところは削ろうとしてます。 表記ないならしょうがないですね。メソッド作りがてら試してみます。
972 :
963 :2006/09/09(土) 19:43:04
>>969 載っけてなかった・・・
だが、載せても表示されなかったです。
contextmenuをオーナードローするとか・・・?
>>972 のっけてそのFormをShowしたんだろうな?
974 :
963 :2006/09/09(土) 19:59:01
>>973 しました。。。
private void notifyIcon1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
int X = Cursor.Position.X ; // X 座標 の取得
int Y = Cursor.Position.Y ; // Y 座標 の取得
Point pos = new Point(X,Y ) ;
Form3 f3 =new Form3();
f3.Show();
f3.Location = pos;
}
}
int Y = Cursor.Position.Y -100; // Y 座標 の取得 に変えたら動きました とか言ったらぬっころすよ
f3.Location = Cursor.Position; でいいじゃんネー(o´・д・)(・д・`o)ネー とりあえずそのイベントが発火してるかどうか確かめれ
よく見たらCursorなんか使うからおかしい f3.Location = Control.MousePosition; に決まってるじゃんネー(o´・д・)(・д・`o)ネー
Show()する前にLocationやSizeの設定済ませないと
>>978 設定した位置に表示されませんと来る罠
そして Form のメンバを一通り調べろと答える私
980 :
963 :2006/09/09(土) 21:58:43
>>975-
>>979 ありがとう
>>975 int Y = Cursor.Position.Y -100; // Y 座標 の取得
に変えたら動きました
>>976 >>977 >>978 表示されない
でもなんか、表示されるけどタスクバーの後ろに隠れちゃってるんですけど・・・
うめ
982 :
963 :2006/09/10(日) 00:58:17
もれもうめ
埋めてもいいが、次スレは?
986
梅
988
989
990 :
727 :2006/09/14(木) 17:33:08
1ヶ月たってしまいましたが、
>>728 のとおりにしてみます。埋め。
991
992
梅
竹
松
上
特
鶴
亀
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。