C♯, C#相談室 Part35

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C♯, C#相談室 Part34
http://pc8.2ch.net/test/read.cgi/tech/1157549657/

過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
2デフォルトの名無しさん:2006/11/03(金) 03:08:16
3デフォルトの名無しさん:2006/11/03(金) 03:08:50
4デフォルトの名無しさん:2006/11/03(金) 03:09:19
Visual C# 2005 Express Edition 日本語版
http://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/

テンプレ終了
5デフォルトの名無しさん:2006/11/03(金) 18:22:26
名前空間に対してドキュメントを記述したいんですけど、みなさんどうしてますか?
6デフォルトの名無しさん:2006/11/03(金) 18:51:34
RFIDのリーダからタグIDを読み取ったら、一時領域に入れておき
次にタグIDを読んだら一時領域内に参照し、すでに呼んだタグIDか
初めて読むIDかを識別するプログラムをC#で作ろうとしています。
一時領域はIDを異なるIDを読むたびに大きくなっていくイメージです。
いままではC++で構造体をmallocとreallocで一時領域を確保していたのですが
C#ではどうすればいいのでしょうか?
7デフォルトの名無しさん:2006/11/03(金) 18:54:28
List<T>
8デフォルトの名無しさん:2006/11/03(金) 18:55:03
System.Collections.Generics.Dictionary
System.Collections.Hashtable
9デフォルトの名無しさん:2006/11/03(金) 18:58:04
>>5
Excel
10デフォルトの名無しさん:2006/11/03(金) 19:06:08
>>7>>8
MSDNで調べました!ありがとうございました!
11デフォルトの名無しさん:2006/11/03(金) 19:24:08
いい加減マーシャラ関係のリンクはテンプレにいらないと思うんだが
12デフォルトの名無しさん:2006/11/03(金) 23:27:46
C#の勉強にに適した本とサイトを教えてくください
13デフォルトの名無しさん:2006/11/03(金) 23:46:58
http://www.amazon.co.jp/exec/obidos/ASIN/4797332018

これとかどうよ?
まさに入門だけど、必要なことは一通り書いてあるし、
詳しいことはヘルプで事足りると思う。
WEBサイトはgoogleで十分かと。
1412:2006/11/03(金) 23:55:28
あれ、いつからJIS規格対応になったんだこの言語
それに>>13のレビューもかいてないし不安だなあ
15デフォルトの名無しさん:2006/11/03(金) 23:59:34
>>14
去年の春ごろだっととおも。
16デフォルトの名無しさん:2006/11/04(土) 00:06:02
工エエェェ(´д`)ェェエエ工
17デフォルトの名無しさん:2006/11/04(土) 01:47:32
C#,C++/CLを商用のWindowsアプリケーションとして使用してるいますか?
Reflectorで簡単にソースを得ることが可能ですよね。
お客さんにソースが漏れるのは大問題です。

余談ですが、よくC#は生産性が高いなんて言われてますけど疑問です。
確かにちょっとしたものすぐ作れますが、商用となるとUIも重要な要素の一つなんで
ほとんどのコントロールは使えないため、自前で用意する必要がある。

そうすると、VC6MFCとほとんど同じの感じがします。
どうですか?
18デフォルトの名無しさん:2006/11/04(土) 03:02:37
19デフォルトの名無しさん:2006/11/04(土) 04:08:03
7000円も出して覚える必要があるか?
MSも.NETはC++/CLIで行くといってるのに・・・

20デフォルトの名無しさん:2006/11/04(土) 08:04:15
21デフォルトの名無しさん:2006/11/04(土) 09:26:51
C#の本ってそんなにたくさん出てないから片っ端から買ってみるのもいいかも。
自分に投資すると思って。
22デフォルトの名無しさん:2006/11/04(土) 09:30:18
>>17
VC6と変わらないというならVC6で作ればいいんじゃないだろうか?
別に世間一般でC#>>>>>>>>>VC6という評価になっているわけではなく、
開発言語の1つとしてC#というものが有るわけだから
無理にC#を使う必要はないのでは?
23デフォルトの名無しさん:2006/11/04(土) 09:41:24
>>17
ソースコードを保護する必要があるなら、Dotfuscator導入
24デフォルトの名無しさん:2006/11/04(土) 13:58:27
VC6ってVistaで使える?
動作保証しないとは言ってるけど、実際に使うことも出来なくなるのか?
25デフォルトの名無しさん:2006/11/04(土) 13:59:50
VC6が死亡したらC#の時代が…来ないだろうな…
26デフォルトの名無しさん:2006/11/04(土) 17:13:30
C#でCOMコンポーネントを作っています。
インターフェイスIAを継承したインターフェイスIBを実装するコクラスを
COMに公開したいと思い、【ソース】をビルド/regasmすると、
【タイプライブラリA】にようになってしまいます(OLE/COM Object Viewer)。
これではスクリプト環境からデフォルトインターフェイスでないIAのメンバに
アクセスできないため、【タイプライブラリB】のようにしたいのですが、
どうすればいいでしょうか。お知恵を拝借したく。

【ソース】
public interface IA { }
public interface IB : IA { }

[ClassInterface(ClassInterfaceType.None)]
public class C : IB { }

【タイプライブラリA】
interface IA : IDispatch { };
interface IB : IDispatch { };
coclass C {
 interface _Object;
 [default] interface IB;
 interface IA;
};

【タイプライブラリB】
interface IA : IDispatch { };
interface IB : IA { };
coclass C {
 interface _Object;
 [default] interface IB;
};
27デフォルトの名無しさん:2006/11/04(土) 20:06:13
>>21
結構出てるよ。

まあ大半が2003以前の本だけど。
28デフォルトの名無しさん:2006/11/04(土) 20:59:20
そういや「プログラミングADO.NET」の2.0対応日本語版が早くでないかなーと
思ってるんだが、まだ出てませんよね?
29デフォルトの名無しさん:2006/11/04(土) 21:16:17
>>28
もう出てるよ。今日本屋に行ったけど並んでた。
30デフォルトの名無しさん:2006/11/04(土) 22:29:47
>>26
全てのインターフェイスが IDispatch/IUnknown から直接派生して公開されるのは仕様なので、
面倒だけど IA / IB 全てのメンバを宣言している新しいインターフェイス IC を定義して、
そいつをデフォルトインターフェイスにすればなんとかなるんじゃね?
31デフォルトの名無しさん:2006/11/04(土) 22:43:58
回答する側はずいぶんいい加減でいいんですね
32デフォルトの名無しさん:2006/11/04(土) 22:47:42
>>31
そもそも2chでまともなレスもらえるだけで素晴らしい事
33デフォルトの名無しさん:2006/11/04(土) 22:49:21
>>31
俺なんかこんなレス返すぞ

Console.Write("or2=====3プッ");
3426:2006/11/04(土) 22:50:01
>>30
どうもありがとうございます。
これ仕様なんですか……厄介ですね

しかし、継承関係崩すと、マネージコードから利用しづらくなりますし、
インターフェイスを継承できないとなると今後の拡張で
アーリーバインディングでの互換性を確保できなくなりますよね。

インターフェイスの設計からもう一度悩みなおしてみます。
35デフォルトの名無しさん:2006/11/04(土) 23:02:18
>>34
継承関係は別に崩れないだろう。増えはするけど。
が、バージョン管理ができなくなるのは確かだな。
となると ClassInterfaceType.None にする意味もなくなるなぁ……。
// 自動生成の _C インターフェイスは IDispatch だけだが IA/IB どっちも呼べる。
あとは IB で IA のメンバ全部隠蔽して再宣言するとか。
36デフォルトの名無しさん:2006/11/04(土) 23:52:34
>>20
開発していく上でその本はかなり有意義だけど、勉強に適した本とはいえないんじゃない。
ほとんどC#の知識がなかったときにそいつ一冊で本格的なアプリケーション作ったことはあるけど。
でもなにをやっているのかさっぱりわからなかった。

僕は断然、独習C# AND C#Windowsプログラミング上下
独習C#で基本を勉強して本格的なことはC#プログラミングでやればいい。
37デフォルトの名無しさん:2006/11/05(日) 02:43:35
マルチスレッドって簡単だなと思ってたら
安全に動かそうとすると極端に難しいなw
38デフォルトの名無しさん:2006/11/05(日) 03:03:33
AutoResetEvent最強だよね
39デフォルトの名無しさん:2006/11/05(日) 11:31:50
C#って64bitサポートしてるの?
40デフォルトの名無しさん:2006/11/05(日) 11:38:10
.NET 2.0 には x64 と IA64 向けのもありますよ
41デフォルトの名無しさん:2006/11/05(日) 12:48:56
>>20
おお、スプラッシュうウィンドウの表示時間制御が、
ビジーループで時間稼ぎから、
Timerでのイベントに変わった。
激酷からちょっと酷い程度にレベルアップしたな。

42デフォルトの名無しさん:2006/11/05(日) 17:46:06
スプラッシュウィンドウの表示の為に
ビジ-ループって本末転倒。
43デフォルトの名無しさん:2006/11/05(日) 22:59:33
良書に出会うのはむずかしい。

ハーバート・シルトの本はちょっと時代遅れじゃないかな?
以前javaの本(タイトル忘れちゃった…)と独習C++買ったけど、
自分としてはいまいちだった。

特にjavaの本はOOPの本じゃないみたいだった。
翻訳も駄目だったし…
「所与の」ってなんだよw

別の著者の独習javaって本も誤植があってひどかった。
44デフォルトの名無しさん:2006/11/06(月) 02:27:15
C#で正規表現を1,000,000回マッチさせるプログラムでperlの4倍の処理時間・・・
/(hoge)(foo)/;
$a=$1;$b=$2;

#hoge,foo部には適当な正規表現をです。

上記をC/C++/JAVAで書ける人、書いてもらえませんか?
(C/C++はとりあえず使えますが、boostを使ったことがありません)
45デフォルトの名無しさん:2006/11/06(月) 02:35:36
>>44
ngen使うか、初回の処理を計測から外すような措置はした?
46デフォルトの名無しさん:2006/11/06(月) 07:00:05
>>44
Cが出来るですよねw?
PERLはオープンソースだから、NETのライブラリなんて使わずに、
PERLのソースを参考に自前でunsafeを使って実装すればいいのでは?
47デフォルトの名無しさん:2006/11/06(月) 07:55:57
>>44
まずC#のソースを晒すべきじゃないか?
48デフォルトの名無しさん:2006/11/06(月) 08:09:32
>>46
そんなことができるひとがする質問ではないだろ?
つか、そんなことやれる人なんて多くはいないのでは?
49デフォルトの名無しさん:2006/11/06(月) 08:19:27
RegexOptions.Compiled はつけてるのかな
50デフォルトの名無しさん:2006/11/06(月) 16:08:20
double型の変数aに格納されている値が、NaN(非数値)かどうかを判定するにはどうしたら良いのでしょうか?
51デフォルトの名無しさん:2006/11/06(月) 16:17:43
>>50
Double の静的メンバに IsNaN
52デフォルトの名無しさん:2006/11/06(月) 16:31:00
>>51 さん
isnan は、Cで使えるというのは調べたのですが、math.h のincludeが必要ですよね?
c#では、特別に using〜 とういうようなことは必要ないのでしょうか?
書き方は

if(isnan(a) == 1)
  Console.WriteLine("NaNです。");

といった感じですか?初心者ですみません。

53デフォルトの名無しさん:2006/11/06(月) 16:57:34
>>52
初心者なんて免罪符にならないから、ヘルプ読めよ。
54デフォルトの名無しさん:2006/11/06(月) 17:09:37
55デフォルトの名無しさん:2006/11/06(月) 17:41:19
>>44-46
ざっくりした計測で、
Perl=C#=Java(server VM)、C++が0.9、Javaのclient VMは1.8倍ぐらいの処理時間。
ngenとかの細かなチューニングは無し。ループ内で、キャプチャ文字列の長さを積算
するとかして、最適化で飛ばされないように努力はしてみた。
C++: VS2005, boost 1.33.1
C#: VS2005
Java: 1.5.0_09
Perl: Active Perl 5.8.8

うちのC#は、>>44の家のC#より高性能だ。
56デフォルトの名無しさん:2006/11/06(月) 18:30:37
>>55の頭が>>44の頭より高性能なんだよ
57デフォルトの名無しさん:2006/11/06(月) 18:39:16
質問させて下さい。

C#を勉強しています。

とりあえず、シューティングゲームでも作ろうと思って、「C#でゲームを作ろう」みたいな本を買いに本屋に行ったのですが
全くそんな本がありませんでした。
ゲーム関連となると、VBか、Cの本しかありません・・・。


ゲームとかは、C#で作るものではないのでしょうか?
58デフォルトの名無しさん:2006/11/06(月) 18:44:41
XNA Frameworkがもうすぐ正式リリースされて
XBox360でも動くようになるからこれから少しは流行るはず

「C#でゲームを作ろう」みたいなのがどうしても無いとだめなら
Javaで勉強すれば
59デフォルトの名無しさん:2006/11/06(月) 18:45:46
他の本屋に売ってるだろ
60デフォルトの名無しさん:2006/11/06(月) 18:52:54
今の時代、.NETでゲームとなるといきなりManaged DirectXなんかなあ。
6157:2006/11/06(月) 18:52:57
レスほんとにありがとうございます。

えーと、とんまなことを言うようなのですが、C#がイイ、と言われて、ちょくちょく勉強しちゃったのでいまさらjavaというのにいくのはちょっと大変そうなんです。
なんとかC#で頑張ってみたいんです。

しかし、本ってないのですね。
XBOXでれば流行るんですかね。そうなるといいなぁ。

本がないところを見ると、現状、C#はゲーム作りには不向きってことなんですね。
ちょっとへこんじゃいました。
62デフォルトの名無しさん:2006/11/06(月) 19:13:05
>C#はゲーム作りには不向き

ただ入門しにくいって事じゃないかな。
昔はアセンブラじゃないとシューテングは作りづらいといわれていたが…

Wiiプログラマって世界にどのくらいいるんかな。
63デフォルトの名無しさん:2006/11/06(月) 19:13:33
>>61
別に不向きってわけじゃないだろう。
.NETのCLR使えば、初心者がよりとっつきやすい形でプログラミングできるし、
Cでゴリゴリ書いてた比べれば、DirectXの使用も断然やさしくなってると思う。

アマで簡単に探した限りではこのあたりかな。
そんなに高くないし、手当たり次第に買って読んでみればいいと思う。

Visual C# .NETゲーム制作教科書―ゲーム・プログラミングの基本から応用まで
 http://www.amazon.co.jp/gp/product/4777510220
C#ゲームプログラミング
 http://www.amazon.co.jp/gp/product/4797334800

ちょっと慣れてきたら、VB.NETとかVC++.NET用に書かれた類似本を買ってみると、新たな発見があるかもしれない。
言語の文法が少し違うだけで、.NETのライブラリを使ってる以上、やってる中身はかわらないからね。
まあそうやって、他の言語にも目を慣らしていけば、ネットで盗めるテクニックなんかも二倍三倍になるよ。
6461:2006/11/06(月) 19:40:44
>>63
うああ

わざわざすみません。
読んで勉強してみます!

65デフォルトの名無しさん:2006/11/06(月) 21:29:14
下のページを見て、ウェブページを取得する、というのをやってるんですが、うまくいきません。
http://www.woodensoldier.info/computer/CSharp.htm#148

上の方(ネームスペース宣言のところ)に
using System.Net.WebRequest;
と記述し、

あとはそのまま ↓のようにしました。

private void button1_Click(object sender, System.EventArgs e)
{
WebRequest request = WebRequest.Create("http://www.yahoo.co.jp");
WebResponse response = request.GetResponse();
Stream ReceiveStream = response.GetResponseStream();
StreamReader readStream = new StreamReader(ReceiveStream, Encoding.UTF8);
Byte[] buffer = new Byte[response.ContentLength];
readStream.Read(buffer, 0, response.ContentLength);
response.Close();
}

しかし、↓のエラーが出てしまいます。
\Form1.cs(7): using namespace ディレクティブは名前空間に対してのみ使用できます。'System.Net.WebRequest' は名前空間ではなくクラスです。

何が間違っているのでしょうか?
66デフォルトの名無しさん:2006/11/06(月) 21:31:59
エラーメッセージにそのまんま書いてあるのに・・・
67デフォルトの名無しさん:2006/11/06(月) 21:39:41
>>65
using System.Net;の間違いだろ
68デフォルトの名無しさん:2006/11/06(月) 21:43:36
>>65
>Form1.cs(7):

ってんだからForm1.csの7行目読むんだよ
6965:2006/11/06(月) 22:14:44
レスありがとうございます。

すいません、エラーメッセージ読んでも全くわかりません。
基本を全く分かってなくて、説明ページに書いてあるのをただそのままコピペしたような感じですので・・。
なにがどうおかしいのかすら全く分からない状況です・・・。

>>67
using System.Net; とやると、その行ではエラーが出ませんが、後半でエラーが出ます・・・。
70デフォルトの名無しさん:2006/11/06(月) 22:15:39
>>69
そりゃ後半が間違ってるんだろ。
71デフォルトの名無しさん:2006/11/06(月) 22:20:19
>>69
君が見てる所のサンプルはあんまり質が良くないから
初心者スレのテンプレにあるサイトを探ってみなさい。
72デフォルトの名無しさん:2006/11/06(月) 22:20:21
そこまで分からないなら
そのまま動くサンプルが載ってるページを探すか入門書買う方がいいんじゃない
73デフォルトの名無しさん:2006/11/06(月) 22:23:58
しかし>>65のコードは酷いなw
74デフォルトの名無しさん:2006/11/06(月) 22:31:17
あうあ、元ページが間違ってましたか・・・。

それはショックです。

他のページ見てみます。

ありがとうございました。
75デフォルトの名無しさん:2006/11/06(月) 22:34:30
こんなとこでByte[]バッファ使ってるの初めて見たw
76デフォルトの名無しさん:2006/11/06(月) 22:35:08
>>55
Perl=C#
って必至ですね
77デフォルトの名無しさん:2006/11/06(月) 22:49:24
>>75
だってStreamReader.Read()にbyte[]が引数のオーバーロードなんて無いもんw
78デフォルトの名無しさん:2006/11/07(火) 00:21:16
うはっ、お世話になった所で超ショック
79デフォルトの名無しさん:2006/11/07(火) 00:36:46
>>65はTips覚える前に、基礎を……
80デフォルトの名無しさん:2006/11/07(火) 05:47:22
>>61
不向きっつーか現状開拓中。つまり歴史がない
アーリーアダプタががんばってる最中。

しかしXNA Frameworkはびっくりするほど.NETわかってる
やつが書いているようなので(一部のBCLよりよくわかってるw)
すごくわかりやすいのになりそう。そうなったら流行るかも。
遅レスです。
81デフォルトの名無しさん:2006/11/07(火) 09:42:24
DataGridViewでチェックボックスのセルにコントロールがあるとき
チェックボックスの値が上手く取得できないので困ってます
チェックボックスがtrueのとき削除しようと思ってるんですが
何かいい方法はありますか?
82デフォルトの名無しさん:2006/11/07(火) 12:09:05
>>81
日本語でおk
83デフォルトの名無しさん:2006/11/07(火) 13:11:15
教えてください。
ttp://support.microsoft.com/kb/316934/ja

を参考に、C#.NETとADO.NETを使用してExcelへの出力をしたいと
考えています。
Book1.xlsのsheet1のA1にC#のソースから"ABC"という文字列を
SQL Updateコマンドで実行したいのですが、なかなか上手くいきません。

どなたか参考になるサイトや例を教えて下さい。
84デフォルトの名無しさん:2006/11/07(火) 14:55:03
DataGridViewのチェックボックスセルを
クリックしてチェックボックスがオンになって周りが破線で囲まれたときに
チェックボックスの値がtrueって取得できない
他の所をクリックして破線がとれたらtureって取得できる
なんとか前の段階でtrueかどうか確認したいのよ
85デフォルトの名無しさん:2006/11/07(火) 17:02:06
>>83
>Book1.xlsのsheet1のA1にC#のソースから"ABC"という文字列を
>SQL Updateコマンドで実行したい

言ってることが分かりません。
86デフォルトの名無しさん:2006/11/07(火) 17:52:41
>>83
.NET2.0+Excel2003でこれだけで出来たが。

using (OleDbConnection con = new OleDbConnection(
  @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Book1.xls;Extended Properties=""Excel 8.0;HDR=NO;"""))
{
  OleDbCommand cmd = new OleDbCommand(@"UPDATE [Sheet1$A1:A1] SET F1='ABC'", con);
  con.Open();
  cmd.ExecuteNonQuery();
}
87デフォルトの名無しさん:2006/11/07(火) 18:41:57
>86
ありがとうございました。
まじ分からなくて、もうだめかと思ってました。

初歩的な疑問だったかと思います、ですいません。
本当にありがとうございました。
88デフォルトの名無しさん:2006/11/07(火) 19:02:46
dataがコミットされてないからじゃないかな。
DataGridView.CurrentCellDirtyStateChanged ??
89デフォルトの名無しさん:2006/11/07(火) 19:28:55
描画するときにパラメータで描画の透明度を変えることって可能?
g.DrawRectangle(ほにゃらら・・・
g.FillRectangle(ほにゃらら・・・
ってあったときにたとえば
g.Transparency=155;
g.DrawRectangle(ほにゃらら・・・
g.FillRectangle(ほにゃらら・・・
ってすると描画全体が薄くなるようなことがしたいんですが・・・
90デフォルトの名無しさん:2006/11/07(火) 19:43:22
アルファ値
91デフォルトの名無しさん:2006/11/07(火) 19:45:31
>>90 それって色決めるときのアルファ値をいじるってこと?
それともグラフィックスのアルファ値見たいのがある?
92デフォルトの名無しさん:2006/11/07(火) 19:49:48
Color.FromArgbを使ってアルファ値を付けたColorを作る
93デフォルトの名無しさん:2006/11/07(火) 19:56:03
ふらっとC♯, C#(初心者用) Part10
ttp://pc8.2ch.net/test/read.cgi/tech/1162193452/
94デフォルトの名無しさん:2006/11/07(火) 21:26:48
>>88
まさにCurrentCellDirtyStateChangedでした
解決しました
ありがとうございます
95デフォルトの名無しさん:2006/11/07(火) 21:41:48
>>92
おまえ>>89の言ってる意味わかってるの?
96デフォルトの名無しさん:2006/11/07(火) 21:59:59
>>89に書いてあるDrawRectangleとFillRectangleだけなら>>92でもできるだろ
DrawImageとなるとまた別だけど
どうしても全体を透明にしたいなら、まとめて別のImageに描画しといて
ColorMatrix付きでDrawImageとか
97デフォルトの名無しさん:2006/11/07(火) 23:25:55
>>96
できるかできないかじゃなくて、本来の意図としては描画コードをいじることなく外部の属性変化で動作を変化させたいって事でしょ?
本気で言ってるとしたらなんかエンジニアとしての素養が欠けてると思う。
98デフォルトの名無しさん:2006/11/07(火) 23:36:25
それなら、サブクラスつくってColorにアルファ値付加するようにすりゃいいんじゃね。
99デフォルトの名無しさん:2006/11/07(火) 23:48:44
>>97
お勧めの方法を教えてください。
ぼろぼろクリキター
10099:2006/11/07(火) 23:55:55
最後の行はペーストミスです気にしないで。
101デフォルトの名無しさん:2006/11/08(水) 00:07:55
COLORはα値を標準でもってるよ。
102デフォルトの名無しさん:2006/11/08(水) 00:21:39
最近になってCodeDOM調べてみた
オレオレ言語を.NETアセンブリにできるみたいね、面白そう
誰かいじってるやついる?
ぼろぼろクリキター
103デフォルトの名無しさん:2006/11/08(水) 00:46:28
>>97
なんでそんな剣幕なのか分からないけど
>>92でいいんじゃね?

>>92でパラメータでもなんでもアルファ渡して
そいつからColorつくってブラシでもペンでも描画コードで作ればいいんじゃ?

104デフォルトの名無しさん:2006/11/08(水) 05:04:41
ちょっと情報が古いが
http://www.atmarkit.co.jp/fdotnet/insiderseye/20060215cscommunity/cscommunity_02.html
>Q. C#でWin32ネイティブ・アプリケーションも作成できるようにしてほしい。
>A. もちろんC#のコードからWin32ネイティブのコードを生成することは実現可能である。

C#でのネイティブコードの出力も検討されてるみたいね。
ぜひとも実現してほしいもんだ。
105デフォルトの名無しさん:2006/11/08(水) 08:33:03
ngen しても起動速度に大差ないからネイティブコード出力は不要
106デフォルトの名無しさん:2006/11/08(水) 09:24:54
>103
描画する矩形等が重なる場合、まずいんでない?
例えばアルファ値128で黒い矩形の上に白い矩形を重ねたらグレーの矩形になるが、
アルファ値なしで黒い矩形の上に白い矩形を重ねて、最後にイメージ全体をアルファ128で描画すると半透明な白が描画される。

ってことで >96にあるとおりColorMatrix付きDrawImageでいいと思う
107デフォルトの名無しさん:2006/11/08(水) 13:25:24
現状、inliningが甘くてメソッド呼び出しとかpropertyとかもの凄くオーバーヘッドがでかい。
ネイティブコード出力よかまずそのへんを改善して欲しいのだが…
108デフォルトの名無しさん:2006/11/08(水) 14:56:17
プロパティとかイテレータとか匿名メソッドとかすごい多用しちゃってますが・・・・
109デフォルトの名無しさん:2006/11/08(水) 16:27:41
ご教授きぼんぬです

画像の一部分だけBitmapメンバに格納したいってときに
Graphics.DrawImageで部分を切り出ししても全体がコピーされるんでクマー状態。
メソッドの使い方をまちがっているのか、それとも別の方法がいいのか。

どなたか参考になるアイディアをください
110デフォルトの名無しさん:2006/11/08(水) 16:31:26
>>109
あ・・・これじゃわかりにくいですね。
いま事情で手元にソースがないので完璧には説明できません。スマソ。
111デフォルトの名無しさん:2006/11/08(水) 17:08:25
よくわからんが、DrawImageでsourceのrect指定できたはずだが。
112デフォルトの名無しさん:2006/11/08(水) 17:28:23
>>108
> プロパティとかイテレータとか匿名メソッドとかすごい多用しちゃってますが・・・・

iteratorもdelegateも無茶苦茶遅い。

しょーもないアプリなら実用になることはなるのだけど、速度が要求されるところだと
その遅さが致命的。

もっと最適化がんばって欲しい気はするが、いまのC#の言語デザインだとiteratorやdelegateを
inliningするのは難しいだろうなぁ。

ほんと、デザインセンスを疑うよ。素人じゃないんだから・・。
113デフォルトの名無しさん:2006/11/08(水) 17:35:37
最適化厨はおとなしくC++使ってろよ
114118:2006/11/08(水) 17:50:20
とりあえずその辺を多用して今アプリ作成中ですが今のところそれほど致命的な速度の問題は生じてないですね。
もちろんC++でやればもっと早くなるとは思うけど。
生産性との兼ね合いですが今の開発ではC#で十分。
115デフォルトの名無しさん:2006/11/08(水) 17:54:17
デリゲートって実質インタフェースと変わらんぞ
インライン展開とかありえん
116デフォルトの名無しさん:2006/11/08(水) 17:59:46
メニューアイテム上で右クリックを検出したいのですが(ブラウザのブックマークように)、
ToolStripMenuItemで実現は可能でしょうか?
それとも全部自前で作るしかないんですかね?
117デフォルトの名無しさん:2006/11/08(水) 18:03:56
>>111
それやってもだめなので。。。
118デフォルトの名無しさん:2006/11/08(水) 18:07:42
C++ってそんなに生産性低いか?
確かにMFC使わないならそう思うが
VC+++MFCならC#とほとんど変わらないだろ?
119デフォルトの名無しさん:2006/11/08(水) 18:32:45
開発環境のサポートが気合入ってるから、C#とほとんど変わらないならC#の方が楽。
120デフォルトの名無しさん:2006/11/08(水) 18:47:07
>>117
なんか悩んだ記憶があったので前に書いたコード漁ったらこうやってた。

srcBitmapの部分(x, y, width, height)をresultに切り出すとすると、

Bitmap result = new Bitmap(width, height);
using (Graphics g = Graphics.FromImage(result)) {
 g.DrawImage(srcBitmap, -x, -y, width, height);
}
121デフォルトの名無しさん:2006/11/08(水) 18:53:44
なんだ、このいいかげんなコードは?
商用ではないですよね?

商用なら大問題だぞ
122デフォルトの名無しさん:2006/11/08(水) 18:54:40
なわけねーじゃん
.NETが商用には耐えかねる
123デフォルトの名無しさん:2006/11/08(水) 18:55:37
これは趣旨だけを今書いたけど、何が悪いかわからんから教えて。
C#そんなに使いまくってるわけじゃないので・・・
124デフォルトの名無しさん:2006/11/08(水) 19:03:48
べつに問題ないと思うが
クリッピングが適当だけど、そんなことでパフォーマンスに影響が出るほどアホじゃないだろ
125デフォルトの名無しさん:2006/11/08(水) 19:09:15
>>118
MFCはちょっと…癌だね。

MFCで読み込む画像をダイアログで指定してフォームに表示するだけでも
覚えることは山ほどある。

TextBoxの入力内容をタイトルにするにも直感的じゃない手法を取らなくてはならない。

後、文字の取り扱いが良くない。
126デフォルトの名無しさん:2006/11/08(水) 19:14:38
>>125
じゃあさ、読み込む画像をダイアログで指定する際にプレビュー機能が欲しいなんて
要求があったらどうする。
これを実装しようとするとC#でも面倒(容易だが)
また、無駄に動作がもっさりしてるし・・・

VC+++MFCの方がコンパクトで高速なものが書ける。
127デフォルトの名無しさん:2006/11/08(水) 19:19:33
じゃあ、もっさりしたら困るとこだけネイティブで書けばいいじゃない。
128デフォルトの名無しさん:2006/11/08(水) 19:26:22
もっさりしてて困らないことってあるのかしらん?
129デフォルトの名無しさん:2006/11/08(水) 19:28:04
>>126
皆がオリジナルダイアログを作りたいわけではない。

多分、生産性の意味わかってないな。
実際の業務でもコンポネント作るのは技術レベル高い人にさせてるし。
他の大多数はそれを使うだけ。
俺としては直感的に使いやすい方がベター。
130デフォルトの名無しさん:2006/11/08(水) 19:33:15
.NETってコントロールをポトペタできるから簡単そうに見えるけど
人に見せて恥ずかしくないUIを作ろうとするとほとんどのコントロールは
自前で用意することになるぞ。

VC++も同じだが、サンプルアプリでないかぎり標準コントロールを
しようする機会ははない
131デフォルトの名無しさん:2006/11/08(水) 19:33:24
>>128
そしたら全部アセンブラでクロック数かぞえながら書いとけw
そうせずにC++/MFCを使う理由と、C++/MFCを使わずにC#を使う理由は大体同じだと思うよ。
132デフォルトの名無しさん:2006/11/08(水) 19:40:41
あれ?
おさまったの?
安置c#論争やらないのw

とりあえず巣に帰れ。
133デフォルトの名無しさん:2006/11/08(水) 20:02:07

ついでに押して欲しいんだけど
L"これは日本語テキストです"
の Lってなに?
134デフォルトの名無しさん:2006/11/08(水) 20:09:03
>>133
スレ違いじゃない?
135デフォルトの名無しさん:2006/11/08(水) 20:14:04
L様じゃない?
136デフォルトの名無しさん:2006/11/08(水) 20:15:55
>>121
プログラミングできない人がこの板で何やってんだか・・・
137デフォルトの名無しさん:2006/11/08(水) 20:22:58
>>134
すれ違いスマソ
138デフォルトの名無しさん:2006/11/08(水) 20:29:22
>>116
右クリック検出だけなら簡単だけど、メニュー出そうとすると結構面倒

昔の記憶だと、ToolStripMenuItemじゃなくて親のDropDownの方を
継承したほうが楽だったような

OnMouseDownでMouseButton覚えといてOnItemClickedでボタンで分岐、
右だったらContextMenu(ContextMenuStripじゃなくて)を表示するのが簡単だったりする。
ContextMenuStripだとフォーカス奪うので閉じなくする処理とかが面倒。
139デフォルトの名無しさん:2006/11/08(水) 21:49:38
SortedList sortedList = new SortedList();
sortedList.Add("PC", "パソコン");
sortedList.Add("MOBILE", "携帯電話");
sortedList.Add("CALC", "電卓");

上記のようなコードで「SortedList」を用いてインデックス、キー、値の各々で検索出来る
配列を作成しています。このクラスではAddするとキーに従って自動的に並び替えが発
生するのですが、並び替えをさせない方法がわかりません。

IComparer or SortedListのコンストラクタで何かを設定(指定)すると出来そうな
感じがするのですが・・・Addの順序で配列を作成するにはどのようにすれば良いか
ご存じの方、ご教授願います。
140デフォルトの名無しさん:2006/11/08(水) 22:00:34
List<EnglishJapanesePair>みたいにするとか
141デフォルトの名無しさん:2006/11/08(水) 22:04:52
>>139
えーとSortedList ってのは、中身が何らかの順序関係によって整列されたリストのこと。
(Sort ってのは英語で並べ替えというような意味)
ソートしなくていいなら、List<string> や ArrayList を使うべき。
142デフォルトの名無しさん:2006/11/08(水) 22:06:42
>>139
・インデックスで検索するためのList<Pair<string,string>>
・キーで検索するためのDictionary<string, string>
・値で検索するためのDictionary<string ,string>
を各々用意したらいかがか。

143デフォルトの名無しさん:2006/11/08(水) 22:10:45
SortedListは内部にKeyListとValueListを持ってるだけだから、
同等の機能でいいなら、そこまで複雑なことしなくてもいいんじゃないかなあ。
144デフォルトの名無しさん:2006/11/08(水) 22:25:49
>>140->>143 ありがとうございます。
複雑なことしなくてよいのは私もなんですけど…客先の要件なので…

要は状態遷移を行いたいのです。
1.Prev、Nextであればカレントインデックス値を加減算して処理する。
2.指定した状態へJumpであればキーで検索して処理する。
3.前の状態へJumpであれば値で検索して処理する。
と言う具合です。これを満たすためにはArrayList、HashTableの両方を
兼ね備えたSortedListが最適と判断したのです。

自動的に並び替えが無ければOKなんでけどねぇ〜orz
145デフォルトの名無しさん:2006/11/08(水) 22:28:22
>>144
List<Pair<string,string>> でOK。
146デフォルトの名無しさん:2006/11/08(水) 22:37:18
>>145
それだとキーでの検索と値での検索に線形オーダーかかるのでは。
どれも定数オーダーでやるには>>142の三つが必須じゃない?
147デフォルトの名無しさん:2006/11/08(水) 22:41:42
定数オーダーになりっこねえだろ
148デフォルトの名無しさん:2006/11/08(水) 22:42:17
定数オーダーが必要ならその通りだと思う。
149デフォルトの名無しさん:2006/11/08(水) 22:46:56
>>130
ほとんどのコントロールを自前で用意って、ほんとにそう?
ほとんどのアプリでは標準コントロールを使用している。
.Netでできていて、標準コントロールを使用する機会がないような
人に見せて恥ずかしくないUIを持ったアプリを教えてくれるとありがたいんですが。
150デフォルトの名無しさん:2006/11/08(水) 22:49:34
SortedDictionary なら対数オーダーまで落とせるけど
Dictinary だと線形オーダーのままだよ
151デフォルトの名無しさん:2006/11/08(水) 22:52:23
>>149
テキストエディタを作る場合を考えてください。

TextBoxコントロールを使って作れますか?
152デフォルトの名無しさん:2006/11/08(水) 22:52:30
確かに、.netのGUI部分はやたらもっさりしてるのが気になるな

推測だがデリゲートが遅いせいじゃない?
153デフォルトの名無しさん:2006/11/08(水) 22:52:59
>>150
いやいや、Dictionaryはハッシュテーブルだよ
だから定数オーダー。
154デフォルトの名無しさん:2006/11/08(水) 23:01:58
なんでOrderedDictionary使わんの?
v1ならしゃあないけど。
155デフォルトの名無しさん:2006/11/08(水) 23:05:02
デリゲートはそんなに遅くないのでは?

Writing Faster Managed Code: Know What Things Cost
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/fastmanagedcode.asp

たとえHashtableがそうでも、その3つの中にリスト含んでるから LogN(配列のオーダ)でしょ

OrderedDictionaryなんてあったのか、ふざけー
なんでGenerics空間に作らなかったんだ・・
156デフォルトの名無しさん:2006/11/08(水) 23:05:04
>>152
違うから。
157デフォルトの名無しさん:2006/11/08(水) 23:06:00
>>151
エディタなら検索ダイアログや置換ダイアログ、各種の設定用ダイアログ等での
文字列入力で盛大に使うんじゃない?

ポトペタで作れて生産性向上というのと、「ポトペタだけで」作れるというのは違う
ことだってのはわかるよね。

簡単に作れる部分を簡単に作れば、そこで浮いた工数を他の処理、
例えばテキストエディタならばエディット部分の作成に回すことができる。

あるいは工数の減った分を単純に利益としてもよいし、販売価格を下げてもよいし、
バージョンアップサイクルを短縮してもよい。

.Net にしたからといって何でも簡単にできるわけではなくって、
簡単にできることが多少増える→生産性が上がる、ということが重要。

漏れはUI以外は C++ or C++/CLI 使ってるけど。
C# ってtemplate無いし多重継承無いし using たくさん書かせられるから効率悪いんだもん。
158デフォルトの名無しさん:2006/11/08(水) 23:08:18
いや、ジェネリックちゃうし。
159デフォルトの名無しさん:2006/11/08(水) 23:11:55
>>154
OrderedDictionaryを用いる方向で実装していました。
ところが、値の存在チェックは出来るのですが、インデックス値を取得することが
出来なかった(取得する方法がわからない)からです。

1.インデックス値の操作でキー、値を取得する。
2.キーで検索して、インデックス値を取得する。
3.値で検索して、インデックス値を取得する。
この3つの要件を満たすのがSortedListだったのです。
160デフォルトの名無しさん:2006/11/08(水) 23:16:57
>>145
ありがとうございます。早速試したところ…自宅のPCはXP-HOMEだった。orz
明日、出社して早速試してみます。
161デフォルトの名無しさん:2006/11/08(水) 23:22:27
ほえ?
162デフォルトの名無しさん:2006/11/08(水) 23:40:46
>>159
ああそうか…
OrderdDictionaryにあってもよさそうなのにな。
163デフォルトの名無しさん:2006/11/08(水) 23:47:36
>>159
class Record { string key, value; int index; }
でも作って
・List<Record>
・Dictionary<string key, Record>
・Dictionary<string value, Record>
の3つを作れば?
・List<Pair<string key, string value>>
・Dictionary<string key, int index>
・Dictionary<string value, int index>
でもいいけど。
164116:2006/11/08(水) 23:54:18
>>138
ありがとうございます。やっぱりそう簡単ではないんですね。
さっそく色々やってみたいと思います。
165デフォルトの名無しさん:2006/11/09(木) 00:39:14
>>155
> デリゲートはそんなに遅くないのでは?

全然言ってることが的外れ。

例えばdelegateでカリー化したり関数合成したりしてもinliningされないことが問題。
アンダースに次会ったときに突っ込んでみるよ。
166デフォルトの名無しさん:2006/11/09(木) 00:48:46
脳内アンダースに同情
167デフォルトの名無しさん:2006/11/09(木) 01:16:04
まあ、あれだ。


Scheme最高w
168デフォルトの名無しさん:2006/11/09(木) 01:40:20
>>166
アンダース、年に数回、日本に来るよ。おまいさんも聞きたいことがあればサミットなり何なり参加しれ。

でもtypedefとネイティブコード生成の質問はタブーな。
毎回聞く馬鹿があとを絶えないのでアンダースはうんざりぎみ。
169デフォルトの名無しさん:2006/11/09(木) 08:39:52
大胆予想
次世代windowsはマネージコードが標準で、
ネイティブコード実行が保護下のエミュレーションに。
170デフォルトの名無しさん:2006/11/09(木) 08:48:10
なにそのWinFX
171デフォルトの名無しさん:2006/11/09(木) 09:27:53
時代は変わるんだよ。

昔はゲームはDOSじゃないと遅くて動かなかった。
windowsでゲームというと馬鹿にされたもんだよ。

もしかしてマネージアプリのほうが高速になる時代が来るかもな
172デフォルトの名無しさん:2006/11/09(木) 10:35:15
>>144 です。

List<Pair<>> list = null;

上記のように定義してどのように追加すればよいのでしょうか?
Addメソッドを用いるのは理解出来てます。書き方がわかりません。
ご存知の方、教えてください。
173デフォルトの名無しさん:2006/11/09(木) 14:17:48
>>172
list.Add(new KeyValuePair<string, string>("key", "value"));
こういうこと?
174デフォルトの名無しさん:2006/11/09(木) 15:10:00
>>120
を参考にして書き直してみたやつ。現状うまくいってない。
Image srcimgが吸出し元

int w= srcimg.Width/10;
int h = srcimg.Height/10;
Bitmap[,] result =new Bitmap[10,10];
for(int j=0;j<10;j++){
for(int i=0;i<10;i++){
result[i,j]= new Bitmap(w,h);
Graphics g = Graphics.FromImage(result[i,j]);
g.DrawImage(srcimg, -i*w, -j*h, w, h);
g.Dispose();
}
}

foreachのほうがいいのかな。。。
175デフォルトの名無しさん:2006/11/09(木) 15:44:32
>>174
じゃあ、こうすれ。

g.DrawImage(srcimg,
 new Rectangle(0, 0, w, h),
 new Rectangle(i*w, j*h, w, h),
 GraphicsUnit.Pixel);
176デフォルトの名無しさん:2006/11/09(木) 15:46:53
int w = srcimg.Width / 10;
int h = srcimg.Height / 10;
Bitmap[,] result = new Bitmap[10, 10];
for( int j = 0; j < 10; j++ )
{
    for( int i = 0; i < 10; i++ )
    {
        result[i, j] = srcimg.Clone( new Rectangle( i * w, j * h, w, h ), System.Drawing.Imaging.PixelFormat.DontCare );
    }
}

じゃ駄目なのか
177176:2006/11/09(木) 15:49:09
あ、話し見えてなかったスマン
178デフォルトの名無しさん:2006/11/09(木) 17:00:55
WebBrowserコンポーネントを継承した自前クラス内で HTTP POSTされる内容をキャッチしたいのだが、
うまい方法ないすかね。
先ずはonSubmitをフックしようとしたのだけど、
単純に マネージドコードのHtmlElement.AttachEventHandler("onsubmit", new EventHandler....)ではただイベントが飛んでくるだけで
formの内容がわからん。
さらに、ttp://www.thescripts.com/forum/thread232640.html によるとHTMLFormElementの onsubmitのフックにはバグがあるようで使えない。
179デフォルトの名無しさん:2006/11/09(木) 17:07:21
valueを見るじゃだめなの?
180デフォルトの名無しさん:2006/11/09(木) 17:10:18
ごめん 内容読んでなかった。
181デフォルトの名無しさん:2006/11/09(木) 17:40:53
余計に発生してしまったイベントをクリアするのはどうやるのでしょう?
イベントメソッドをアンバインドしてもクリアはされませんでした。
182デフォルトの名無しさん:2006/11/09(木) 17:42:27
109=110=117=174です。

>>175を反映させたところ成功しますた。
アイディアを出してくれた人たちに百万の感謝を。
183デフォルトの名無しさん:2006/11/09(木) 17:48:24
>>181
C#語でおk
184デフォルトの名無しさん:2006/11/09(木) 18:32:49
フラグで判断。
185デフォルトの名無しさん:2006/11/09(木) 19:33:59
>>178
BeforeNavigate2 イベントに POST されるデータも入ってる。
Interop.SHDocVw.dll 参照して ActiveXInstance を SHDocVW.WebBrowser にキャストしてイベント使用するか
CreateSink でイベントシンク作るかしないと使えないが。
186デフォルトの名無しさん:2006/11/09(木) 20:21:53
>>185
面倒だから素直にAxBrowser使ったら?
素直にBeforeNavigate2使えるし。
187デフォルトの名無しさん:2006/11/09(木) 21:33:49
>>185
なるほど〜、SHDocVW.WebBrowserにキャストすればいいんですね。
ふつうに
SHDocVw.WebBrowser browser = (SHDocVw.WebBrowser)this.ActiveXInstance;
browser.BeforeNavigate2 += new SHDocVw.DWebBrowserEvents2_BeforeNavigate2EventHandler(browser_BeforeNavigate2);
とかやってでBeforeNavigate2イベントのフックおよびPOSTデータ取れました。
188デフォルトの名無しさん:2006/11/09(木) 23:54:47
クラスやメソッドの説明のためのコメントで良いフォーマットありませんか?
189デフォルトの名無しさん:2006/11/10(金) 00:01:04
ドキュメントコメントじゃあかんの?
190デフォルトの名無しさん:2006/11/10(金) 06:52:57
>>188
コメントそのもののフォーマットを求めているならヘルプのそれを参考にすれば?
たとえばプロパティなら「〜を取得または設定します」みたいな。
191デフォルトの名無しさん:2006/11/10(金) 11:46:54
お願いします。誰か多重継承を許容する言語作ってください。
192デフォルトの名無しさん:2006/11/10(金) 11:58:40
>>191
多重継承を許容すると退化することになる。

新しいスキームが必要。
193デフォルトの名無しさん:2006/11/10(金) 12:10:03
>>191
CLOS系のやつ

シバリがなくなるだけで退化にはならんと思う。
漏れは色んなパラダイムを許容する言語の方が好きだ。
194デフォルトの名無しさん:2006/11/10(金) 12:13:47
すれ違いだけど…
多重継承で同じインターフェイス含んだクラス2つ継承したら、
動作はどうなるの?

195デフォルトの名無しさん:2006/11/10(金) 12:16:49
言語によるんじゃね?
C++なら部分オブジェクトを共有するか別々にするか制御できるよね。
スレ違いスマソ
196デフォルトの名無しさん:2006/11/10(金) 12:38:16
バグ出にくくなって、コーディングが楽になるならなんでもいいよ。
197デフォルトの名無しさん:2006/11/10(金) 16:19:21
選べりゃいいと思うんだけどね。
ひとつしか実装なかったらそれが呼ばれて明示的実装あればそっちが呼ばれる。

副作用よりも記述性のメリットが勝ると思うんだけど。
複数クラスに委譲コードこぴぺするほうがバグでるっちゅーねん。
198デフォルトの名無しさん:2006/11/10(金) 16:25:51
開発陣が多くなると多分死ぬはめに…
199デフォルトの名無しさん:2006/11/10(金) 17:45:42
プロパティのset呼び出しをデリゲートに渡したいんだけどどうしたらいいでしょう?
float Width{set{_width=value;}}
っていうプロパティがあるんですが、
floatを引数にもつデリゲートが他の変数に代入しようとしても
_deleg=Width;はだめだし
_deleg=set_Widthもだめ。
200デフォルトの名無しさん:2006/11/10(金) 18:42:08
・・・メソッドでくるめば?
201デフォルトの名無しさん:2006/11/10(金) 19:14:56
>>199
言ってることおかしくないかな?
202デフォルトの名無しさん:2006/11/10(金) 19:28:01
自由度が高くなっても >>199みたいなこと
言うやつが増えるだけじゃないのかな?
203デフォルトの名無しさん:2006/11/10(金) 19:46:14
僕の考えたオリジナル仕様?
204デフォルトの名無しさん:2006/11/10(金) 22:37:01
リフレクションでないと出来なかったかな?
205デフォルトの名無しさん:2006/11/10(金) 23:21:00
.NET Framework 3.0の中身をのぞいてみよう!
デジタルアドバンテージ 一色 政彦
2006/11/11

PS3並みのフライング?
206デフォルトの名無しさん:2006/11/11(土) 01:08:56
>>205
何が?<フライング

.NET Framework 3.0、もう正式版出てるし、
β版とか CTP 版はずいぶん前からあるし。
207デフォルトの名無しさん:2006/11/11(土) 01:16:34
>>206
記事の日付と書き込み日時
208デフォルトの名無しさん:2006/11/11(土) 01:32:59
ワロタ
209デフォルトの名無しさん:2006/11/11(土) 01:48:57
@ITはいつもそうだけどな
210デフォルトの名無しさん:2006/11/11(土) 02:25:49
いつものこと
211デフォルトの名無しさん:2006/11/11(土) 12:08:58
フォームのキーダウンイベント発生しないけどなんでー

private void Form1_KeyDown( object sender, KeyEventArgs e )
{
switch ( e.KeyCode ) {
case Keys.Left:
rects[0].X -= 25;
rects[1].X -= 25;
rects[2].X -= 25;
rects[3].X -= 25;
break;

case Keys.Right:
rects[0].X += 25;
rects[1].X += 25;
rects[2].X += 25;
rects[3].X += 25;
break;
}
}
}

すいっちのとこにブレーク張ってるのにキーボードのキー入力しても
イベントハンドラにdで来ないお
これだから馬具だらけのC#はきらいだ!!!
212デフォルトの名無しさん:2006/11/11(土) 12:10:28
ちなみに2005使ってる
やっぱフリーのだから馬具ありなのかな、外地?
213デフォルトの名無しさん:2006/11/11(土) 12:12:25
コントロールの方に飛んでるだけだろ
214デフォルトの名無しさん:2006/11/11(土) 12:18:51
>>211
初心者スレ池
215デフォルトの名無しさん:2006/11/11(土) 12:27:49
>>213
違いますよ^^;
ちゃんとフォームにフォーカス当ててる
216デフォルトの名無しさん:2006/11/11(土) 12:30:52
>>214
みつからないんだが紹介してくれ、そっちで質問するから
217デフォルトの名無しさん:2006/11/11(土) 12:53:12
>>216
Form.KeyPreview
218デフォルトの名無しさん:2006/11/11(土) 12:59:18
そんなスレッドはないようですが・・・
できればurlをお願いいたします(ぺこりー
219デフォルトの名無しさん:2006/11/11(土) 13:09:19
>>218
ふらっとC♯, C#(初心者用) Part10
http://pc8.2ch.net/test/read.cgi/tech/1162193452/

だが>>217が答えだ
220デフォルトの名無しさん:2006/11/11(土) 13:16:08
>>219
どーも。
ボタンを押したときのイベントで>>217
 Form.KeyPreview = true;
というのを追加したけどコンパイルエラーになる。
変数はForm1という名前だから
 Form1.KeyPreview = true;
とやっても怒られる。
 this.KeyPreview = true;
でコンパイルが通った!
でもやっぱりだめなんだな、これが。
やっぱり>>211のイベントにdで来ないお
試しにみんなもやってみてくれ、
もしバグだったら誰か舞糞に連絡ヨロ
221デフォルトの名無しさん:2006/11/11(土) 13:17:32
>>220
プログラム言語の勉強を一からやることをお勧めする
222デフォルトの名無しさん:2006/11/11(土) 13:24:02
       \
         \∩─ー、    ====
         /\● 、_ `ヽ   ======
        /   (0o)  ● |つ    ちょっ! ちょっと待つクマ!
        |   (_入__ノ   ミ
         、  (_/   ノ /⌒l  釣り方間違ってるクマ!!
         /\___ノ゛_/  /  =====
         〈         __ノ  この吊り方は、やばすぎるクマー!!
         \ \_    \    ===
          \___)     \   ======   (´⌒
             \   ___ \__  (´⌒;;(´⌒;;
               \___)___)(´;;⌒  (´⌒;;  ズザザザ
223デフォルトの名無しさん:2006/11/11(土) 13:28:01
>>219氏以外みんななんちゃってC#プログラマでわからないってことで
>>219氏の教えてくれたスレに移動するからここでの質問は取り下げるお
お世話様ですた
224デフォルトの名無しさん:2006/11/11(土) 13:30:22
>>223
>>222
釣りならそういえよw
225デフォルトの名無しさん:2006/11/11(土) 13:49:53
>>221
いやあんなの一生プログラミングに触って欲しくないな
226デフォルトの名無しさん:2006/11/11(土) 13:56:22
質問です。

C#+asp.net2.0でプログラムかいてます。で、あるページでGridViewを使ってるんですが動作がおかしいです。

画面にはGridViewと更新ボタンがあります。Gridviewにはデータバインドしてるのとテンプレートフィールドがあります。
テンプレートフィールドはチェックボックスになってて、チェックボックスをオンにした状態で更新ボタンを押すとその状態がDBに記憶され、
次同じページを開いたときはチェックボックスがオンになった状態でページが開かれます。

更新ボタンのイベントではまずDBにある全てのデータを消してからGridView全てのRowを見て
Checkbox.checked=trueのものだけDBに保存する仕様になってます。

しかしここで問題が…。チェックボックスがオフの状態からオンの状態にして更新ボタンを押すとうまく反映されるのですが、ページを開いた状態のときにすでにオンになってるチェックボックスをオフにして更新を押すとDBに反映されません。

原因を調べたところチェックボックスをオフにしたはずなのに条件判定のところではチェックボックスがオンの状態になっているようでした。これはなぜでしょうか?

わかる人いらっしゃったら教えてください。お願いします。
227デフォルトの名無しさん:2006/11/11(土) 14:04:23
Page_LoadでデータバインドしてるとこでIsPostBackがfalseのときだけやるようにする。
とエスパーなりきって考えてみた。
228226:2006/11/11(土) 14:17:59
>>227
書き忘れてましたが更新ボタンを押した後は「更新されました」というページに遷移するようになってます。なのでpostbackは関係ないかもしれません…。

ページがロードされたときにDBに項目があるものに関してはチェックボックスをオンにするということをしてますが、
それでオンになった項目をオフにして更新ボタンを押しても、そのイベントハンドラ内ではチェックボックスがオンだと認識されているところに問題があるんだと思いますが、なぜかがわかりません…。
229211:2006/11/11(土) 14:25:56
http://pc8.2ch.net/test/read.cgi/tech/1162193452/
の(口は悪いが)親切な回答者のおかげで解決したよ、
このスレは本当に役立たずな回答者しかいないな、
二度と来る門下
230デフォルトの名無しさん:2006/11/11(土) 14:27:33
KeyPreview教えたのもすれ誘導したのも
役立たず。
231デフォルトの名無しさん:2006/11/11(土) 14:37:20
>Form.KeyPreview = true;
>というのを追加したけどコンパイルエラーになる。
>変数はForm1という名前だから
>Form1.KeyPreview = true;
>とやっても怒られる。
>this.KeyPreview = true;
>でコンパイルが通った!

>Form.KeyPreview = true;
>というのを追加したけどコンパイルエラーになる。
>変数はForm1という名前だから
>Form1.KeyPreview = true;
>とやっても怒られる。
>this.KeyPreview = true;
>でコンパイルが通った!

>Form.KeyPreview = true;
>というのを追加したけどコンパイルエラーになる。
>変数はForm1という名前だから
>Form1.KeyPreview = true;
>とやっても怒られる。
>this.KeyPreview = true;
>でコンパイルが通った!

こんなレベルなのに文句を言う方がどうかしてるな。
232デフォルトの名無しさん:2006/11/11(土) 15:10:46
スルー

これくらいいい加減読めるようになろうぜwww
233デフォルトの名無しさん:2006/11/11(土) 15:13:17
そうだね
プロテインだね
234デフォルトの名無しさん:2006/11/11(土) 15:19:46
>>226
コードのロジックミスじゃないの?
235デフォルトの名無しさん:2006/11/11(土) 15:24:20
>Checkbox.checked=trueのものだけDBに保存する仕様になってます。
この投稿の段階で怪しい。

あげ足取りごめんね!!
236226:2006/11/11(土) 15:46:08
>>234
一応更新ボタンのイベントハンドラにはまずDBの全ての内容をdeleteして、その後foreachで全てのrowを見てチェックボックスがオンならDBにタプルを追加するという方法を取ってます。これがいけないんでしょうか?

>>235
実際はrowからcheckboxオブジェクトを取ってそれのcheckedをチェックしてます。
237デフォルトの名無しさん:2006/11/11(土) 16:30:37
だからLoadとかで常にDBから読んじゃってんじゃないの?
って思うんだが。
238デフォルトの名無しさん:2006/11/11(土) 17:15:07
TreeNodeのNodes[string key]ってどうやって使うんでしょうか。
239226:2006/11/11(土) 17:24:49
>>237
うお!本当だ!

初心者で申し訳ありませんでした。更新ボタンを押したときそのボタンのイベントハンドラのみが呼び出されると思っていたのですが、
その前にpage_loadが呼び出されてるんですね…。

僕の仕様だとpage_loadのところでGridViewの全てのRowをチェックしてそれがDBにあった場合チェックボックスをtrueにするので一度消したやつも再度チェックがオンになってしまっているようです。

isPostBackを使うことで解決しました。こんな初心者に助言していただいて本当にありがとうございました!
240デフォルトの名無しさん:2006/11/11(土) 17:35:42
>>238
TreeNodeCollection.Item プロパティ (String) だね
いつの間にこんなものができたのやら。

keyはコレクションから取得する TreeNode のNameとなってるから
TreeNode作るときnameを設定しておけば良いだけじゃないのか?
241デフォルトの名無しさん:2006/11/11(土) 17:48:57
Page_Init
コントロールのプロパティを読み取るか、初期化します。

Page_Load
コントロールのプロパティを読み取って更新します。

242デフォルトの名無しさん:2006/11/11(土) 18:50:06
C#で、web操作のプログラムを組みたいと思ってます。

例えば、IEでグーグルに行って、検索文字に「ねこかわいいよねこ」と入れて、検索ボタンを押して、
表示された検索結果の一番上のリンクにジャンプする・・・といったような、web操作を実行できるよう
にしたいのです。

しかし、いったいどうやればいいのか見当もつきません。
まだC#を始めたばかりで、本屋で入門書を探しているのですが、そんなことのやり方を書いている
本も見あたりません・・・。

どうやればいいでしょうか?
243デフォルトの名無しさん:2006/11/11(土) 18:57:42
>>242
いきなりジャンプすんの?
それとも自分の画面に
「ねこかわいいよねこ」と入れて
自分の画面のボタン押せばその検索結果を出す

ってだけなら今はやりのweb2.0、グーぐるのウェブサービスを使えばできそうだけどな。
同じくamazonの検索機能もウェブサービスで公開されてるような気がするんだが。

244デフォルトの名無しさん:2006/11/11(土) 19:03:06
* HTTP についてちょっと調べる。
* Googleの検索結果のURLをながめる。
* Googleの検索結果のソースをながめる。
245デフォルトの名無しさん:2006/11/11(土) 19:03:43
>>243
すいません、えと、グーグルは例に出しただけで、実際は株取引の画面で、色々入力して、
自動注文みたいなことをしようと考えています。

やりかたが全くわかりません・・。
246デフォルトの名無しさん:2006/11/11(土) 19:05:13
手で色々操作してるところをパケットモニタでキャプチャして観察
247デフォルトの名無しさん:2006/11/11(土) 19:09:14
パケットモニタつうかプロトコルアナライザの類ね。
248デフォルトの名無しさん:2006/11/11(土) 19:20:02
皆さん、レスありがとうございます。

うーん パケットモニタとか、プロトコルアナライザなるものがサッパリ分かりません(´・ω・`)

ちょっと、調べてみます<(_ _)>ありがとうございました。
249デフォルトの名無しさん:2006/11/11(土) 19:20:05
株取引って・・・
htppsの操作なんて出来るの?
250デフォルトの名無しさん:2006/11/11(土) 19:23:22
そかhttpsか・・・中見えないじゃん。
251デフォルトの名無しさん:2006/11/11(土) 19:33:10
httpsなんて関係ない、ただのオートメーションでそ。
252デフォルトの名無しさん:2006/11/11(土) 19:34:50
ここの過去スレと参考URL読むべし…
★★★自動売買ソフトを作ろうぜ★★★ Part12
http://live19.2ch.net/test/read.cgi/stock/1159246240/
253デフォルトの名無しさん:2006/11/11(土) 19:37:41
>>245
>すいません、えと、グーグルは例に出しただけで、実際は株取引の画面で、色々入力して、
>自動注文みたいなことをしようと考えています。

これとグーぐるの画面出すのと何が共通してるっての?
どういう意味で例だしたのかさっぱりわからん
254デフォルトの名無しさん:2006/11/11(土) 19:44:29
大体おなじもんだよ。
俺もオートログインとか自動発注とかしてたからわかる。
ラジオボタンとかチェックするのなかなか分からなかったけどな。
255デフォルトの名無しさん:2006/11/11(土) 19:45:57
ようするに通信したいっていう話じゃなくて、プログラムでIEを操作したいってことじゃね?
文字入力して特定の場所をクリックしてみたいな。
256デフォルトの名無しさん:2006/11/11(土) 19:57:02
>>242
IEでのweb操作はあまり需要が無いので書籍等は出ていないと思います。
webbrowserはVS2005から追加されました。
その前まではAxWebBrowserかなんかで英文ドキュメント見ながらやるしかありませんでした。
いまは日本語ヘルプがあるのでそこから地道にやってみてください。

参考になるかどうかわかりませんがおすすめ。
ttp://peace.poosan.net/investor/workshop/order/
257デフォルトの名無しさん:2006/11/11(土) 19:59:10
なぁ、C丼とブービードトネトと、一体何が違うんだ?
258デフォルトの名無しさん:2006/11/11(土) 20:10:45
>>257
ちょっと文法が違うだけで
使うクラスライブラリはほぼ同じ(ただしVBにはMyがあるけど)
好みの問題じゃね。
259デフォルトの名無しさん:2006/11/11(土) 20:22:44
すいません、友人にプログラムのさわりだけ教えるために
一応c#のexpressedhitionでアドレス帳でも作ってもらおうかと思ってるんですが、
その際のDBも簡易的なものでできたらなと思っています。

,mdfファイルを作るまでをできたのですが
こいつにアクセスしてデータを読み書きしてみたいのですが
どのようにすればいいでしょうか?

感じ的にはログイン認証みたいなことをしたいなぁと思っているのですが。
260デフォルトの名無しさん:2006/11/11(土) 20:38:38
ごめんなさい。

本を買えの一言です。
261257:2006/11/11(土) 20:42:15
>>258
そうだよな。thx
262デフォルトの名無しさん:2006/11/11(土) 20:48:42
>>260
こういう一言書くぐらいなら単純にフル無視したらいいのにとたまに思う。
263デフォルトの名無しさん:2006/11/11(土) 20:48:55
さわりとは物事の本質を示す
264デフォルトの名無しさん:2006/11/11(土) 20:57:00
>>259
ADO.NET、接続文字列、SqlConnection、DataSetあたりでぐぐれ。
265デフォルトの名無しさん:2006/11/11(土) 20:59:05
>>259
友達w?


正直に言えよw
266デフォルトの名無しさん:2006/11/11(土) 22:02:48
>>265
あ、そっち?
大丈夫ごめんごめん。

会社ではOraleDBだったり今はSQLServerだったり
DBサーバにつないで、dataadapter使ってデータのやり取りやってるんだが、
単純にそういう環境なしのローカル環境だけの簡単なもの、っていうと
実務では殆ど使わないので実はあまりなじみなくってね。

初心者用の本でもありゃわかるんだろうが、そういう本はないw

結局普通にDataTAbleAdapter使ってデータのやりとりやることにしたよ。
DataSetに入れてしまえばあとはすぐだし。

その辺は「おまじない」とか言って適当にごまかしとくわw

最初から色々教えてやると頭パンクするかもしれんから。
267デフォルトの名無しさん:2006/11/11(土) 22:09:32
>>264
ローカルにsqlserverたてれたらそら簡単だが。。
ExpressEditionでできることって限られてるじゃん?

SqlServerもクライアントの機能しかないし。
てなると、完全にローカルだけで動かす環境。
Accessも手元にないし、どうしたもんかなぁ、と思ってたんだが。

ローカルデータ用の空のデータベースっつーのが項目として追加できたんで、
それ使ってなんとかやってみたよ。

ローカルデータ用の空のデータベースもSqlConnectionクラス使って
普通にコネクション設定したら使えるのかな?
コネクションはローカル用空DB(.mdfファイル)も
普通に別のDBサーバのDBも書き方同じなんだろうか。

ローカルのDB使ってプログラムなんか普通作らないからなぁ。
268デフォルトの名無しさん:2006/11/11(土) 22:16:13
すいません、質問です。

C#でCheckboxの値を変えられなくする(灰色表示にする)方法ってenable=falseにする以外はありませんか?
269デフォルトの名無しさん:2006/11/11(土) 22:23:23
なぜ?
270デフォルトの名無しさん:2006/11/11(土) 22:27:35
>>268
ほんと、なんで?って感じ
なぜEnabled = falseが嫌いなの?

方法ってたら、SendMessageでメッセージ送るとか?
271268:2006/11/11(土) 22:28:59
>>269
postbackしたときにfalseにしたものはrequest.formに含まれなくなったようなのです。それはこれが原因ではないのでしょうか?
272デフォルトの名無しさん:2006/11/11(土) 23:27:24
>>268
ロックってなかったっけ?
灰色にしたくない、て言うのだと良くある質問かなと思ったけど(文字が見えにくくなるとか)
273デフォルトの名無しさん:2006/11/11(土) 23:34:36
最低限 Webで、とか書け。

最近こんなやつばっか。
274268:2006/11/12(日) 00:31:56
すいません、Webでです。

ふむぅ、なんかできないみたいなので他の手段をとってみます。ありがとうございました。
275デフォルトの名無しさん:2006/11/12(日) 00:48:23
TableAdapterでUpdateしたんだが、コミットってどうする?
どうやったら保存されるの?
276デフォルトの名無しさん:2006/11/12(日) 01:10:53
標準でcomitしなくても更新できるんじゃなかったっけ。
トランザクション実行してるの?
277デフォルトの名無しさん:2006/11/12(日) 01:12:41
DatabaseDataSetTableAdapters.ADRESSTableAdapter uadpter = new WindowsApplication1.DatabaseDataSetTableAdapters.ADRESSTableAdapter();
DatabaseDataSet ds = new DatabaseDataSet();
DatabaseDataSet.ADRESSDataTable dt = new DatabaseDataSet.ADRESSDataTable();

//データ追加
DatabaseDataSet.ADRESSRow row = ds.ADRESS.NewADRESSRow();

row.NAME = this.txtName.Text;
row.ARESS1 = this.txtAdress1.Text;
row.ADRESS2 = this.txtAdress2.Text;
row.BIKO = this.txtBiko.Text;
row.TEL = this.txtTell.Text;

ds.ADRESS.AddADRESSRow(row);

uadpter.Update(ds.ADRESS);


としてみたんですが、データが反映されません。
なんか最後のところがへんちくりんなんでしょうかね?
278デフォルトの名無しさん:2006/11/12(日) 01:35:59
そのdtは何のため…
279デフォルトの名無しさん:2006/11/12(日) 01:36:57
ローカルのDBをコピーして上書きしちゃってたりして
280デフォルトの名無しさん:2006/11/12(日) 04:53:03
ぐはぁ、
なんかbinのdebugの下にデータベースのコピーできてるやんけ!
一生懸命ちゃうとこみとったわい。
デバッグモードのときはこっちのDBに書き込まれるとかそゆこと?どうなってんだ。
281211:2006/11/12(日) 09:45:17
きみたち必死になってForm.KeyPreviewという回答をくれたけど
実は違うみたいれつよ(藁
後学のためにきみたちのもおいらが調べた結果をまとめたので教えてあげよう

「Windowsアプリケーションで方向キーなどの特殊キーを処理するには?」 by 149

1.Buttonコントロールで方向キーが処理できない理由
 Buttonコントロールでの方向キーの入力が、通常のKeyDownなどのキー・イベントで処理できないということは、
「方向キーが通常の入力キー(以降、普通入力キー)とは異なる」ことを意味する。Buttonコントロールの方向キーは
「プリプロセス(=前処理)を必要とする特殊な入力キー」(以降、特殊入力キー)である。

 これは、すでにプリプロセスで何らかの処理を実行済みなので、さらにその後でキー処理を行う必要がないからだ。
例えば、Buttonコントロールで[↓]キーを押すと、Windowsアプリケーションはプリプロセス工程で自動的にフォーカス移動の
処理を実行する。よって、その後でKeyDownイベントを処理する必要はなくなる。

 しかし、実際のアプリケーションでは、そのような通常のアプリケーション動作をカスタマイズしたい場合がある。例えば、
通常のアプリケーション動作では[↓]キーでフォーカス移動すると、そのフォーカス移動先がGroupBoxコントロールなどにより
設定されたグループ内でループするようになっているが、それをカスタマイズして、グループを越えてフォーカス移動するように
したい場合などが挙げられる。

  a) プリプロセス工程における処理をカスタマイズする
  b) 特殊入力キーを普通入力キーに変更する

ここではa)について解説する。

2.プリプロセス工程における処理をカスタマイズする
 プリプロセスをカスタマイズするには、フォームのProcessDialogKeyメソッドをオーバーライドして、そのメソッド内でキー処理を
行えばよい。もちろんフォームではなく、コントロールのProcessDialogKeyメソッドをオーバーライドしても同様の結果が得られる。
 次のコードは、実際に、フォームのProcessDialogKeyメソッドをオーバーライドした例である。この例では、方向キーでグループを
越えたフォーカス移動を行うように、処理をカスタマイズしている。

続く
282211:2006/11/12(日) 09:46:29
protected override bool ProcessDialogKey(Keys keyData){
switch (keyData) {
case Keys.Down:
case Keys.Right:
this.SelectNextControl(
this.ActiveControl, true, true, true, true);
break;
case Keys.Up:
case Keys.Left:
this.SelectNextControl(
this.ActiveControl, false, true, true, true);
break;
default:
return base.ProcessDialogKey(keyData);
break;
}
return true;
}

ProcessDialogKeyメソッドをオーバーライドしたサンプル・プログラム(C#)

 なお、ProcessDialogKeyメソッドはコントロール→フォームの順で呼ばれる。ProcessDialogKeyメソッドでは、
独自にキーを処理した場合には、それを示すために戻り値でTrueを返すようにする。
 また、コントロールのProcessDialogKeyメソッドは、コントロールのPreProcessMessageメソッドから暗黙的に
呼び出される。そのため、プリプロセス工程の最初のメソッドであるコントロールのPreProcessMessageメソッドを
オーバーライドしても、同様にプリプロセス工程でのキー処理をカスタマイズできる。しかし、コントロールの
ProcessDialogKeyメソッドやPreProcessMessageメソッドをオーバーライドする方法を採用する場合、当然、
コントロールの継承が必要になる。

-------------------------------------------------------------
以上だ。いかにもC#のことなら何でも知ってる見たいなツラして回答者ぶるなら
少しは勉強しろよな(禿藁
283デフォルトの名無しさん:2006/11/12(日) 09:58:15
そうだね
284デフォルトの名無しさん:2006/11/12(日) 09:59:24
↑受け売りの知識を自慢げにひけらかしてる奴
285デフォルトの名無しさん:2006/11/12(日) 10:09:32
常識だな
286デフォルトの名無しさん:2006/11/12(日) 10:15:19
長い
もっと簡潔に
287デフォルトの名無しさん:2006/11/12(日) 10:21:39
なんで「フォームのkeydownイベントが発生しない」が
「コントロール上でのkeydownイベントが発生しない」にすりかわってるんだろう。

あ、釣られたのか。
288デフォルトの名無しさん:2006/11/12(日) 10:47:27
きみたち必死になってForm.KeyPreviewという回答をくれたけど
実は違うみたいれつよ(藁
後学のためにきみたちのもおいらが調べた結果をまとめたので教えてあげよう

http://www.atmarkit.co.jp/fdotnet/dotnettips/241windlgkey/windlgkey.html

以上だ。いかにもC#のことなら何でも知ってる見たいなツラして回答者ぶるなら
少しは勉強しろよな(禿藁

-------------------------------------------------------------
簡潔にしてみました
289デフォルトの名無しさん:2006/11/12(日) 11:17:26
・・・つーか、そろいもそろって・・・
特殊Keyもしらないのでちゅか・・・?
290デフォルトの名無しさん:2006/11/12(日) 11:20:00
>>289
君みたいにエスパーじゃないからね
291デフォルトの名無しさん:2006/11/12(日) 12:19:21
292デフォルトの名無しさん:2006/11/12(日) 13:51:16
Excelのマクロより遅い.NETになんの魅力があるのか禿げしく疑問
293デフォルトの名無しさん:2006/11/12(日) 13:55:52
そうだね
294デフォルトの名無しさん:2006/11/12(日) 14:09:57
vistaでは無問題
先を見ることができない>>292は脱落者
vista(=見晴らし、見通し)とヒントまで与えてくれてるのに気づかないとはね・・・
┐(´ー`)┌
295デフォルトの名無しさん:2006/11/12(日) 14:21:34
>>294
┐(´ー`)┌ ← このAAが禿しくムカツクんだが。
296デフォルトの名無しさん:2006/11/12(日) 14:22:17
スルー力を磨くスレ
297デフォルトの名無しさん:2006/11/12(日) 14:27:30
>>296
がんばって磨きますw
298デフォルトの名無しさん:2006/11/12(日) 14:46:09
マクロより遅いのか
299デフォルトの名無しさん:2006/11/12(日) 15:26:07
うそーん
EXCELのマクロより遅いなんて話は聞いたことが無いよ。
300デフォルトの名無しさん:2006/11/12(日) 15:28:30
デバッグモードででもベンチ取ったんじゃないかと
301デフォルトの名無しさん:2006/11/12(日) 15:59:00
>>298-300
>>296がいい事言ってる
302デフォルトの名無しさん:2006/11/12(日) 16:10:31
エラー19'hogehoge.Index' は参照マーシャル クラスなので、
'hogehoge.Index' を ref または out として渡すことはできません。

コンパイルエラーでこういうのが出てしまいます。
元のコードは、こんな感じです。


class hogebase
{
public int Index = 0
}

class hogeInherit : hogebase
{
private void Close()
{
base.Index = 100;
}
}

void main()
{
hogebase hb = new HogeInherit();
Console.WriteLine('{0}',
}
303デフォルトの名無しさん:2006/11/12(日) 16:11:16
ちなみにエラーが出るのは Main の Console.WriteLine です。
304デフォルトの名無しさん:2006/11/12(日) 16:13:56
文字列になってないし括弧も閉じてない
305デフォルトの名無しさん:2006/11/12(日) 16:15:18
>>304
void main()
{
hogebase hb = new HogeInherit();
Console.WriteLine('{0}', hogeInherit.Index.ToString());
}
これの間違いです。
306デフォルトの名無しさん:2006/11/12(日) 16:31:29
文字列はシングルクォートではなくダブルクォートだぜ

おまいにはこっちのほうがお似合い

ふらっとC♯, C#(初心者用) Part10
http://pc8.2ch.net/test/read.cgi/tech/1162193452/
307デフォルトの名無しさん:2006/11/12(日) 16:35:05
>>306
向こうに行きます。
308デフォルトの名無しさん:2006/11/12(日) 20:35:50
>>300
デバッグモードだとEXCELにも負けるのか・・・
┐(´ー`)┌
309デフォルトの名無しさん:2006/11/12(日) 20:38:36
┐(´ー`)┌
310デフォルトの名無しさん:2006/11/12(日) 20:45:03
>>308
失せろっていってんだよ。
何度も同じことを言わせんなよ。


カスが。
311デフォルトの名無しさん:2006/11/12(日) 20:49:23
┐(´ー`)┌
312デフォルトの名無しさん:2006/11/12(日) 21:01:21
┐(´ー`)┌
┐(´ー`)┌
┐(´ー`)┌
┐(´ー`)┌
┐(´ー`)┌
┐(´ー`)┌
313デフォルトの名無しさん:2006/11/12(日) 21:13:40
ムカデか
314デフォルトの名無しさん:2006/11/12(日) 21:16:03
┐(´ー`)┌
315デフォルトの名無しさん:2006/11/12(日) 21:30:16
最近妙にレベルが落ちてるな。どうしてだ?
316デフォルトの名無しさん:2006/11/12(日) 21:34:30
回答者の質が落ちたんじゃね?
317デフォルトの名無しさん:2006/11/12(日) 22:12:49
ブビー・コボラ・デルオパーイ・ジャバ糞辺りが難民化してるんじゃね?
318デフォルトの名無しさん:2006/11/12(日) 22:20:38
>>317
┐(´ー`)┌
319デフォルトの名無しさん:2006/11/12(日) 22:26:01
>>318
ほらw

うじゃうじゃと湧いてくるよw
320デフォルトの名無しさん:2006/11/12(日) 22:35:43
┐(´ー`)┌
321デフォルトの名無しさん:2006/11/12(日) 22:37:17
┐(´ー`)┌
┐(´ー`)┌
┐(´ー`)┌
┐(´ー`)┌
┐(´ー`)┌
┐(´ー`)┌
┐(´ー`)┌
┐(´ー`)┌
322デフォルトの名無しさん:2006/11/12(日) 22:41:44
ムカデか
323ぼるじょあ ◆yBEncckFOU :2006/11/12(日) 23:26:50
┐(´・3・`)┌ エェー
324デフォルトの名無しさん:2006/11/13(月) 00:17:08
初歩的な質問なのですがushortをbyte配列にコピーするにはどうすれば
いいのでしょうか?
Cでいうmemcpyみたいなことをしたいのです。
325デフォルトの名無しさん:2006/11/13(月) 00:31:24
Buffer

クラス名な
326デフォルトの名無しさん:2006/11/13(月) 00:44:59
Buffer.BlockCopyでできそうですね。
ありがとうございました
327デフォルトの名無しさん:2006/11/13(月) 13:25:55
C#を勉強中なんですが、3項演算子というのは、積極的に使っていくものなんでしょうか。
普通にif文を書いた方が見やすいようなきもするんですけど、どうなんでしょう。
328デフォルトの名無しさん:2006/11/13(月) 13:40:16
>>327
見やすく書いたほうが、読む方は読みやすい。自分が書いたコードでも時間が経つと
意外と悩んだりするもの。C言語でもできれば使わないほうがよいとされている。
C#でもそれは同じだろうと、俺は思っている。三項演算子の方が分かりやすいと判断
したところには使ってもいいんじゃないか?そういう意味ではgotoみたいなもの。
329デフォルトの名無しさん:2006/11/13(月) 13:46:45
複数あるWindowからIEのWindowを絞り出し、そのHTMLDocumentを抜き出すという
事をしたいのですが、その方法で煮詰まっています。

public static bool IECallBack(IntPtr hwnd, IntPtr lParam)
{
StringBuilder sbClassName = new StringBuilder(256);
GetClassName(hwnd, sbClassName, sbClassName.Capacity);
if( sbClassName.ToString().StartsWith("IEFrame"))
{
Form1.al.Add(hwnd);
}
return true;
}

// EnumWindows でIECallBack へさせる。
EnumWindows(new EnumWindowCallBack(Form1.IECallBack), IntPtr.Zero);

こんな感じでWindowのハンドルは取得できるのですが、Window内のオブジェクトを取得する
方法が分からなくて困っています。
どなたかご教授していただけませんでしょうか?よろしくお願い致します。
330デフォルトの名無しさん:2006/11/13(月) 13:50:52
3項演算子で書いて意味不明なのは、ifで書いても意味不明だと思う。
ようするに読みにくいのは3項演算子のせいじゃない。
331327:2006/11/13(月) 15:53:16
単純な分岐で〜だったら1、そうでなければ2みたいな短い時に
if文で何行も使うのはどうかなと思ってました。

if (〜) { 〜 } else { 〜 }

かっこの中が1行で済むときはこんな感じで書いていたのですが、
一般的に3項演算子のほうを使うのかなと思って質問しました。
あまり参考書などで使ってるのを見かけないので
一般的に使われていないのかなと思って質問しました。
少し使ってみようと思います。
332デフォルトの名無しさん:2006/11/13(月) 17:22:36
>>329
COMのMicrosoft Internet ControlsとMicrosoft HTML Object Libraryを参照

using SHDocVw;
using mshtml;

ShellWindows sw = new ShellWindows();
foreach (InternetExplorer ie in sw)
{
  if (System.IO.Path.GetFileName(ie.FullName) == "IEXPLORE.EXE")
  {
    IHTMLDocument2 htmlDoc = (IHTMLDocument2)ie.Document;
    Console.WriteLine(htmlDoc.url);
  }
}
333デフォルトの名無しさん:2006/11/13(月) 18:03:11
>>332
正にこれです。COMオブジェクト関連の操作に関してはVBの資料は多いのですが
C#に関する資料があまりなくて苦労していました。
本当に有難う御座います。

追加で質問なのですが、IEのウィンドウでさらにアクティブになっているウィンドウを取得したいのですが、
Shellwindowからhwndを抜き出すことは簡単に出来るものなのでしょうか?
334332:2006/11/13(月) 18:19:38
>>333
InternetExplorerクラスにHWNDプロパティがあるからそれが使えるんじゃない?
試してないから分からないけど。
335デフォルトの名無しさん:2006/11/13(月) 21:07:20
ボリュームコントロールをいじりたい(音を大きくしたり小さくしたりとかしたい)のですが、どうやればいいでしょうか?
336335:2006/11/13(月) 21:11:54
ちなみに
↓みたいなページもあったのですが、ページが古くて、重要なウプデータがなかったりで・・・(´・ω・`)
ttp://thespoke.net/forums/950208/ShowPost.aspx
337デフォルトの名無しさん:2006/11/13(月) 21:14:50
>>336
こんなんじゃだめなん?
ttp://support.microsoft.com/kb/139098/ja
338デフォルトの名無しさん:2006/11/13(月) 21:47:17
>>337
おおお、ありがとうございます!!
339デフォルトの名無しさん:2006/11/14(火) 14:44:05
モジュールが1.1でコンパイルされたものか2.0でされたものかってどこでわかるの?
340デフォルトの名無しさん:2006/11/14(火) 18:21:51
他のアプリケーションのウィンドウがアクティブになったときに処理をさせたいのだが、
C#ではどうすりゃいいの?

他のアプリケーションのウィンドウに送られるWM_ACTIVATEメッセージを
キャッチしたいんだけど…。これをやりたい場合はグローバルフックする
必要があるからC#じゃ無理…だよね?

やはりTimerイベントを1秒間隔くらいで発生させて、その中で
GetForegroundWindowなどを呼び出してチェックする方法しかないのかな。
341デフォルトの名無しさん:2006/11/14(火) 18:35:30
コールバックは作れるみたいだけど
ttp://msdn2.microsoft.com/ja-jp/library/843s5s5x(VS.80).aspx
342340:2006/11/14(火) 22:19:36
グローバルフックの部分をC言語などで書いて、WM_ACTIVATEをキャッチした時に
.NETアプリにコマンドライン引数などで通知するなんてこともできるかな。
スマートじゃないけど。

うーん。いい方法が思いつかない。素直に全部C言語で作ったほうが早いかな…。
343デフォルトの名無しさん:2006/11/14(火) 22:23:09
うん、多分その方が良いと思う。
GUI を C# で作りたいのならその部分だけ別プロセスで。
344デフォルトの名無しさん:2006/11/14(火) 22:49:46
オブジェクトを自分で破棄するにはどうすればいいんでしょうか?
345デフォルトの名無しさん:2006/11/14(火) 23:02:56
破棄というのが何を指すのかが問題だ
346デフォルトの名無しさん:2006/11/15(水) 00:26:36
オブジェクトが使用するリソースを解放したいのならそのように明示的にコーディングすればいいだけ。
オブジェクトそのものが占めるメモリを解放するなら参照を切ってからSystem.GC.Collect()する。
特定のオブジェクトのメモリ領域を解放するのは不可能だしそもそも意味がない。
347デフォルトの名無しさん:2006/11/15(水) 00:41:39
質問です。IntPtrに加減演算が定義されてないのはなぜでしょうか。
IntPtr ptr = ...;
ptr = (IntPtr)(ptr.ToIntXX() + 3);
などと書くとアーキテクチャに依存して効率が落ちたりしそうな気がするのですが
どうなんでしょう。
348デフォルトの名無しさん:2006/11/15(水) 00:44:30
加減算がしたいのならunsafeで通常のポインタ使ってください
349デフォルトの名無しさん:2006/11/15(水) 00:52:40
>>343
そんなことするくらいなら全部ネイティブで書いたほうが早い
Cだと面倒なんでC++/MFCならC#を使うより工数は少ないはず
350デフォルトの名無しさん:2006/11/15(水) 00:57:27
>>347
その質問に答えられるのは MS の中の人だけだろう。
MSDN フォーラムででも聞いてくれ。
351347:2006/11/15(水) 01:27:28
>>348
なるほど、そういうポリシーなのですか。
わかりました。
352デフォルトの名無しさん:2006/11/15(水) 01:36:58
プロパティグリッドに表示させたときに
Listメンバを編集させないようにできないですか?
ReadOnly をつけても編集できてしまいます

class MyClass{
 private List<string> myList;
 [ReadOnly(true)]
 public List<string> MyList{
  get{return myList;}
  set{list = myList;}
 }
}
353デフォルトの名無しさん:2006/11/15(水) 10:02:58
>>352
プロパティとしては、setterを用意したいけど、
デザイナー上からは、編集できないようにしたいってこと?
354デフォルトの名無しさん:2006/11/15(水) 10:22:50
C# で作成したアプリケーションを、特定の拡張子と関連付けようとして
「関連付けたい拡張子のファイルを右クリック」
→「プログラムから開く」
→「プログラムの選択」
で作成したアプリケーションを選択したら、アプリケーション名が空になってしまいました。
これって何が悪いのでしょうか?
355デフォルトの名無しさん:2006/11/15(水) 11:58:28
レジストリ確認しろ
356デフォルトの名無しさん:2006/11/15(水) 13:42:04
引数のアプリケーション名が空ってことを言いたいんじゃないの?
Argじゃなくてプロパティにあった気がする
357デフォルトの名無しさん:2006/11/15(水) 19:04:48
char型の変数から値取り出したら変な数値だったんだけど
文字型の1が0x31のはずなのになんかばかでかい変な値だった
どうやればいいか教えてくれ
358デフォルトの名無しさん:2006/11/15(水) 19:05:40
>>357への回答至急お願いする
359デフォルトの名無しさん:2006/11/15(水) 19:21:17
全角の1だったんじゃね
360デフォルトの名無しさん:2006/11/15(水) 19:21:27
じょうだんじゃない
361デフォルトの名無しさん:2006/11/15(水) 19:44:08
わかる奴はいなさそうだな
それじゃ
362デフォルトの名無しさん:2006/11/15(水) 20:15:22
Console.WriteLine("{0:x}", (int)'1');
363デフォルトの名無しさん:2006/11/15(水) 21:39:37
これからは>>357みたいな奴ばかりになるのかと思うと引退考えるな
364デフォルトの名無しさん:2006/11/15(水) 21:41:41
どうぞどうぞ。
365デフォルトの名無しさん:2006/11/15(水) 21:54:49
>>357
すまん。


もう、君が何を言ってるのかわからないよ。
366デフォルトの名無しさん:2006/11/15(水) 22:11:15
>>354
多分 AssemblyTitle 属性の値が使われると想う。
AssemblyInfo.cs 見てみ。

あとキャッシュされてる可能性がある。
前にそう言うやり取り見たな。あれは XP のタスクバーのグループ化の話だったか。
367デフォルトの名無しさん:2006/11/15(水) 22:25:32
>>365
何となく理解はできた。
それすらもわからないなら君も早く引退した方がいいよ^^
368デフォルトの名無しさん:2006/11/15(水) 22:37:27
C#でchar型って文字型だから、単純に値を取り出して
intみたいな数字型に変換するのは無理…というかしちゃダメじゃないの?

Encoder使って、byteに変換すれば可能だけど
369デフォルトの名無しさん:2006/11/15(水) 22:42:36
(゚д゚)ハァ?してもよろしいですか?





(゚д゚)ハァ?(゚д゚)ハァ?(゚д゚)ハァ?(゚д゚)ハァ?
370デフォルトの名無しさん:2006/11/15(水) 22:58:19
>>368
CharもInt32もただの構造体だがその辺は適当にConvertibleになってる。

つーか、君はちょっとくらい調べてから発言しようとは思わんのかね。
371デフォルトの名無しさん:2006/11/15(水) 22:59:22
よろしいです!
372デフォルトの名無しさん:2006/11/15(水) 23:13:23
>>368
char->intなら暗黙的にキャストできるだろ。
373デフォルトの名無しさん:2006/11/15(水) 23:21:47
C#でC++の特性クラスみたいなことは出来ますか?
374デフォルトの名無しさん:2006/11/15(水) 23:25:34
traitsはさすがにtemplateがないと無理だろ
375デフォルトの名無しさん:2006/11/15(水) 23:26:06
でも代わりにリフレクションがあるか。
376デフォルトの名無しさん:2006/11/17(金) 17:55:33
DataGridコントロールで、Enterキー押下時にカーソルを
左に移動する処理を行いたいのですが、下記のイベント
にブレークポイントをおいても、イベントがコールされません。
EnableはTrueになっています。

何か設定に不備があるのでしょうか?

dataGrid1_KeyPress
dataGrid1_KeyUp
dataGrid1_KeyDown

環境 VS2003 Win2003
377デフォルトの名無しさん:2006/11/17(金) 18:59:14
>>376
仕様です。
378デフォルトの名無しさん:2006/11/17(金) 19:19:55
一度StartさせたThreadを再び使用するにはどうしたらよいのでしょうか?
一度終了したThreadに対して普通に再びStart()メソッドを呼ぶとThreadStateExceptionが飛んできます…。
379デフォルトの名無しさん:2006/11/17(金) 19:31:48
終了させなければ良い
380デフォルトの名無しさん:2006/11/17(金) 19:44:50
そもそもなんで再利用したいの?
381デフォルトの名無しさん:2006/11/17(金) 19:46:37
もし可能なら毎度毎度Threadをnewするオーバーヘッド(どの程度かわかりませんが)を避けられるかな、と思った次第です。
382デフォルトの名無しさん:2006/11/17(金) 19:49:53
>>381
用途にもよるがBackgroundWorkerやその他のThreadPoolを使いなされ。
383デフォルトの名無しさん:2006/11/17(金) 19:50:07
スレッドでこんな風にすれ

while ( ! 死に時?) {
 合図があるまで待つ;
 お仕事;
}
384デフォルトの名無しさん:2006/11/17(金) 19:52:49
>>382,383
いろいろ試してみます。
ありがとうございました。

>>379
しね
385デフォルトの名無しさん:2006/11/17(金) 19:54:13
>>379=>>383なわけだが・・・しねってか
386デフォルトの名無しさん:2006/11/17(金) 20:00:05
ワラタ
387デフォルトの名無しさん:2006/11/17(金) 20:01:38
C#マネージコードでスクリーンセーバーのような
CGを描写するプログラムを書いていて、
その画面を動画ファイルとして出力する機能をつけたいと考えています。
動画を作るライブラリはVideo For Windowsなど色々あるようですが、
何を使うのが一番最適でしょうか?
388デフォルトの名無しさん:2006/11/17(金) 20:43:23
>>385
おい、死に時らしいぜ
389デフォルトの名無しさん:2006/11/17(金) 23:48:07
>>385
GCが後ろで待ってるおw
390デフォルトの名無しさん:2006/11/17(金) 23:57:22
res385 = null;
System.GC.Collect();

こうですか!!わかりません><
391デフォルトの名無しさん:2006/11/18(土) 00:30:24
便乗っぽいですけど、オブジェクト参照値をクラス変数として
持たせた場合にも参照地にnullをセットすれば勝手にGCが効くんですか?
392デフォルトの名無しさん:2006/11/18(土) 00:34:52
>>391
他から参照されてなければ刈ってくれるでしょ。

尤も実際に目で確かめる術はないけど。
393デフォルトの名無しさん:2006/11/18(土) 00:43:04
>>392
> 尤も実際に目で確かめる術はないけど。

つ WeakReference
394デフォルトの名無しさん:2006/11/18(土) 03:48:05
>>391
意味無いから、やめとけw
消えるべき時に、勝手に消える。
395デフォルトの名無しさん:2006/11/18(土) 22:40:53
質問です。

BitmapのLockbitsメソッドでゲットしたイメージメモリに対して
Cで記述したネイティブコードからイメージ操作することは可能でしょうか?

396デフォルトの名無しさん:2006/11/18(土) 22:49:18
やったことないけどunsafeコードでポインタ使って操作できるくらいだから、できるんじゃね?
397デフォルトの名無しさん:2006/11/18(土) 23:36:10
もちろんそうよ
398395:2006/11/18(土) 23:36:59
395です。
今試したらできました!
399デフォルトの名無しさん:2006/11/19(日) 10:12:40
フォームクラス内にリストを作って、そこをべつのフォームから参照しようと
しているのですができません。
public List<string>でできると思ったのですが。
どうすればいいのでしょうか。どなたかご教示ください。
400デフォルトの名無しさん:2006/11/19(日) 10:37:53
非staticメンバなら
フォームクラスForm1のインスタンスをform1とすると
 form1.list
staticなら
 Form1.list
401395:2006/11/19(日) 12:54:48
あ〜あ。

私のやりたかったことは、画像のエフェクト処理をCで書いたDLLに任せることだったんだけど、
試しに、Cで作ったエフェクトルーチンをC#に移植しても、スピードが変わらなかった。

C#って遅いと思ってたけど、ほぼネイティブ並のスピード出るのね・・・。
JITコンパイラはきちんとSSE/SSE2命令使ってくれるし。

すみません、チラ裏でした。
402デフォルトの名無しさん:2006/11/19(日) 13:04:23
>>401氏は頭が悪いと見た
403395:2006/11/19(日) 13:12:49
頭、悪いですよー。
MSX時代から思考が止まってます。
404デフォルトの名無しさん:2006/11/19(日) 13:50:15
Z80世代はホント頭悪いからね
405デフォルトの名無しさん:2006/11/19(日) 14:23:19
>>401
まあ、遅いのは初回起動のみだし。

そういや、今、自宅で新しく買った PC に Vista RC2 入れてるんだけど、
.NET アプリの起動がむちゃくちゃ早い(ほんとに一瞬)んだけど。
これは、PC のスペックいいからなのか、
Vista では CLR の最適化かかってるからなのか、どっちなんだろう?
406デフォルトの名無しさん:2006/11/19(日) 14:26:00
OS起動時にロードされてる
407デフォルトの名無しさん:2006/11/19(日) 14:36:18
うむ、知らないで遅い遅い言ってる馬鹿もいるんだよなあ
408デフォルトの名無しさん:2006/11/19(日) 14:58:53
>>405
うちでは大差ないよ。
たぶんスペックのせいかと
409デフォルトの名無しさん:2006/11/19(日) 15:24:10
XPとVista両方に.Net製のシェルエクステンションを仕込んでるけど、
XPはログオンに時間がかかるがVistaは確かにかなり速い。
410デフォルトの名無しさん:2006/11/19(日) 15:38:06
Vistaはリソース食い過ぎ('A`)


そういえば、Vista対応のために、XPからの変更点のまとめってありませんか?
システムフォルダがお引っ越しor内部で勝手にリンクするというのは聞いたんですが。
411デフォルトの名無しさん:2006/11/19(日) 15:38:58
Vista1/31リリースだっけか・・・
3年後位には主流になるのかねぇ・・・

412デフォルトの名無しさん:2006/11/19(日) 16:26:05
馬鹿発見>>408
413デフォルトの名無しさん:2006/11/19(日) 21:04:14
>>405
SuperFetchが効いてるんじゃね?重量級のアプリにはかなり
効くようだ。VSとか。
メモリたくさんつまないと駄目だけど。
414405:2006/11/19(日) 21:23:29
>>413
メモリ2GB積んでる。
無駄にオーバースペックなもの買ってみた。

要するに、JIT が早いのは単にプロセッサ性能、
動作が速いのは .NET Framework のコンポーネントが
SuperFetch であらかじめメモリ上にロードされてるから
ってことでいいのかな?
415デフォルトの名無しさん:2006/11/19(日) 21:48:04
意外と知らないで遅い遅いと.NET使ってる奴が多いってことか
なんだかね
416デフォルトの名無しさん:2006/11/19(日) 23:28:29
>>415
パソコンを使っている人の大半はあなたみたいなヲタクではありません。
大半の人に使っていただくためには屁理屈こねて遅くないんだよなんていってて・・・
417デフォルトの名無しさん:2006/11/19(日) 23:33:11
>>416
415じゃないけど、開発者する人間なら…
418417:2006/11/19(日) 23:33:49
× 開発者する人間
○ 開発する人間
419デフォルトの名無しさん:2006/11/19(日) 23:36:37
C#で開発?
420デフォルトの名無しさん:2006/11/19(日) 23:57:28
初心者と勘違いPGが紛れ込んでますねw
421デフォルトの名無しさん:2006/11/20(月) 00:13:35
ヲタクばっかですねw
422395:2006/11/20(月) 08:42:22
ベンチマークです。

pentium4 1.7GHz
C#(JIT):16593.75ms
C(SSE2):19250ms
C(SSE):15031.25ms
C(FPU):20125ms

athlon64 2.4GHz
C#(JIT):4296.875ms
C(SSE2):3640.625ms
C(SSE):3796.875ms
C(FPU):6859.375ms
423デフォルトの名無しさん:2006/11/20(月) 10:33:07
>376
もう遅いかもしれないけど、そのセルを編集中かどうかで変わってくる。
編集中はセルのEditingControlがイベントを受け取るので、
そっちで処理しないといけない。
424デフォルトの名無しさん:2006/11/20(月) 10:43:03
>>415
普通のプログラマなら、遅いのが、
・不適切なアルゴリズム選択による遅さなのか (ex. クイックソートとバブルソート、ハッシュ探索と線形探索)
・設計のまずさに起因する遅さなのか
・他のサブシステムに起因する遅さなのか (ネットワーク、ウィンドウシステム、ディスクI/O、など)
・本当に、言語による遅さなのか
などを、経験なり、思考なり、プロファイラ使うなりして判断できるが、
ヘボプログラマ程、遅さの原因を考えることなく、言語のせいにする。
ましてや、自分のアルゴリズム選択ミスだなんて考えもしない。
最終的には、CPUが遅い、とかぬかしだす。
425デフォルトの名無しさん:2006/11/20(月) 11:04:14
MFCでいうところの SetRedraw(BOOL) ってありますか?

Form上のLabelなどの表示を切り替える際に、一度Labelをクリアしてから値代入してるのですが
426425:2006/11/20(月) 11:04:56
それだと2回描画してしまうので、描画を抑えたいのです


途中で送信してしまいました・・・
427デフォルトの名無しさん:2006/11/20(月) 11:08:42
コンテナをSuspendLayout/ResumeLayout()したらどう?
428デフォルトの名無しさん:2006/11/20(月) 11:12:00
WM_SETREDRAWを送れば
429425:2006/11/20(月) 12:06:26
>>427 ありがとうございました (≧∇≦)b
430デフォルトの名無しさん:2006/11/20(月) 13:42:37
ファイルハッシュを取得する関数ってありますでしょうか?
MsiGetFileHash のような関数を探しているのですが、見つけられなくて…(´д`;
431デフォルトの名無しさん:2006/11/20(月) 15:03:37
>>430
using System.Security.Cryptography;
かな?
432デフォルトの名無しさん:2006/11/20(月) 15:04:57
PInvokeするか
MD5CryptoServiceProviderにFileStreamくわせるか、かな?
433430:2006/11/20(月) 15:35:35
>>431-432
ありがとうございます、試してみますm(__)m
434デフォルトの名無しさん:2006/11/20(月) 21:39:41
初めまして。
現在既に起動しているIE6.0のWindowハンドルを取得し、その上に線の描画を行おうとしています。
IEのWindowハンドルは取得できたのですが、そこから線を描画する方法が分かりません。
どの様な解決方法があるでしょうか?
どなたかご教授下さい。
435デフォルトの名無しさん:2006/11/20(月) 21:52:13
多分全部 Win32API / GDI でやった方が早いな。
GetDC / CreatePen / SelectObject / LineTo 辺りか?
ただし 434 が望んでる結果になるとは限らない。
436デフォルトの名無しさん:2006/11/20(月) 22:00:29
再描画とか考えたら面倒くさそうだな。
437デフォルトの名無しさん:2006/11/20(月) 22:04:10
hdcからGraphicsオブジェクトとって描画なら簡単だけど、
>>436の言う通り、再描画が発生したら消えるね
438デフォルトの名無しさん:2006/11/20(月) 22:36:26
>434です。
透明なFormWindowを作成してそこに線を描画し、IEのWindowの上に被せるという
方法も考えたんですけども。。。

>>435 さんと >>437 さんの方法は同じ方法なんでしょうか?
439デフォルトの名無しさん:2006/11/20(月) 22:41:03
[DllImport( "user32.dll" )]
private static extern IntPtr GetWindowDC( IntPtr handle );
[DllImport( "user32.dll" )]
private static extern IntPtr ReleaseDC( IntPtr hWnd, IntPtr hDC );

private void button1_Click( object sender, EventArgs e )
{
    IntPtr hWnd = IEのウインドウハンドル
    IntPtr hDC = GetWindowDC( hWnd );// またはGetDC
    Graphics g = Graphics.FromHdc( hDC );

    //好きに描画
    g.FillRectangle( SystemBrushes.ControlText, new Rectangle( 0, 0, 100, 100 ) );

    g.Dispose();
    ReleaseDC( hWnd, hDC );
}
440デフォルトの名無しさん:2006/11/20(月) 23:34:21
>>434です。

>>439さん。有難う御座います。
この方法でIEのWindowに描画することが出来ました。
ここから線の再描画をする方法を採ってみようと思います。
441デフォルトの名無しさん:2006/11/21(火) 00:00:33
(^^)イイエ、ドウイタシマシテ
442デフォルトの名無しさん:2006/11/21(火) 00:13:41
>>441>>439じゃないと俺の直感が騒ぐ
443デフォルトの名無しさん:2006/11/21(火) 00:35:50
DivXのCodecがインストールされている環境で
動画ファイルをDivXで圧縮するツールを
作りたいと思うのですが、.NET1.1 + C#では
どのようにしたらいいのか、どなたかヒントを
いただけませんか。

やりたいことは
 複数のデジカメ動画を検索し
 DivXで圧縮し
 あるルールでファイル名を付け
 タイムスタンプを変換元ファイルに合わせる
という感じです。

「DivXで圧縮し」以外の部分はできています。

よろしくお願いします。
444デフォルトの名無しさん:2006/11/21(火) 00:51:42
コマンドラインでaviutilを起動する
445デフォルトの名無しさん:2006/11/21(火) 01:07:45
>>443
DirectShow叩けばいいんじゃないか?
446デフォルトの名無しさん:2006/11/21(火) 08:09:55
>>444,445
どっちがやりやすいか調べて試してみます。
ありがとうございました。
447デフォルトの名無しさん:2006/11/21(火) 15:59:46
文字列のリストに対して、リスト内の個々の要素の文字列の編集を行う処理を考えています。
更に、全てのリスト内の文字列の編集処理後、メインの関数を抜けたいと考えています。
リストにしているのは文字列の順番を記憶したいからです。

以下のThreadMethodように引数を持つスレッドを作成したい場合、
ThreadPoolを使うと良いそうなのですが、joinのような待ちの実現方法が分かりませんでした。

ThreadPoolでの待ちの実現について、また、ThreadPoolを使わなくてもできるよ。そもそもリストじゃなくてこうすれば効率が良い!など、アドバイスいただければと思います。

public bool MainMethod( .... )
{
 ArrayList arrayList = new ArrayList(); // (仮)
 
 // arrayListの個々の要素に文字列を生成する処理

 WaitCallback waitCallback = new WaitCallback(ThreadMethod);// コールバック作成
 
 // arrayList要素数分ループ
 for(int i = 0;i < arrayList.Count; i++)
 {
  // スレッドでarrayListの文字を更に改変する処理
  ThreadPool.QueueUserWorkItem(waitCallback, arrayList[i]);
 }
 
 // 待ち
 return true;
}

public void ThreadMethod(object aStr)
{
 // aStrの編集
}
448デフォルトの名無しさん:2006/11/21(火) 16:35:54
ThreadPoolは使ったことないが、なんで別スレッドにする必要があるの?
joinするんだったらメインスレッドがブロックされるから別スレッドにする意味がないのでは?
449デフォルトの名無しさん:2006/11/21(火) 16:37:11
まず、リストのアイテム編集ごときになぜ別スレッドを使いたいのか分からない。
だって終わるまで待ちたいんでしょ?

どうしてもスレッド使いたいなら、
Thread.Startで引数にArrayListそのものを渡してそっちでループしたら?
あと、.net2.0ならList<string>使った方がいいんじゃ?
450デフォルトの名無しさん:2006/11/21(火) 17:04:55
ThreadPoolは挙動が信用できないので自分で同じような仕組みを作り、Jobとして渡している。
Jobについては下位Jobを持つことができ親Jobは下位Jobがすべて終わった場合にそのJobが終わったことになる。
451デフォルトの名無しさん:2006/11/21(火) 17:27:51
誰と喋ってるんですか?
452450:2006/11/21(火) 21:48:54
独り言、気にするな。
453デフォルトの名無しさん:2006/11/21(火) 21:54:07
>>452
オナニーは別な所でやってください
454450:2006/11/21(火) 22:02:40
   ∧∧
   /⌒ヽ) 
  i三 ∪
 ○三 |
  (/~∪
  三三
 三三
三三三
455デフォルトの名無しさん:2006/11/21(火) 23:37:30
SplitContainerでVerticalで使用しています。
通常右の部分は必要ないので左の部分がFormいっぱいに表示されていて
なんらかのトリガでFormの半分づつに左右が表示されるようにするには
どうしたらいいですか?
C#
456デフォルトの名無しさん:2006/11/21(火) 23:41:06
幅を計算して SplitterDistance だったかに代入すればいいじゃん
457デフォルトの名無しさん:2006/11/21(火) 23:41:17
いらんときは左のコントロールを直接フォームに載せとけばいいんじゃね
458デフォルトの名無しさん:2006/11/21(火) 23:42:50
Panel1Collapsedとかなかったか?
459デフォルトの名無しさん:2006/11/21(火) 23:45:30
エクリプスでC#を使えるようにする方法を教えてください
できるとききました
460デフォルトの名無しさん:2006/11/21(火) 23:48:03
言った奴に聞けよ
461デフォルトの名無しさん:2006/11/21(火) 23:50:17
>>459
やめとけ。えくりぷすなんて、java以外で役にややない。
462デフォルトの名無しさん:2006/11/22(水) 00:06:33
>>459
http://www.improve-technologies.com/alpha/esharp/
「eclipse csharp」で見つかったけど。
463デフォルトの名無しさん:2006/11/22(水) 00:10:22
>>462
まりがd♪
>>461
使いやすいよp使えば使うほどはまるしするめみたいなもんだおp
464デフォルトの名無しさん:2006/11/22(水) 02:38:47
C#つか、マネージコードでLWやMAYA、3DSといったヘビーなCGソフトって作れるの?
動けばイイ程度のものなら俺でも作れるが、数十万、数百万出して購入するユーザを
納得させるのは難しそう
465デフォルトの名無しさん:2006/11/22(水) 07:32:22
何でそういう速度がきわめて重視されるところにマネージコード持ってくるかな(´-`).。oO(・・・・・・・・・)
でも速度以外の面では遜色ないもの作れると思うよ。
466デフォルトの名無しさん:2006/11/22(水) 07:57:36
CPUの速さが現在の2倍になればおk
467デフォルトの名無しさん:2006/11/22(水) 07:59:22
468デフォルトの名無しさん:2006/11/22(水) 08:20:09
>>464の質問は、

20年前のプログラマに
「C言語つか、コンパイラで吐き出したコードでファミコンのアクションゲームって作れるの?」
と質問するのと変わらん。


469デフォルトの名無しさん:2006/11/22(水) 09:30:50
いつの時代もソフトがハードを牽引する
470デフォルトの名無しさん:2006/11/22(水) 10:03:42
>>464
BVEはvb.netで作られている
471デフォルトの名無しさん:2006/11/22(水) 10:32:42
>>464-465
いや、本当に速度が必要なところだけC++で書いて、P/Invokeすれば良いだけの
話だろ。
確かに、グラフィックス関係だと、テクスチャのような大量のデータをハンドリングしないといけないので、
それを、マネージドとアンマネージドの間で橋渡しするあたりで、工夫がいると思うけど。
472447:2006/11/22(水) 12:15:13
>>448-450
ありがとうございます。
リストの先頭から順番に処理するとかなり時間かかったので、
同時にスタートさせれば多少なり早く処理がおわるかなぁ。とか思ってました。

とりあえずスレッドは意味がないそうなのでやめて、Listでやってみます。
473デフォルトの名無しさん:2006/11/22(水) 12:21:09
>>472
とりあえずコンピュータの仕組みをもうちょっと理解したほうがいいと思う
474デフォルトの名無しさん:2006/11/22(水) 15:20:08
宜しくお願いします。

http://support.microsoft.com/kb/316384/
wordオートメーションを作ろうと思って、
これを実行しました。

そしたら、このようなエラーがでました。
http://kasarfa.com/modules/php/bbs/ubbs/image/1164176285.gif

このエラーを解決するのにいろいろぐぐりましたが、
まったくわからずに、途方にくれております。

よろしくお願い申し上げます。

475474:2006/11/22(水) 15:36:25
今までは、こんなバグでなかったのに急にでました。

今日の朝は、ちゃんとオートメーションできてました。
今日の午後から上のバグがでるようになりました。

お昼には、パソコンにインストールされていた
ノートンアンチウィルスをアンインストールしました。

出来事といったら、このくらいです。
word2003を再インストールしてもなおりませんでした。

WindowsXPsp2
Word2003
476デフォルトの名無しさん:2006/11/22(水) 15:51:14
wordへの参照をいっかい削除して、もう一回参照に入れてみては?
477デフォルトの名無しさん:2006/11/22(水) 16:34:13
Rectangle(0, 0, 640, 480) のサイズは641*481ですか?
478デフォルトの名無しさん:2006/11/22(水) 16:36:48
ちがいます
479デフォルトの名無しさん:2006/11/22(水) 16:40:00
それくらい試せよw
480デフォルトの名無しさん:2006/11/22(水) 16:42:23
じゃなくてRectangle(0, 0, 640, 480)の四角は(0, 0)-(639, 479)ですか?
481474:2006/11/22(水) 16:44:02
>>476
レスありがとう。
確かにwordへの参照をやり直せばうまくいくような気がしたので、
上で投稿する前に、ご指摘のことは既に試しておりました。
そして、結果は芳しくありませんでした。
482デフォルトの名無しさん:2006/11/22(水) 16:44:42
483デフォルトの名無しさん:2006/11/22(水) 19:54:19
.NETアプリ→ネイティブアプリ変換ツールを作成したけど要る?
484デフォルトの名無しさん:2006/11/22(水) 20:00:10
いらない
485デフォルトの名無しさん:2006/11/22(水) 21:00:51
ListViewGroup ってオーナードローできませんか
486デフォルトの名無しさん:2006/11/22(水) 21:29:33
だな
487デフォルトの名無しさん:2006/11/22(水) 21:39:42
>>485
GetDCしてデバコンに自前で描画すればイイだけのことでは?
488デフォルトの名無しさん:2006/11/22(水) 21:55:17
>>485
ListViewGroup ってコントロールじゃないし

ListViewのオーナー泥でアイテムのグループみて自前でやる。
489デフォルトの名無しさん:2006/11/22(水) 22:04:15
DrawItem イベントはあるけど DrawGroup イベントがないのよ
490デフォルトの名無しさん:2006/11/23(木) 10:39:26
ToolStripMenuItem の派生クラスをデザイナで貼り付けるときに
DesignMode プロパティが true にならない現象がおきます

[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.All)]
public class ToolStripMenuItemDerived : ToolStripMenuItem{
  public ToolStripMenuItemDerived() : base(){
    base.Text = "aaa";
    if (base.DesignMode) return;
    base.Text = "bbb";
  }
}

上記の ToolStripMenuItemDerived をデザイナで貼り付けたときには
aaa と表示されずに bbb と表示されてしまいます
仕方がないので
base.Text = "aaa";
#if ! DEBUG
base.Text = "bbb";
#endif
としデザイナを使うときはコンフィギュレーションを Debug にしています
もっとスマートな方法はないものでしょうか
491デフォルトの名無しさん:2006/11/23(木) 10:40:36
>>490
ワロタw
492デフォルトの名無しさん:2006/11/23(木) 10:49:01
>>490
そんなコーディングがまず必要なのかが(ry

ttp://support.microsoft.com/kb/839202/ja
493デフォルトの名無しさん:2006/11/23(木) 13:14:10
必要な場合もあるでしょ。
LicenseManager.CurrentContext.UsageMode == LicenseUsageMode.Designtimeとかでうまくいかない?
494デフォルトの名無しさん:2006/11/24(金) 12:11:23
3.0のスケジュールについて情報ないですか?
495デフォルトの名無しさん:2006/11/24(金) 12:38:22
C#3.0のことだとしてOrcasと一緒に出すとMSは主張
496デフォルトの名無しさん:2006/11/24(金) 12:58:31
ここにかいてるんだからC#3.0のことでしょ。でOrcasいつ?
497デフォルトの名無しさん:2006/11/24(金) 14:32:01
protected TcpListener _tcpListener;


// TCPリスナーを生成する
_tcpListener = new TcpListener(ip, portnb);

// TCPリスナーを開く
_tcpListener.Start();

// 保留中の接続要求があるかどうかを確認する
if (_tcpListener.Pending() == true)
{
// クライアントからの接続要求を受け入れる
_tcpClient = _tcpListener.AcceptTcpClient();

// KeepAliveの設定
_tcpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, 30000);
}

上記のようにサーバー側でクライアントの接続を受け入れて
TCPにて伝文の送受信を行っています。

中継装置(HUB)を経由して接続している時、クライアントのLANケーブル
が抜けた(切断)されたことを検出する為、KeepAliveの機能を用いる
方向で実装していますが・・・検出できませんでした。
おそらくKeepAliveの使い方が悪いと思うのですが・・・どなたかご存知ないでしょうか?
498デフォルトの名無しさん:2006/11/24(金) 15:19:15
Reflectionをつかうとprivateだろうがinternalだろうが値を設定・取得できるってことでOKですか?
499デフォルトの名無しさん:2006/11/24(金) 18:24:14
>>497です。自己解決しますた。

byte[] inBuffer = new byte[12];

BitConverter.GetBytes(1).CopyTo(inBuffer, 0); // スイッチ
BitConverter.GetBytes(30000).CopyTo(inBuffer, 4); // Interval

_tcpClient.Client.IOControl(IOControlCode.KeepAliveValues, inBuffer, null);

上記の方法で30秒後に切断を検出できました。
DOS窓のnetstatでもidolになりました。
500デフォルトの名無しさん:2006/11/24(金) 18:43:36
ListやDictionaryなどのGeneric型のタイプを持ってくる場合、FullNameはどのように指定したらいいんでしょう?
501デフォルトの名無しさん:2006/11/24(金) 18:48:33
>>500
typeof(List<>).FullName: System.Collections.Generic.List`1
typeof(Dictionary<,>).FullName: System.Collections.Generic.Dictionary`2
502デフォルトの名無しさん:2006/11/24(金) 19:20:54

DataRowのインスタンスが2つあって、これらが等しいか(各列の値がすべて等しいか)
を調べるにはどうすればよいのでしょう?

DataTableに、DataRowインスタンスを追加するときに、同じ内容のものがあった場合は、
追加しない、という処理を行おうと思ってます。
503デフォルトの名無しさん:2006/11/24(金) 20:34:43
各列の値がすべて等しいか調べればいいんじゃね?
504502:2006/11/24(金) 22:02:49
その方法しかないんですかね。。?
とりあえず、Rows[n].ItemArrayを一個一個しらべて
すべて同じだったら等しい
という方法ではできましたけど、
ItemArrayを配列として比較するとダメなんですよね。
RowとRowのオブジェクト同士を比較できる便利な関数とかってないものか。
505デフォルトの名無しさん:2006/11/24(金) 22:13:12
>>501 さんくすこ。
506デフォルトの名無しさん:2006/11/24(金) 22:15:30
どういたしまむこ。
507デフォルトの名無しさん:2006/11/24(金) 22:25:35
>>504
その、「RowとRowのオブジェクト同士を比較できる便利な関数」というのも
結局同じことをするんじゃね?

それとも、Cellの内容が変わるたびに中身を構造体にでも突っ込んで
隠しCellにGetHashCodeでハッシュもっておくとかしたら?
面倒くさそうだけど。
508デフォルトの名無しさん:2006/11/24(金) 23:02:11
DataTable.Constraintsに全列を含んだUniqueConstraintを追加して
Rows.AddしたときにConstraintExceptionをcatchするとか
509デフォルトの名無しさん:2006/11/24(金) 23:11:49
C#で遊び始めて三ヶ月の者です。
質問なのですが、VSで言うプロパティウインドウのようなものを作ることが出来る
コントロールなどは既にあるのでしょうか?

今やりたい事は、2列のテーブルで各プロパティを入力するんですが、
行によってコンボボックスに設定出来るようにしたいんです。

やはり自作するしかないのでしょうか?
510デフォルトの名無しさん:2006/11/24(金) 23:13:42
>>509
System.Windows.Forms.PropertyGrid
FAQ中のFAQ。適当にググって
511デフォルトの名無しさん:2006/11/24(金) 23:17:39
ttp://support.microsoft.com/kb/403844/ja
PGが起動してるときだけスクリーンセーバが動かないPGを作ってるんだけど
リンク先のやり方だとパスワード保護されてるとうまく動かないんです
パスワード保護の時って発行されてるメッセージって違うみたいですが
どうすればフック出来るか知りたいんですが
512デフォルトの名無しさん:2006/11/24(金) 23:29:59
Win32APIに詳しいお兄さんのいるスレにでも行ったほうがいいんじゃね?
513デフォルトの名無しさん:2006/11/24(金) 23:35:15
>>511
レジストリの値書き換えてシェルに更新メッセージ送って、
終了時にレジストリ戻す……という荒技をどこかで見た希ガス
514デフォルトの名無しさん:2006/11/24(金) 23:37:03
そんなプログラムは使いたくないな・・・
515デフォルトの名無しさん:2006/11/24(金) 23:39:01
禿同。途中で死んだらそのままなんだろう?
516デフォルトの名無しさん:2006/11/24(金) 23:45:44
レジストリなんて、なくなればいいのに・・・諸悪の根源
517デフォルトの名無しさん:2006/11/24(金) 23:49:10
レジストリそのものはかなり優秀なデータベースなんだがな。
518デフォルトの名無しさん:2006/11/25(土) 00:06:32
>>514
おいらもこんなPG作りたくないっす
でもね・・・・。
レジストリはいじりたくないですね
APIスレに行ってみます
519デフォルトの名無しさん:2006/11/25(土) 00:13:13
レジストリを肥大化させてHDDをパッツンパッツンにするソフトでも作るか
520デフォルトの名無しさん:2006/11/25(土) 01:16:57
>>519
sexy dynamite!
521デフォルトの名無しさん:2006/11/25(土) 01:20:04
>>511
SystemParametersInfo
で制御すれば
522デフォルトの名無しさん:2006/11/25(土) 10:19:39
内部的にレジストリいじくるんでしょ
523デフォルトの名無しさん:2006/11/25(土) 12:52:51
>>510
あったんですか……気付きませんでしたorz

ありがとうございました!
524デフォルトの名無しさん:2006/11/25(土) 13:24:39
ラジオボタンじゃなくてコンボボックスにしよう、いやリストボックスにしよう、やっぱラジオボタンがよかったかな…

このたびにソース修正するのがめんどくさいなー

どうすればいいですか?
525デフォルトの名無しさん:2006/11/25(土) 13:33:02
とりあえず全部つっこんで
enable/disableで使わない方を消しておけ
526デフォルトの名無しさん:2006/11/25(土) 14:26:40
IDE使え
527デフォルトの名無しさん:2006/11/25(土) 14:35:53
井出らっきょ?
528デフォルトの名無しさん:2006/11/25(土) 14:38:26
>>524
計画を立ててからフォームを組むようにする。
529デフォルトの名無しさん:2006/11/25(土) 14:52:51
dataGridView1_CellDoubleClick(sender s, DataGridViewCellEventArgs e)
(DataGridView上をダブルクリックした時のイベント)
をコンテキストメニューをクリックした所から呼び出したいんだけど、
どうすればいいですか?

private void メニューをクリックToolStripMenuItem_Click(object sender, EventArgs e)
{
this.dataGridView1_CellDoubleClick(this,DataGridViewCellEventArgs.Empty);
}
とか無理やりDataGridViewCellEventArgs.Emptyを引数にとってもダメでした。
private void メニューをクリックToolStripMenuItem_Click(object sender, EventArgs e)
{
this.dataGridView1_CellDoubleClick(this,DataGridViewCellEventArgs.Empty);
}
とか無理やりDataGridViewCellEventArgs.Emptyを引数にとってもダメでした。
530デフォルトの名無しさん:2006/11/25(土) 16:05:51
>>464

亀レスだけど、

.NET製のわりと大規模なアプリ
http://www.getpaint.net/index2.html
531デフォルトの名無しさん:2006/11/25(土) 17:17:42
>>525
賢い
532デフォルトの名無しさん:2006/11/25(土) 17:24:46
>>530
そのPaint.NETはこのスレだかで知ったんだけど、
使ってみると意外といいね。
533デフォルトの名無しさん:2006/11/25(土) 17:32:33
>>529
イベントプロパティを呼び出すのは無理。
534デフォルトの名無しさん:2006/11/25(土) 20:14:59
>>529
何がダメなのか分からんが。
普通はメソッド化して両方でそれを呼ぶ
535デフォルトの名無しさん:2006/11/25(土) 22:27:11
>>530
ビミョーなアプリですね

536デフォルトの名無しさん:2006/11/26(日) 11:47:57
Paint.NETはMITだかどっかの大学生が中心となって作ったアプリじゃなかったっけ?
537デフォルトの名無しさん:2006/11/26(日) 12:54:29
>>535
確かにw
538デフォルトの名無しさん:2006/11/26(日) 13:15:28
GIMPよりかは使えるよ
539デフォルトの名無しさん:2006/11/26(日) 13:27:33
なぜGIMPと比較するかねえw
あれは失敗だったと開発者も認めているのにw
540デフォルトの名無しさん:2006/11/26(日) 14:45:04
え!?、開発者がそんなこといってるの?
541474:2006/11/26(日) 17:56:33
お願いします。
542474:2006/11/26(日) 18:02:33
http://support.microsoft.com/kb/215462/ja

現在、この頁を見ています。
確かに、この頁に記載されている通り、
WORD97からのアップグレードとして
WORD2003をインストールしました。

しかし、すでにアップグレードしている状態で、
このような97に関連したエラーが出ているのが
とても不思議です・・・
543デフォルトの名無しさん:2006/11/26(日) 18:05:42
更地のWindowsを用意してそこにWord2003をインストールしてみれば?
544474:2006/11/26(日) 18:21:31
http://kasarfa.com/modules/php/bbs/ubbs/image/1164532848.gif

エラーの詳細をうp致しました。
545デフォルトの名無しさん:2006/11/26(日) 18:23:23
>>544
それができるってことは次はもちろん何をうpすればいいかわかってるだろうな
546デフォルトの名無しさん:2006/11/26(日) 18:23:33
画像壊れてないか?
俺だけなのか?
547デフォルトの名無しさん:2006/11/26(日) 18:24:51
ど、どうしろと
548デフォルトの名無しさん:2006/11/26(日) 18:29:01
C#のバグじゃないですかね・・・?
まだできたてほやほやの言語だし可能性はある
詳細と再現方法をテキストで作ってMSに報告するとよろし
549デフォルトの名無しさん:2006/11/26(日) 18:30:34
うん
550デフォルトの名無しさん:2006/11/26(日) 18:35:24
>>544
8007007eが出てるってことは、何かがCLSIDの関連付けあたりを破壊したんだろう。

セキュリティソフトをアンインスコしてから、Officeの自動修復を試してみるとどうじゃろう。
551474:2006/11/26(日) 18:36:35
いま、regeditで該当するCLSIDを眺めてる・・・
でもどうしようもない・・・
みんな、コメントありがとう!!
明日の朝までにはなおさんと!!!!
552474:2006/11/26(日) 18:40:46
>>550
コメントありがとう。
僕も、ノートンアンチウィルスのアンインストールが
原因だったと思っています。
このアンインストールの前後に、今回の不具合が発生しているので。

でも、このノートンアンチウィルスを
アンインストールした後に、
WORD2003は再インストールしましたし、
修復っていうのも何度か渡来しております。

でも、そういえば、2003をインストールする前に
予めインストールしておいた97には、
今回は、一切何もふれませんでした。

ひょっとすると、97も完全にアンインストールして
(というか、97はもうPCにないよな気がします。)
553474:2006/11/26(日) 18:42:47
HKEY_CLASSES_ROOT\CLSID\{000209FF-0000-0000-C000-000000000046}
というCLSIDを削除してWORD2003をアンインストールし、
又は、WORD2003をアンインストールしてから、このCLSIDを手動で削除し、

そのあとに、再度、WORD2003をインストールしなおせば直るかなぁ・・・・。
554474:2006/11/26(日) 18:45:24
HKEY_CLASSES_ROOT\CLSID\{000209FF-0000-0000-C000-000000000046}
のCLSIDは、↓このようになっております。(一応、うpしてみました。)

http://kasarfa.com/modules/php/bbs/ubbs/image/1164534281.gif
555474:2006/11/26(日) 18:46:21
>>545
レスありがとうございます。
えっと、次は何をうpすればよろしいでしょうか。
556デフォルトの名無しさん:2006/11/26(日) 18:46:34
MSに聞くのが一番手っ取り早い
557デフォルトの名無しさん:2006/11/26(日) 18:46:53
>>553
聞く前に試せよ
558474:2006/11/26(日) 18:50:34
>>557
いま、試しています。
WORD2003を完全アンインストールしました。
559474:2006/11/26(日) 18:51:26
HKEY_CLASSES_ROOT\CLSID\{000209FF-0000-0000-C000-000000000046}

WORD2003をアンインストールしたら
このCLSIDは、併せて削除されていました。
560474:2006/11/26(日) 18:52:52
C:\Documents and Settings\Administrator\Application Data\Microsoft

このフォルダにあるテンプレートもバックアップした上で削除しておきました。
それでは、改めてインストールしてみます。
暖かいご支援、ありがとうございmす。
561デフォルトの名無しさん:2006/11/26(日) 19:51:33
何でこんなにスレが汚れてる?
562デフォルトの名無しさん:2006/11/26(日) 20:03:00
明らかにスレ違いな質問に親切に答えちゃってるからだろう。
563デフォルトの名無しさん:2006/11/26(日) 20:55:22
>>562
答えてるっつーかからかってるように見える
564デフォルトの名無しさん:2006/11/26(日) 22:13:23
インスタンス生成して、もういらなくなったからメモリ解放したい場合って
Dispose()でいいんですか?
Disposeした後にそのインスタンスのプロパティに普通にアクセスできるし変更できて
解放されていないようなんですけど。
Disposeした後、解放のタイミングはCLRにおまかせで、
今すぐメモリ解放ということは不可能なんですか?
565デフォルトの名無しさん:2006/11/26(日) 22:16:43
>Disposeした後にそのインスタンスのプロパティに普通にアクセスできるし変更できて
>解放されていないようなんですけど

そういうことはやめましょう。

null代入してほっとけばGCされるのでほっとけ。
566デフォルトの名無しさん:2006/11/26(日) 22:18:41
>>564
お前C++使いだな

ふらっとC♯, C#(初心者用) Part10
http://pc8.2ch.net/test/read.cgi/tech/1162193452/
567デフォルトの名無しさん:2006/11/26(日) 22:25:18
えーっとググレカスでいいのかな?

http://www.atmarkit.co.jp/fdotnet/dotnettips/027dispose/dispose.html
568474:2006/11/26(日) 22:41:42
スレチでしょうか…
569デフォルトの名無しさん:2006/11/26(日) 22:45:08
>>565
メモリ使用量が減っていないのでまだ残ってんじゃないの?と思い
ためしにやってみました。null代入した後だと流石にあとかたもなくなってますね。
メモリ解放はdisposeと同様に即座にはされないようですけど。
>>566
いや、C#君ですよ。低レベルすぎてスレ違い?
>>567
よんだけどそれ回答になってないでしょ。

ずばり、インスタンスが使用しているメモリ空間を即解放するにはどうすれば良いか?
という問いの答えは、マネージドコードでは不可能 なんですかね。
570デフォルトの名無しさん:2006/11/26(日) 22:47:26
>>565
nullを代入することに何の意味があるんだ?
571デフォルトの名無しさん:2006/11/26(日) 22:48:39
> インスタンスが使用しているメモリ空間を即解放

んなこといってるからC++使いだって言われるんじゃよー

> マネージドコードでは不可能

GC対象メモリであれば強制GCを呼べばいいよ。System.GCだっけ。
でも実際に行われるかどうかは知らない。

メモリ使用量がタスクマネージャのそれだとすれば、不可能だねえ。
ヒープはすぐにコンパクト化されるわけではないし。
572デフォルトの名無しさん:2006/11/26(日) 22:50:25
頭の中のすべては値型にでもなってるんじゃマイカ?
573デフォルトの名無しさん:2006/11/26(日) 22:50:35
つかなんのための「マネージド」だと思ってんだろ
574デフォルトの名無しさん:2006/11/26(日) 22:59:06
C#では、メモリ管理はGCにまかせましょう。(つまりメモリ解放のタイミングは予測不可。それでいい。)
Disposeとメモリ解放は全く関係ありません。
Disposeが解放するのはアンマネージドリソースです。
575デフォルトの名無しさん:2006/11/26(日) 23:00:37
>>570
GCは確保したオブジェクトが、どこかから参照されているかどうかで
GC対象かどうか判断してるんじゃなかったっけ?
null代入して参照数をゼロにしないと、プログラム終了まで
インスタンスメモリは確保されっぱなしの可能性がある。
576デフォルトの名無しさん:2006/11/26(日) 23:02:35
>>569

>それが単なるメモリ領域なら、使用可能なメモリ容量に余裕がある限り、
>回収されずに放置されるケースがあってもそれほど問題とはならない
577474:2006/11/26(日) 23:03:28
誘導お願いします、家に帰れません…
578デフォルトの名無しさん:2006/11/26(日) 23:04:35
>>575
スコープってしってる?
579デフォルトの名無しさん:2006/11/26(日) 23:05:24
>>577
ぐだぐだやってないでOSからクリーンインスコしろ
580デフォルトの名無しさん:2006/11/26(日) 23:06:02
>>596
一般的には、弱参照以外の参照を切ってGC.CollectでGC発動
させれば回収される。
Finalizer持っていてかつ、SupressFinalizeされていなければ、
さらにFinalizerの終了を待って、GC.Collectで回収。
ただ、この行為はともにスループットをほぼ確実に落とす。

もっといえば、2.0だとさらに複雑になっていて「正確に」こんな
ところで説明するのは長すぎるかも。「即開放は不可能」というより、
システム側にその権利は譲った(そして最適化の余地を作った)が
正しい。
581474:2006/11/26(日) 23:07:24
誘導お願いします、家に帰れません…
582デフォルトの名無しさん:2006/11/26(日) 23:09:44
>>578
スコープから外れない場合があることを忘れずに…

form
583デフォルトの名無しさん:2006/11/26(日) 23:14:09
>>581
vbsとかからはCreateObjectできんの?
584デフォルトの名無しさん:2006/11/26(日) 23:15:53
環境依存っぽいからこちら側では解答できません。
スルーします。
585デフォルトの名無しさん:2006/11/26(日) 23:16:22
586デフォルトの名無しさん:2006/11/26(日) 23:17:15
>>585
思わず吹いた
587デフォルトの名無しさん:2006/11/26(日) 23:21:16
>>569
古いけどググレカスでいいのかな?

http://www.atmarkit.co.jp/fdotnet/dotnettips/021gc/gc.html
588デフォルトの名無しさん:2006/11/26(日) 23:56:52
クラスのデストラクタはなんに使うですか?
589デフォルトの名無しさん:2006/11/26(日) 23:57:17
>メモリ使用量が減っていないのでまだ残ってんじゃないの?と思い
>ためしにやってみました。null代入した後だと流石にあとかたもなくなってますね。
何言ってんだか
590デフォルトの名無しさん:2006/11/26(日) 23:59:04
>インスタンスが使用しているメモリ空間を即解放するにはどうすれば良いか?
即開放は必要ないんじゃない?それに即開放が正しいかどうか分からない場合がある。
C++等では開放してはいけないメモリを勝手に開放して困る場合があった。
人間は簡単にへまをする。
GCだとその可能性は低い。
591デフォルトの名無しさん:2006/11/27(月) 00:01:04
>>589
上に書いてあるように
>インスタンスのプロパティに普通にアクセスできるし変更できて
とあるじゃないか?
592デフォルトの名無しさん:2006/11/27(月) 00:03:17
>>588
デストラクタはObject.Finalizeのオーバーライドにコンパイルされる。
593474:2006/11/27(月) 00:03:22
>583
レス、ありがとう。でも、12時過ぎて電源落とされたんで、タクシーで家に帰ることにしました。明日、朝一でまたクライアントのところへ出張いかないとです…なおんなくって怒られるのが目に見えてて鬱です…。
594デフォルトの名無しさん:2006/11/27(月) 00:03:26
その流れで、nullを代入した後だとあとかたもなくなった
この意味が理解できるか?ってか意味不明
595デフォルトの名無しさん:2006/11/27(月) 00:14:26
>>569
マネージドではどのリソースがどこのメモリ空間を占有しているって概念がないのよ。
fixedしないとポインタが使えないのも、勝手に整理されてメモリ上を動いてしまうから。
596デフォルトの名無しさん:2006/11/27(月) 00:35:53
Dispose()したオブジェクトは消滅していないのでしょうか?
597デフォルトの名無しさん:2006/11/27(月) 00:40:31
Dispose だろうがただのメソッドだ
598デフォルトの名無しさん:2006/11/27(月) 00:43:24
>>596
ならDispose()しないでいいじゃんってこと?
ばかん♪
599デフォルトの名無しさん:2006/11/27(月) 00:43:47
>>594
読解力ないんだよ。
600デフォルトの名無しさん:2006/11/27(月) 00:45:42
いやさ消滅させる処理書かないとと構文的にシンメトリーじゃないじゃん?
601デフォルトの名無しさん:2006/11/27(月) 00:48:15
>>596
Disposeはオブジェクトの持っているアンマネージドリソースを開放するメソッド
602デフォルトの名無しさん:2006/11/27(月) 00:49:41
>>600
そこまで気になるなら勝手にCでも使っててくれよ。
603デフォルトの名無しさん:2006/11/27(月) 00:50:01
リセットボタンおせば消滅するよ
604デフォルトの名無しさん:2006/11/27(月) 00:55:10
Cつかってもfreeが必要ないとか言い出すバカがいるわけで
605デフォルトの名無しさん:2006/11/27(月) 00:59:46
>>599
じゃ意味が通るように説明してみろ。

null代入したら普通はたどれる元がないんだから
そりゃメンバにはアクセスできんだろうが、
「それはあとかたなく開放されたからだ」
とでも言う気かよ。
GC起こるまで消えてないことには何のかわりもない。
なんらかの方法でメンバにアクセスしたら普通にアクセスできるわな。
606デフォルトの名無しさん:2006/11/27(月) 01:00:58
>>601
厳密に言えばSystem.Transactionsのような例外も出てきたから
そうではないのだけど、主目的なのは確かだな。

つか一回Disposeが必要なクラス、アンマネージラッパを書いて
みればとてもよくわかるんだけど、それなりに暗黒面なので難しい
のだろうなぁ。
607デフォルトの名無しさん:2006/11/27(月) 01:01:39
>>605
それってシュレディンガーの猫っぽいね
608デフォルトの名無しさん:2006/11/27(月) 01:15:38
>>607
ふふふ。覚えた言葉をうれしそうに遣いたがる。
609デフォルトの名無しさん:2006/11/27(月) 01:40:24
きもいよ
610デフォルトの名無しさん:2006/11/27(月) 01:56:09
>>605
オマイの日本語お勉強スレじゃねーんだよ
611デフォルトの名無しさん:2006/11/27(月) 01:56:43
いきなり横やりスマソ。

mobileでのwebアプリを作るにあたって、DBから値を引っ張ってきてそれを元にmobilelistitemを作成し、selectionlist.items.add(item)してるんだが、通常はこんなことしないんだろうか?

itemの横にcheckboxをつけてそこを選択してから確認ボタンを押すとチェックのついた項目だけ何か操作を行う、といったことがしたいんだが…。
selectionlistに動的にitemを加える作業をすると確認ボタンを押したときにエラーが起こる。indexが不正だというエラーが出る。なんでだろう?
612デフォルトの名無しさん:2006/11/27(月) 03:22:03
>>610
はん、おかしいことにおかしいといったら日本語云々だあ?
たく最近はこんなのばっかだな。
こっちはちゃんと説明してるってのにな。
それともこんな簡単な内容すら理解できん馬鹿だったか。
613デフォルトの名無しさん:2006/11/27(月) 03:24:16
>>611
簡潔におながいします
614デフォルトの名無しさん:2006/11/27(月) 06:29:56
>>612
まだこんなに煽りに過敏に反応する奴がいるのか。
まだまだ捨てたもんじゃないなwww
615474:2006/11/27(月) 09:13:01
なおりました。
616474:2006/11/27(月) 10:16:59
word2003の再インストールを2回、
word2003の修復を3回、
word2003の再インストール直後のofficeのアップデート1回

これで直りました。
特に、「word2003の再インストール直後のofficeのアップデート1回
」が決め手だったような気がしました。

みなさんも、僕と同じエラーが出たときには、
決して、OSの再インスコなどせずに、
word2003の再インスコなどを試してみてください。

それじゃ、さようなら、ごきげんよう、へけけのけ。
617デフォルトの名無しさん:2006/11/27(月) 11:00:43
>600

一つ質問だが、>600はintとかstringとかを使ってて
「滅させる処理書かないとと構文的にシンメトリーじゃないじゃん」とか
考えてる?
618611:2006/11/27(月) 12:39:33
>>613
要するにmobile用のフォームでチェックボックスが使いたいんです。そこでselectionlistを使おうと思ったんだけど、普通これってすでに中に入るitemが決まってるもんじゃん?例えば男と女を選択させるみたいな。

でも今回はそうじゃなくてDBからとってきたものにチェックボックスをつけて選択させたいのよ。
619デフォルトの名無しさん:2006/11/27(月) 15:44:02
Listviewのスクロール位置を取得する事は可能でしょうか?
具体的に言えば、リストを二つ並べて、右側のリストをスクロールさせた際に、
左側のリストも連動してスクロールするようなプログラムを作りたいのですが…
WndProcからスクロールイベントを取得する事はできたのですが、そこで行き詰ってしまいましたm(_ _)m
620デフォルトの名無しさん:2006/11/27(月) 16:37:07
C#3.0は来年末以降らしい(´・ω・`)
621デフォルトの名無しさん:2006/11/27(月) 16:47:20
>>619
ListView.TopItem
622デフォルトの名無しさん:2006/11/27(月) 21:38:56
>>619
インデックス取るだけならLVM_GETTOPINDEX投げるほうが速いかもね。
623デフォルトの名無しさん:2006/11/27(月) 22:44:35
SortedDictionary<string,int> m_dic;
でKeyの長さでソートするようにSortedDictionary<string,int>のコンストラクタに指定したいんですけど
どうすればいいですか?
624デフォルトの名無しさん:2006/11/27(月) 22:52:12
m_
なんてVC++を使っているように思えるが、そんな人にする質問にはとても
思えん
625デフォルトの名無しさん:2006/11/27(月) 23:13:25
IComparer<string> を実装させたクラスを定義すれば良いんだよ
626デフォルトの名無しさん:2006/11/28(火) 00:49:03
ラクダ式ってどうなったの?
627デフォルトの名無しさん:2006/11/28(火) 01:00:29
普通にメソッドのパラメータとかで使われてるぞ
後は private なインスタンスフィールド辺りだな
628デフォルトの名無しさん:2006/11/28(火) 01:01:10
どうなったって訊かれてもなあ。
CLRはフィールドとメソッドの引数が小ラクダ式で、その他は大ラクダ式になってるが。
629デフォルトの名無しさん:2006/11/28(火) 01:13:50
おれマルボロのほうが好きだぜ?
630デフォルトの名無しさん:2006/11/28(火) 01:16:55
俺は巨乳好き
631デフォルトの名無しさん:2006/11/28(火) 01:27:07
632デフォルトの名無しさん:2006/11/28(火) 10:22:35
System.Net.Mail.SmtpClientのSendAsyncメソッドなのですが、ヘルプを読むと、
>SmtpException
>SMTP サーバーへの接続に失敗しました。
>または
>認証に失敗しました。
>または
>操作がタイムアウトしました。
とあります。
認証失敗等はともかく、このメソッドでタイムアウトが原因でこの例外が発生することはあり得るのでしょうか?
633デフォルトの名無しさん:2006/11/28(火) 10:41:41
Windows Formsのボタンからバッチ処理を別スレッドで走らせるんですが、
別スレッドで起きた冷害はボタン(元スレ)のcatchでは処理できないですよね。
別スレッドの例外をフォーム側で処理したい(メッセージボックスを出すとか)
のですが、どうしたらいいですか?
634デフォルトの名無しさん:2006/11/28(火) 10:43:35
>>633
Application.ThreadException
635デフォルトの名無しさん:2006/11/28(火) 14:26:36
VisualStudioのようなインテリセンスを持つエディタを実装したいのですが
これを容易にするコントロールなどは標準で提供されているのでしょうか?
636デフォルトの名無しさん:2006/11/28(火) 14:31:30
>>634
なんでもそれで対応出来ると思ってんのか?
637デフォルトの名無しさん:2006/11/28(火) 14:43:38
>>633
スレッド内で発生した例外はそのスレッドでcatchする。
必要なら UI スレッド側のフォームのメソッドをinvokeするとかしてユーザに通知する。
処理完了の通知と何ら変わるトコないですよ。
638デフォルトの名無しさん:2006/11/28(火) 16:09:32
bool受け取るDisposeは不要だと思うのですが
639デフォルトの名無しさん:2006/11/28(火) 16:31:39
>>638
ユーザはtrueを渡して、ランタイムライブラリはfalseを渡すことになっている。
640デフォルトの名無しさん:2006/11/28(火) 16:43:30
Il offre sa confiance et son amour.
641デフォルトの名無しさん:2006/11/28(火) 17:40:35
AxWebBrowserのBeforeNavigate2でpostデータ取得したいんだけど
postDataってどーやれば文字列型に変換できますか?
642デフォルトの名無しさん:2006/11/28(火) 18:03:51
string s = null;
if(e.postData != null)
{
s = System.Text.Encoding.ASCII.GetString((byte[])e.postData);
}
てな具合で文字列に変換できる
643デフォルトの名無しさん:2006/11/28(火) 18:07:07
>>641
642に加えてmime-encodingかURLEncodeかされてると思うんで、
そいつをdecodeして素のbyte[]にしたうえで、適切なencodingで
GetStringする。
644デフォルトの名無しさん:2006/11/28(火) 18:11:32
>>642,643
641です
ありがとうございます
今のところ、アルファベットと数字だけなので642の方法でうまくいきました
日本語使うようになったら643の方法にトライします
645デフォルトの名無しさん:2006/11/28(火) 21:36:37
すいません、デザインパターンの実装例を探していて見つけたのですが、
文中でカタログの例と言っている彼の論理C#コード(脳内コード)をどなたか補完して頂けないでしょうか。
(できれば次のイベントを使った例まで行きたいのですがここでつまづいています)

ttp://vsug.jp/tabid/63/forumid/51/postid/3057/view/topic/Default.aspx
646デフォルトの名無しさん:2006/11/28(火) 22:26:11
>>645
俺はこういう風に理解した。
----

interface IHogeFactory
{
    IHoge CreateInstance();
}

static class HogeCatalog
{
    private static Dictonary<Type, IHogeFactory> catalog = new Dictonary<Type, IHogeFactory>();
    public static IHoge CreateInstance( Type type )
    {
        return catalog[type].CreateInstance();
    }
    public static void Regitster( Type type, IHogeFactory factory ) {
        catalog[type] = factory;
    }
}

class HogeA: IHoge { }

class HogeFactoryA : IHogeFactory
{
    public static HogeFactoryA() { HogeCatalog.Register( typeof(HogeA), new HogeFactoryA(); }
    public IHoge CreateInstance() { return new HogeA(); }
}
647デフォルトの名無しさん:2006/11/28(火) 22:40:43
>>638
ファイナライザでは実行順序が不定のため他のマネージ参照に
触ってはいけないから、ユーザーコードから呼び出されたDisposeと
ファイナライザから呼び出されたDipsoseで処理を分ける必要がある。

C++/CLIでもデストラクタ、ファイナライザはこのパターンを利用して
ILを生成している。雑談だが。
648デフォルトの名無しさん:2006/11/28(火) 22:41:15
最近、C#をはじめたのですが困っています。

一つのFormで2つのBackgroundWorkerをつかっているのですが、
Formでの処理が重ならないように、どこかで同期させたいのですが、
タイミングは手動でとるしかないのでしょうか?

手動でとるにはどのような方法がありますか?
ManualResetEvent などをうまく使うのでしょうか?

どなたか教えてもらえませんか?

649デフォルトの名無しさん:2006/11/28(火) 22:42:31
>>646
その程度ならこれくらいでいいんじゃねーかな。

IHoge CreateInstance<T>() where T : IHoge, new()
{
return new T();
}
650デフォルトの名無しさん:2006/11/28(火) 22:47:01
>>648
Invokeじゃだめなん?
651デフォルトの名無しさん:2006/11/28(火) 22:50:36
>>649
Tをハードコーディングできるなら、直接newするだろ
652デフォルトの名無しさん:2006/11/28(火) 23:07:57
>>649
わろた。
newって書くのとかわんねー
ちなみに
Activator.CteateInstance<T>()
てのが標準であるぞw

653デフォルトの名無しさん:2006/11/28(火) 23:08:35
そもそも BackgroundWorker の(GUI に触れる)イベントでは
処理はメインスレッドで行われるので同時にってことはあり得ない
654デフォルトの名無しさん:2006/11/28(火) 23:16:57
インターフェイスはなんに使うですぅ?
655デフォルトの名無しさん:2006/11/28(火) 23:27:35
インターフェイスに使う
656デフォルトの名無しさん:2006/11/28(火) 23:28:32
C#でメモリマップト(File Mappingモード)は使えますか?
使えるならその方法を教えてください
657デフォルトの名無しさん:2006/11/28(火) 23:30:34
>>654
翡翠石よ

クラスを継承させたりした場合で、必ず呼び出してほしい
メソッドがある場合に、インターフェースを入れると、
コンパイラが警告を入れてくれる。
658デフォルトの名無しさん:2006/11/28(火) 23:31:04
ピンボケ
659デフォルトの名無しさん:2006/11/28(火) 23:36:31
>>657
そんな事初めて聞いたわ
660デフォルトの名無しさん:2006/11/28(火) 23:45:14
warota
661デフォルトの名無しさん:2006/11/29(水) 00:41:14
>>655

多重継承の代わりじゃないのかな?くるみちゃん
662デフォルトの名無しさん:2006/11/29(水) 00:43:50
>>656
Microsoft.Win32.NativeMethods.CreateFileMappingを参考に自前でDllImport汁
663デフォルトの名無しさん:2006/11/29(水) 01:19:39
>>635
やめておけ

エディタって何の編集するするものか知らんが
テキストエディタは相当難しい。
3Dグラフィックのほうがはるかに簡単。
つか、.NETで実用的なテキストエディタを作ることは不可能と思って
間違いない。
664デフォルトの名無しさん:2006/11/29(水) 01:31:33
user.confing の保存場所なんなんだよーう、ちくしょう
SettingProvider から継承して作れって・・・
LocalFileSettingsProvider のタコ!!!

・・・愚痴でした。

みんなは、どうやってる?
アプリケーションの設定保存
665デフォルトの名無しさん:2006/11/29(水) 01:40:37
レジストリ
666デフォルトの名無しさん:2006/11/29(水) 01:47:57
当然脳ミソ
667デフォルトの名無しさん:2006/11/29(水) 07:19:29
>>663 んなこたーない。
668デフォルトの名無しさん:2006/11/29(水) 12:21:17
>>666
壊れたらどうするのよ
669デフォルトの名無しさん:2006/11/29(水) 15:51:22
>>668
サルベージする
670デフォルトの名無しさん:2006/11/29(水) 15:53:34
アプリケーションの設定を保存する
http://dobon.net/vb/dotnet/programing/storeappsettings.html

上のサイトで紹介されているアプリケーションの設定を保持するクラスを、”俺”ライブラリに追加しようとして難儀しています。
各々の静的メソッドとシングルトンであることを基本クラスで定義しておき、これを継承するクラスでシリアライズするプロパティを追加したいのです。
試行錯誤してみましたが、「静的メソッドとシングルトンであること」を基本クラスでうまく定義できなくて行き詰っています。
最近ようやくOOPを意識しはじめたので的外れな質問かもしれませんが、指針についてアドバイス頂ければと思います。
671デフォルトの名無しさん:2006/11/29(水) 16:37:53
つーかシングルトンクラスを継承だと?
その時点で破綻してないか?
672デフォルトの名無しさん:2006/11/29(水) 17:07:36
>>671
Orz
恥の書き捨てで伺いますが、それなら継承後のクラスをシングルトンにするのは如何なものなのでしょうか。
でも、それだと当初の目論見から外れてめんどうになりそうだなぁ。
673デフォルトの名無しさん:2006/11/29(水) 17:14:28
>>672
その程度のシングルトンなら
class MyClass {
 static MyClass _cur = new MyClass();
 static public MyClass Current {
  get { return _cur; }
 }
}
でいいんじゃないか?
何のためにがやりたいのか日本語で普通に説明してみて。
674デフォルトの名無しさん:2006/11/29(水) 17:27:33
>>673
>>670のURLを参考に、「アプリの設定を保持するためのクラス」を作りました。
シリアライズしたいオブジェクトをプロパティに持たせて使います。
シングルトンなのは「設定が複数できるとマズいから」です。

それを使ってみて便利だったので、シリアライズ用のメソッドと、保存する値を書き込むプロパティを別個のクラスにしたいなと思いました。
ここまで書いておもったのだけど、シリアライズ用のメソッドがstaticである必要は特に無いのかもしれません。
派生したオブジェクトについてはインスタンスが複数できるとマズいけど、>>673で頂いたような手法で良いのかも…。
検討してみまふ。どうもありがとうございました。
675デフォルトの名無しさん:2006/11/29(水) 17:42:30
こういうとき、C#3.0ならExtension Methodを使うようになるんだろうな。
676デフォルトの名無しさん:2006/11/29(水) 18:53:41
VSからrichTextBoxにコピペして気付いたけど
VSってRTFでコピーできるんだね。
色がついてて驚いた。
677664:2006/11/29(水) 20:46:21
ちなみに俺は670ではありません。

今まで俺Setting的 Singleton 使ってたけど、
.NET Framework 2.0 での System.Configuration.ApplicationSetting が用意されてるから
わざわざ自分でつくるのは、すでに「車輪の再発明」的かな、と思ったです。

Settings.cs のコンストラクタに、this.Upgrade() 入れておけば
バージョンアップの際、結構自動で管理してくれるみたいだし。

ただ、デフォルトの LocalFileSettingsProvider がタコだなーと
バージョンアップした時の、以前の user.config の扱い次第では
自分で Provider 実装か、LocalFileSettingProvider か、
そこまではよくわかってません。

ttp://msdn2.microsoft.com/ja-jp/library/ms181001(vs.80).aspx


# Mono を意識するなら、現時点では
# 俺Setting になるから、これがベストかどうかはわからない
678656:2006/11/29(水) 21:00:40
>>662
ありがとう。やっぱりWin32API使うしかないんですかー。
その方法使います。どもども
679645:2006/11/29(水) 21:17:51
>>646
レスが遅れて申し訳ありません。補完して頂き大変参考になりました。m(_ _)m
自分は2003なので、多少修正したのと返すクラスがシングルトンでもOKなように
改造しました。一応載せますです。

   public interface IHoge
   {
      void ShowMessage(string str);
   }

   public interface IHogeFactory
   {
      IHoge CreateInstance();
   }

   public sealed class HogeCatalog
   {
      private static Hashtable catalog = new Hashtable();

      public static IHoge CreateInstance( string key )
      {
         return ((IHogeFactory)catalog[key]).CreateInstance();
      }
      public static void Register( string key, IHogeFactory factory )
      {
         catalog[key] = factory;
      }
      private HogeCatalog(){}
   }

680645(続き):2006/11/29(水) 21:18:15
   public sealed class HogeFactoryA : IHogeFactory
   {
      public static void Register() { HogeCatalog.Register( "A", new HogeFactoryA()); }
      public IHoge CreateInstance() { return HogeA.CreateInstance(); }
      private HogeFactoryA(){}
   }

   sealed class HogeA: IHoge
   {
      private static HogeA myclass = new HogeA();
      public void ShowMessage(string str)
      {
         Console.WriteLine(str);
      }
      public static HogeA CreateInstance()
      {
         return myclass;
      }
      private HogeA(){}
   }

   [STAThread]
   static void Main()
   {

     HogeFactoryA.Register();

     IHoge hoge = HogeCatalog.CreateInstance("A");

     hoge.ShowMessage("ぬるぽ");
         
   }
681デフォルトの名無しさん:2006/11/30(木) 00:37:44
Visual C# 2005のフリー版をつかってるんですが、
これってEclipseのような自動インポート機能ってないのでしょうか?
いちいち
using
を自分で書いていかなきゃだめっすか?
682デフォルトの名無しさん:2006/11/30(木) 00:54:32
スマートタグで using を追加してくれるでしょ
683デフォルトの名無しさん:2006/11/30(木) 00:54:54
自分で発見shift+alt+F10ですか。
684デフォルトの名無しさん:2006/11/30(木) 01:18:32
>>681
Ctrl+スペース
685デフォルトの名無しさん:2006/11/30(木) 01:23:01
>>684
それだと
using
追加知れくれませんでした。
eclipseなら追加してくれるんだけど・・。
686デフォルトの名無しさん:2006/11/30(木) 01:34:43
eclipseにしとけ
687デフォルトの名無しさん:2006/11/30(木) 02:00:34
VSは最初にusingを記述するスタイルじゃなくて、
最初に使うときに型名を明示的に書かせてusingに追加させるスタイルなんだね
688デフォルトの名無しさん:2006/11/30(木) 08:44:20
パスで指定された形にたいしてぼかした影のようなものをつけたいんですがいまいちわかりません。
パスから鋭角を丸める→パスグラディエントブラシ?
689デフォルトの名無しさん:2006/11/30(木) 10:28:28
>>685
ReSharperっつーアドオンいれるとQuickFixでusingの追加できる。
けど、アドオンってことでVS2005 Expressだと無理で、ReShaperも有料だ。
ReSharperいれると、リファクタリングもeclipseレベルにまで拡張される。
690デフォルトの名無しさん:2006/11/30(木) 17:37:21
ソース今印刷したんだけど、印刷のときは表示のときのカラー設定とか一切無視するのね・・・




なんつーか( ゚Д゚)<氏ね!
691デフォルトの名無しさん:2006/11/30(木) 17:53:21
>>690
印刷と表示と色の設定で別々になってるよ
692デフォルトの名無しさん:2006/11/30(木) 18:10:16
>>691
それ設計思想が間違ってるだろう。
693デフォルトの名無しさん:2006/11/30(木) 18:14:05
>>692
画面でみるときには黒背景にしてるやつってたまにいるぞ。
うちの会社にも1人いる。
694デフォルトの名無しさん:2006/11/30(木) 18:37:14
>>692
テキストエディタの設定をコピーする機能があるから問題なし
695デフォルトの名無しさん:2006/11/30(木) 19:21:43
ガベレージコレクションは無効にできないの?
696デフォルトの名無しさん:2006/11/30(木) 19:24:48
仮に無効にできたとしたらメモリ開放できないぞ。
697デフォルトの名無しさん:2006/11/30(木) 19:31:29
>>695
無効にしてどうしたいんだ?
698デフォルトの名無しさん:2006/11/30(木) 19:33:56
ガベレージじゃなくてガベージだぞ。
699デフォルトの名無しさん:2006/11/30(木) 20:01:29
白地の液晶画面だと目が悪くなるよ…
蛍光灯凝視しているようなもの。
黒地に白がベター

印刷は別設定できるほうが絶対優れていると思うが、>>692みたいに
ねじ曲がった奴もいるんだな。
700デフォルトの名無しさん:2006/11/30(木) 22:07:30
黒地に白は見辛くて困る
薄緑地に黒が良い
701デフォルトの名無しさん:2006/11/30(木) 23:53:49
えくりぷちゅは色そのままだお・・・あほかと
702デフォルトの名無しさん:2006/12/01(金) 09:38:10
スレ違いではあるが
当方 CRT で背景 rgb(215,215,215)
結構見易い
703デフォルトの名無しさん:2006/12/01(金) 16:05:00
データベース(PostgreSQL)を参照するデスクトップアプリを作っています。
ユーザIDとパスワードを入力して、ログオンする機能をつけたいのですが、作り方の定石があれば教えてください。ID/Passは両方ともサーバ側で認証を行います。
ちなみに前身のAccessアプリではID/Passテーブルというものが設けられていました。
704デフォルトの名無しさん:2006/12/01(金) 19:32:11
sql serverのだったら本があるんだがな。
ODBC接続の接続文字列変えるだけでいいのかも。
705デフォルトの名無しさん:2006/12/01(金) 22:01:25
以前にPropertyGridの件で書き込んだ者です。
PropertyGridで、項目を展開できるようにしたはいいのですが、その数値変化した時にイベント取得が出来ません。

基本的に、位置は関係なく起こりさえすればいいのですが、ABCの値変化はMyClassChangedが発生しません。
結果、ABC変化は取得できない状況です。この取得は難しいでしょうか?

ソースはこんな感じです。
706デフォルトの名無しさん:2006/12/01(金) 22:04:05
[TypeConverter(typeof(CustomClassConverter))]
public Class Class1
{private CustomClass myClass;
public event EventHandler MyClassChanged;
public Class1()
{ myClass.DataChanged += new EventHandler(Triggar);}
[DefaultValue(0,0,0)]
public CustomClass MyClass
{get{return myClass;} set{ myClass = value; Triggar(); }}
public void Triggar()
{if(MyClassChanged != null) MyClassChanged(this,EventArgs.Empty);}}
public Class CustomClass
{private int a,b,c;
public event EventHandler DataChanged;
public CustomClass(){a = 0; b = 0; c = 0;}
public int A
{ get{return a;} set{a = value; Triggar(); }
public int B
{ get{return b;} set{b = value; Triggar();}}
public int C
{ get{return c;} set{c = value; Triggar(); }}
public void Triggar()
{if(DataChanged != null) DataChanged(this,EventArgs.Empty);} }
707デフォルトの名無しさん:2006/12/01(金) 22:12:01
こんなに汚いソースは久しぶりだ
708デフォルトの名無しさん:2006/12/01(金) 22:12:19
Class1 のコンストラクタを呼んだらヌルリの予感
709デフォルトの名無しさん:2006/12/01(金) 22:13:14
[TypeConverter(typeof(CustomClassConverter))]
public class Class1{
  private CustomClass myClass;
  public event EventHandler MyClassChanged;
  public Class1(){
    myClass.DataChanged += new EventHandler(Triggar);
  }
  [DefaultValue(0,0,0)]
  public CustomClass MyClass{
    get{return myClass;} set{myClass = value; Triggar();}
  }
  public void Triggar(){
    if(MyClassChanged != null) MyClassChanged(this,EventArgs.Empty);
  }
}
public class CustomClass{
  private int a,b,c;
  public event EventHandler DataChanged;
  public CustomClass(){ a = 0; b = 0; c = 0; }
  public int A{
    get{return a;} set{a = value; Triggar();
  }
  public int B{
    get{return b;} set{b = value; Triggar();}
  }
  public int C{
    get{return c;} set{c = value; Triggar();}
  }
  public void Triggar(){
    if(DataChanged != null) DataChanged(this,EventArgs.Empty);
  }
}
710酔いちくれ ◆J0rwikii8c :2006/12/01(金) 22:14:21
もう、一体何がしたいんだと子一時間(ry
711デフォルトの名無しさん:2006/12/01(金) 22:16:24
せめてコンパイル通るコードを貼ってくれよ。もう嫌がらせのレベルだろ
712705:2006/12/01(金) 22:17:51
>>707
スミマセン、携帯手打ちな上に改行規制でかなり削りました。
>>708
申し訳ないですが、Class1()内でnewを脳内補完していただけますよう。
713デフォルトの名無しさん:2006/12/01(金) 22:21:55
ぱっと見問題外のコードだな。どこから突っ込めばいいのか。
とりあえずここでやるには長すぎる。
714デフォルトの名無しさん:2006/12/01(金) 22:21:57
さっさとパケ死しろ
715デフォルトの名無しさん:2006/12/01(金) 22:28:36
エラー1デリゲート 'System.EventHandler' に一致する 'Triggar' のオーバーロードはありません。
716デフォルトの名無しさん:2006/12/01(金) 22:35:29
最大の問題はtrigg'a'rかな
717デフォルトの名無しさん:2006/12/01(金) 22:47:23
本当にスミマセン、粗がありすぎて……。
とりあえずこちらではコンパイル通っているので、基本的なエラーは目を瞑って下さい。

CustomClassでA、B、Cという値が設定できる状態で、
それをまとめたものとして"0,0,0"というstringをCustomClassのABCに代入出来るように、
ExpandableObjectConverterを継承したCustomClassConverterで変換してます。
CustomClassの各ABCset{}の時にイベントを発生させる形で、
それをさらにClass1で受け取って発生させるつもりでした。
しかしながら、一度Class1のプロパティとしてMyClassの値を変化させると、
DataChangedイベントは取得されなくなります。
どうやらMyClassで設定した後はDataChanged==nullとなってしまうようで、
これがなぜだか分かりません。

何をすれば再びABCの変化を取得出来るのでしょうか?
718デフォルトの名無しさん:2006/12/01(金) 22:52:22
MyClass { set; } で別インスタンスにしてるからだろ
イベント登録しなおせ
719デフォルトの名無しさん:2006/12/01(金) 23:36:58
TreeViewに動的に親や子を追加するにはどうすればいいですか?
また、親や子に名前以外のデータ(構造体やクラス)をもたせることって出来ますか?
720デフォルトの名無しさん:2006/12/01(金) 23:42:19
できません
721酔いちくれ ◆J0rwikii8c :2006/12/01(金) 23:43:21
できるにきまってるだろwwww
722デフォルトの名無しさん:2006/12/01(金) 23:43:42
両方できないのですか?
723デフォルトの名無しさん:2006/12/01(金) 23:43:55
TreeNodeCollection.Add
Tag は .NET 2.0 以降だっけ?
それ以前なら TreeNode の派生クラス作るなり外部で Hashtable/Dictionary<TreeNode, Hoge>使うなり
724デフォルトの名無しさん:2006/12/01(金) 23:50:57
ふつう黒に緑じゃないか?
725デフォルトの名無しさん:2006/12/02(土) 00:40:20
デリゲートの意味がわからん・・・・
726デフォルトの名無しさん:2006/12/02(土) 00:43:27
関数ポインタのようなもの
727デフォルトの名無しさん:2006/12/02(土) 00:45:49
デリゲートに好きして
728デフォルトの名無しさん:2006/12/02(土) 00:46:24
使ったことないからピンとこないです。
つかなんでserialPostの受信ハンドラから同じクラス内の
コントロールハンドラを呼べないんだろ
729デフォルトの名無しさん:2006/12/02(土) 00:58:45
>>727
おっさん乙
730デフォルトの名無しさん:2006/12/02(土) 01:02:15
>>725
意味なら「委譲」。

.NETの機能のことなら、「型」の一種(delegate型)。
その型のインスタンスは、オブジェクト、または静的な「メソッド」へ
の参照を保持して呼び出すことが可能な実体。

型の一種として定義されるのでタイプセーフ。ポインタではなく
呼び出しのための実体として抽象化されているので、オブジェクトのメソッド、
静的なメソッド区別なく呼び出し可能。

別の機能である「イベント」と関連性が深い。

さらに言語機能として、C# 2.0で匿名メソッドが追加。これにより、「手続き」を
持ち運びできるように「見せ掛ける」機能にもなるように。BCLのコレクションク
ラスにもこの機能の使用を前提とした設計が見受けられるように。

3.0になるとさらに(ry
731デフォルトの名無しさん:2006/12/02(土) 01:03:24
そんなに言わなくても。
脳内補完で充分通るソースだと思うのですが・・
スペルが変、名前おかしい(インスタンスとクラスの区別ができていない?etc)、デリゲートの型があわない。
DefaultValueAttributeの使い方があわない、Frameworkの初期化ルールがわかっていないかも?
インスタンスとイベント(デリゲート)の関係が怪しいところ。くらい?

myClassオブジェクトに関するあらゆる変更を監視して、イベントMyClassChangedを呼び出すようにしたいはずなので
フィールドが変更されたときもイベントを購読(subscribe)するようにするとよいと思われ。
public CustomClass MyClass
 {get{return myClass;}
 set{
  if(myClass==value){return;}
  if(myClass!=null){ myClass -= new EventHandler(value_OnDataChanged);}
  value += new EventHandler(value_OnDataChanged);//value_OnDataChangedはEventHandler型メソッド
  myClass = value;
  Triggar();
 }
 public Class1(){ this.MyClass = new CustomClass();}
}
こんなのでよい?
732デフォルトの名無しさん:2006/12/02(土) 01:08:24
>>725
GenericsのList<T>クラスを使ってみると分かるかも
delegateを引数に取る奴、FindとかForEachとか
733デフォルトの名無しさん:2006/12/02(土) 01:09:50
>>731
それじゃコンパイル通らないよ
734デフォルトの名無しさん:2006/12/02(土) 01:12:04
>>728
スレッドが違うから。別のスレッドにアクセスするならInvokeしないと。
735デフォルトの名無しさん:2006/12/02(土) 01:14:41
>>731
TypeConverterがなんでClass1についてるのとか、
TypeConverterの中身はどうやねん(InstanceDescriptorの実装とか)とか、
DataChangedにするよりINotifyProertyChanged使えとか、
そもそもCustomClassはstructでいいやんとか、
class使うならDesignerSerializationVisibilityはContentのにしろよとか、
あーもうきりがない。

だからただ一言問題外と。
736デフォルトの名無しさん:2006/12/02(土) 01:20:29
ちょっとは脳内補完してやったら?
回答者の負荷が増えるじゃん
関数ポインタ知らない人にデリゲート教えるのメンドイよね。

Javaスクールの危険 - The Joel on Software Translation Project
http://local.joelonsoftware.com/mediawiki/index.php/Java%E3%82%B9%E3%82%AF%E3%83%BC%E3%83%AB%E3%81%AE%E5%8D%B1%E9%99%BA
じゃないけど、C#が便利すぎて逆に怖い。
737デフォルトの名無しさん:2006/12/02(土) 01:27:18
private void TreeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
Point p = new Point();
p.X = e.X;
p.Y = e.Y;
ContextMenu1.Show(this,p);

}
ツリービューを右クリックした時にメニューを表示したいのですが
これは間違ってますか?表示されないんですが

738デフォルトの名無しさん:2006/12/02(土) 01:34:30
if( e.Button == MouseButtons.Right )
{
 ContextMenu1.Show( this.TreeView1, e.Location );
}


あるいは
this.TreeView1.ContextMenu = this.ContextMenu1;
としておくだけ。
739デフォルトの名無しさん:2006/12/02(土) 01:34:58
>>735
TypeConverter(typeof(ExpandableObjectConverter))はプロパティグリッドで展開して編集できるようにするためでは
プロパティグリッドにバインディングした奴は
DesignerSerializationVisibilityを特に設定しなくても実オブジェクトのプロパティは変更されると思われ
この場合は特に要らないかと。
structは特性を熟知している人が少ないから使わ(せ)ない派なんですが、あまりよくないのかな?

どうでもいいけど、INotifyProertyChangedを知ったときはちょっとショックだった。
後からこんなクラスあったんだって・・
Frameworkだだっぴろいよね。
740デフォルトの名無しさん:2006/12/02(土) 01:49:28
>>735
TypeConverterつけるべきはこの場合CustomClassのほうだと思うのだが?
それにCustomClass型のプロパティを使用するとして、これを代入させるのなら
TypeConverterにInstanceDescriptorの変換を定義しないとデザイナがプロパティ
代入時シリアライゼーションできない。直接ExtendableObjectConverterだけでは不可。

方法論としてはDesignerSerializationVisibilityがContentにして、その場合は
プロパティとしてgetのみにする(というかsetがあったら明示指定しないとContentと
デシリアライゼーション&代入とデザイナは区別できないはず、どっちが優先されるか
知らんが)。

または、この実装のように代入も許可するなら、この辺のシリアライゼーションを
きちんと実装した上でさっき誰かが書いたコードのようにイベント登録、解除の処理も
きちんと入れてやる。INotifyPropertyChangedにしたほうがいいが。あるいは代入クラスを
Componentにしてしまうのもありだろう。

ほかには動的なのでDefaultValueの代わりにShouldSerializePropertyの実装に切り替えるとか
ぐらいか。

つーかこの辺まじめに解説するとこのように長くなるっつーの。これでも省きまくっているのだが。
基礎知識ぐらいはつけてから聞いてほしいよ。
741デフォルトの名無しさん:2006/12/02(土) 02:00:43
>>738
ありがとうございます
しかしe.Locationの定義がありませんと出てしまいました
742740:2006/12/02(土) 02:04:11
失礼。もう一つ方法追加。

CustomClassをstructに変更。CustomClass用のTypeConverterを実装(
stringの双方向変換、InstanceDescriptorへの変換、サブプロパティの許可等)して、
CustomClassに結びつける。InstanceDescriptorの関係から、組み込み型のみ使用
したコンストラクタor静的メソッドの実装あたりも。

ちなみに、これが最も標準的な方法で、使い方も楽。参照型のプロパティで
かつImmutableでない型をプロパティに使用し、代入許可するのはかなり異端な方法。
整合性を取るのが大変だからね。
743デフォルトの名無しさん:2006/12/02(土) 02:11:11
文字列がひとつ入力できるメッセージボックスって標準でありますか?
744デフォルトの名無しさん:2006/12/02(土) 02:12:14
VB用のInputBox
745デフォルトの名無しさん:2006/12/02(土) 02:27:19
>>744
ありがとうございます
746デフォルトの名無しさん:2006/12/02(土) 04:25:20
>>719です、まだ解らないので質問します
TreeViewの親や子に名前以外のデータ(構造体やクラス)をもたせることって出来ますか?
747デフォルトの名無しさん:2006/12/02(土) 08:30:36
748デフォルトの名無しさん:2006/12/02(土) 09:20:50
>>747
ああ、ありどとうございます!
もう一つ質問ですがハッシュテーブルをそのままファイルに書き出すことってできますか?
もちろん見ることではなく、次の起動の時読み込むのが目的です
749デフォルトの名無しさん:2006/12/02(土) 09:27:34
SoapFormatter やら BinaryFormatter やらなら
750デフォルトの名無しさん:2006/12/02(土) 15:40:14
デリゲートの正確な説明面倒だよな。

変数にメソッド代入して実行できるなんて適当に言ってみようか…
751デフォルトの名無しさん:2006/12/02(土) 15:47:33
デリゲートはデリケートな説明が必要だからな
752デフォルトの名無しさん:2006/12/02(土) 15:51:36
いい加減そのだじゃれ飽きたYO
753デフォルトの名無しさん:2006/12/02(土) 16:28:56
エディタを作っていて、TeraPadのように、行番号と桁数を表すルーラー
をつけたいと思うのですが、どのように実装すればいいでしょうか?
754デフォルトの名無しさん:2006/12/02(土) 17:25:29
Controlを継承して、ひたすら描画する。
C#でかかれたテキストエディタって、どこかにないのかな?
かなりP/Invokeを自分でラップすることになると思うんだけど・・
755デフォルトの名無しさん:2006/12/02(土) 17:46:11
DataGridViewで、
SelectionModeにFullRowSelect
を設定してるとき、選択されるのは行単位で、SelectedCellsも
その行のセルすべてになってるけど、これを本当にクリックして選択してる
1セル(点々で囲まれてるセル)を知るにはどーすればいいでしょう?

756デフォルトの名無しさん:2006/12/02(土) 18:04:59
全て選択されているが答えじゃないのか?
757デフォルトの名無しさん:2006/12/02(土) 18:14:03
>>750
C/C++でいうところのの関数ポインタだよというとか。
1メソッドInvokeだけを含むインターフェースだよというとか。
758デフォルトの名無しさん:2006/12/02(土) 18:20:24
>>755
>これを本当にクリックして選択してる
間違いじゃないかな。

アクティブ≠選択している

DataGridView.CurrentCellAddress あたりじゃないかなと勘で答える。
759デフォルトの名無しさん:2006/12/02(土) 18:26:08
>>757
関数ポインタ知らない奴結構いるよ…
俺も使ってないし。
760デフォルトの名無しさん:2006/12/02(土) 18:37:23
>>758
これのこと!!
どうもありがとう!
761753:2006/12/02(土) 18:40:31
>>754
ありがとうございます。でも意味が全然分かりません・・・
どこかにソースが転がってないか探してみます。
762デフォルトの名無しさん:2006/12/02(土) 18:41:13
>>760
そりゃよかった。
適当に答えたけどあたってて良かった。
俺は知識無かったけどMSDN探せば簡単に見つかったよ。
763デフォルトの名無しさん:2006/12/02(土) 18:45:05
TreeViewをそのままxmlに書き出すのって簡単に出来ますか?
764デフォルトの名無しさん:2006/12/02(土) 18:49:36
そんなに手間ではない
765デフォルトの名無しさん:2006/12/02(土) 18:56:24
>>764
そうですか

XmからTreeViewへのサンプルコードはたくさんあるんですが
逆は全く無いので難しいのかと思ってました、もうちょっと探してみます

ありがとうございました
766デフォルトの名無しさん:2006/12/02(土) 19:10:39
それがわかるんならxml.saveをすればいいものを最初から作るのか。ご苦労な話だな。
767デフォルトの名無しさん:2006/12/02(土) 19:20:05
>>766
まんまコピーして使っているので仕組みを理解してません
ちょっと改造すればできるんですか?
768デフォルトの名無しさん:2006/12/02(土) 19:29:07
改造?なんの話だよ。xmlとTreeViewの同期がとれてるんなら
xmlの保存だけで事は済むってことだろ。
769デフォルトの名無しさん:2006/12/02(土) 19:55:51
C#で実用的なテキストエディタを作成することは不可能です。
770デフォルトの名無しさん:2006/12/02(土) 19:56:16
そんなことはない。
771デフォルトの名無しさん:2006/12/02(土) 20:07:36
絶対に不可能です。
772デフォルトの名無しさん:2006/12/02(土) 20:16:24
確かに実用的なものは作れないでしょうね
773デフォルトの名無しさん:2006/12/02(土) 20:23:57
>>768
xmlに元々あるデータは保存できるのですが
新しいノードを作ると反映されないのです
774デフォルトの名無しさん:2006/12/02(土) 20:24:12
粘着はかえれ☆
775デフォルトの名無しさん:2006/12/02(土) 20:47:27
一言で表すと、メソッド用インターフェースかな?>デリゲート
776デフォルトの名無しさん:2006/12/02(土) 20:49:30
どちらかというとメソッドそのもののほうに近いだろ。
777デフォルトの名無しさん:2006/12/02(土) 20:54:24
>>772
不可能化可能かでいったら十中八九可能だと思うよ。
意味がないだけで。
778デフォルトの名無しさん:2006/12/02(土) 20:58:23
粘着野郎へ

俺は見つけたぞ!!
しかもソースまである。

ググレカス!
779デフォルトの名無しさん:2006/12/02(土) 20:59:16
需要あると思うよ。
テキストエディタ単体としてではなく、テキストエディタコンポーネントとして。
780デフォルトの名無しさん:2006/12/02(土) 21:03:18
>>779
死ぬほどメソッドがあるコンポーネントだろうけどな。
781デフォルトの名無しさん:2006/12/02(土) 21:04:58
次はC#でieコンポーネント使わないインターネットブラウザが作れないって言うだろうね
782デフォルトの名無しさん:2006/12/02(土) 21:24:01
テキストエディタのソースの
目的の場所までたどり着く自信がない。orz
783デフォルトの名無しさん:2006/12/02(土) 21:42:33
>>778
今まで検索してましたけどありませんでしたから
多分試したやつだと思います
784デフォルトの名無しさん:2006/12/02(土) 21:54:48
>>779
コンポーネントとして使えればいいんなら C++(/CLI) で作るよ。
だから「意味がない」なんて言い回しになるわけで
785デフォルトの名無しさん:2006/12/02(土) 21:55:01
粘着野郎 = >>769
786デフォルトの名無しさん:2006/12/02(土) 22:04:02
キモイやつだな
787デフォルトの名無しさん:2006/12/02(土) 23:05:14
テキストエディタのソース見てるが思ったよりあっさりしてる。

これで行番号とかアイコンとか出せるんだな…
788753:2006/12/02(土) 23:17:07
>>787
よかったらURL教えてください。

http://sharpdevelop-jp.sourceforge.jp/index.php?SDJEditor
↑見つけたのですが行番号とルーラーのソースどれか分かりません・・
789デフォルトの名無しさん:2006/12/02(土) 23:17:34
ソース見る限りでは自前ドローも簡単そうに見える…
tipsゲット!!

でも自分でいちから書くにはしっかりした設計が必要だな
790デフォルトの名無しさん:2006/12/02(土) 23:22:31
ソースの読み方研究しようね。
OnPaint で検索しろ。

GutterMargin.cs
HRuler.cs
791デフォルトの名無しさん:2006/12/02(土) 23:34:37
ソースおもろかった。
いろいろ勉強になった。
データ構造も面白かった。
昔Cオンリーで書いてたころと大違いだな。

実装の参考になる。
テキストもキャレットも選択部分も自前で書く参考になる。


おもしろい。
792デフォルトの名無しさん:2006/12/02(土) 23:47:24
アプリケーション起動時に最初に呼ばれるフォームを
外部の設定ファイルに応じて自由に変える機能を作りたいのですが
方法はないでしょうか?
793デフォルトの名無しさん:2006/12/02(土) 23:50:05
mainで設定読んで選択したフォームのインスタンス作るだけ。
794デフォルトの名無しさん:2006/12/02(土) 23:50:33
>>792
サイズ0のメインウィンドウを作る
795753:2006/12/02(土) 23:55:32
>>790
ありがとうございます。とても参考になりそうです。

みんなはなんのソースを見てるんだろう?
796デフォルトの名無しさん:2006/12/02(土) 23:57:59
うぎゃー!
ソリューションの関連先がかわってしまった!
しばらく沈黙します。
797デフォルトの名無しさん:2006/12/03(日) 00:00:45
またまた質問なんですが、TreeViewのコレクションデータを保存するには
どういったやり方があるのでしょうか?
次に起動したときに読み込みたいのです
798デフォルトの名無しさん:2006/12/03(日) 00:04:19
serialize
799デフォルトの名無しさん:2006/12/03(日) 00:13:32
>>798
その方法だと
シリアル化できない設定ですってエラーがでるんです
800デフォルトの名無しさん:2006/12/03(日) 00:23:38
RTFM
801デフォルトの名無しさん:2006/12/03(日) 00:27:22
802デフォルトの名無しさん:2006/12/03(日) 00:45:08
そういわれても…
TreeViewを継承して[Serialized]でもできませんでしたし・・・

[NonSerialized()]も使わなきゃいけないんですか?
803デフォルトの名無しさん:2006/12/03(日) 00:58:18
private void button1_Click( object sender, EventArgs e )
{
    List<TreeNode> lst = new List<TreeNode>();
    foreach( TreeNode node in this.treeView1.Nodes )
    {
        lst.Add( node );
    }

    BinaryFormatter bf = new BinaryFormatter();
    using( FileStream fs = new FileStream( "unko.dat", FileMode.Create ) )
    {
        bf.Serialize( fs, lst );
    }
}

private void button3_Click( object sender, EventArgs e )
{
    BinaryFormatter bf = new BinaryFormatter();
    List<TreeNode> lst;
    using( FileStream fs = new FileStream( "unko.dat", FileMode.Open ) )
    {
        lst = (List<TreeNode>)bf.Deserialize( fs );
    }
    this.treeView1.Nodes.AddRange( lst.ToArray() );
}
804デフォルトの名無しさん:2006/12/03(日) 01:04:13
>>802 も >>803 も考え違いしてるよう棚。
805デフォルトの名無しさん:2006/12/03(日) 01:07:34
自分でTreeViewのコレクションデータって書いているはずなんだがなあ?
806デフォルトの名無しさん:2006/12/03(日) 01:48:12
TreeViewをそのままシリアライズして保存するという発想は危険なのでやめたほうがよい
何を永続化する必要があるのかをよく考えるべき。
807デフォルトの名無しさん:2006/12/03(日) 02:47:40
Cで書いたプログラムを.NET(C#)に移植しているのですが、C#からNDdeShareAddという
nddeapi.dllのAPIを使おうと下記のように書いてみたのですが、呼び出し時にインスタンスが
なんたらとかいうエラーが出てしまいます。
たぶん構造体の受渡に失敗しているような気がするのですが、みなさん助けてください(><)

[StructLayout(LayoutKind.Sequential, Pack=1)]
public struct NDdeShareInfo {
  public long   lRevision;
  public char[] lpszShareName;
  public long   lShareType;
  public char[] lpszAppTopicList;
  public long   fSharedFlag;
  public long   fService;
  public long   fStartAppFlag;
  public long   nCmdShow;
  public long[] qModifyId;
  public long   cNumItmes;
  public string lpszItemList;
}

[DllImport("nddeapi.dll", EntryPoint="NDdeShareAdd", CharSet=CharSet.Ansi)]
public static extern uint NDdeShareAdd(
  string lpszServer,
  int    level,
  ref    SecurityDescriptor  pSD,
  ref    NDdeShareInfo lpNDdeShareInfo,
  long   cbShareInfo
);
808デフォルトの名無しさん:2006/12/03(日) 03:36:19
dataGridViewで、
0,2,3,5列目
の値がそれぞれ
hoge0, hoge2, hogeee, hoge
の行を探す

みたいな機能はdataGridViewにはないですか?

もしくは、
0,2,3,5列目
の値がそれぞれ
hoge0, hoge2, hogeee, hoge
だったらtrueを返す
みたいな比較メソッドはないですか?
809デフォルトの名無しさん:2006/12/03(日) 06:16:49
>>807
MSDN の「アンマネージ コードとの相互運用」以下を嫁。
型のサイズがめちゃくちゃだ。
そう言えば Vista では NetDDE 完全廃止らしいな。

>>808
そんなのが標準で用意されてたら却ってイヤだ。
素直にループ回せ。
810デフォルトの名無しさん:2006/12/03(日) 07:34:43
すみません、よろしければ教えてくださいませ。

まだC#でプログラミングしてはいないのですが、その前に既存の Word2003 が
インストールされているところへ、

 ・ .NET Framework 2.0
 ・ Visual C# 2005 Express Edition 日本語版 

をインストールしたところ、 Word2003 が起動するときによくわからないエラー
が出るようになってしまいました。(そのエラーメッセージをエンターで解除した
あとは Word2003 自体は使えていました)

そうこうするうちに、Word2003 の使用頻度が高くなり、一方 C# の緊急度が下がり、
逆に別のアプリケーションを入れる関係で  .NET Framework 1.1 の導入の必要が
出て、一旦 C# も .NET Framework 2.0 もアンインストールしてしまいました。

すると Word2003 の起動時に出ていたエラーは出なくなりました。

今度また C# や VB.NET を学習するために再び同様にインストールしようと
考えているのですが、同じ問題が起こるとちょっと困るなと思いました。

出ていたエラーメッセージは記録していなかったのですが、こうしたことは起こるもの
でしょうか?それとも Express Edition  であったために起こった問題の可能性もある
でしょうか?申し訳ないですが、よろしければ教えていただけたらありがたく。

環境: Windows2000 (Updateはネット経由で随時更新)
811デフォルトの名無しさん:2006/12/03(日) 07:42:36
エラーの内容もないのに答えられるわけ無いが、
大抵はインストールする人が変なコトしたからだろう。

あと .NET 1.1 入れるからって .NET 2.0 消す必要も意味もないぞ。
別物だから。
812デフォルトの名無しさん:2006/12/03(日) 07:54:15
>>811
さっそくどうもです。助かります。

.NET Framework 2.0 や C# Express を入れるときにトラブルしたり
その他のNG等が出たわけでもなく、すんなり普通に終わっていたかと思います。

そこで思いましたのは、もしかしたら Express を入れるとそうなってしまうのか
ということでした。製品版だと問題ないのだとしたらしょうがないのかなと。

>.NET 1.1 入れるからって .NET 2.0 消す必要も意味もない

あ、そうだったのですか!問題起こすといけないと思って抜いてしまいました。
だとすると これからこのまま 2.0 入れてしまえばいいわけですね。

それでその上で
 Visual C# 2005 Express Edition 日本語版
や同 VB.NET Express も入れてしまえばよいと。

ありがとうございました。またやってみてわからないことが出たら教えてください。

大変どうもでした。
813デフォルトの名無しさん:2006/12/03(日) 10:59:28
XmlNode rootXmlNode = myXmlDocument.DocumentElement.FirstChild;

でXMLのルートノードの最初の子を取り出せますよね?
その次の子が欲しい場合は

rootXmlNode = myXmlDocument.DocumentElement.FirstChild.NextSibling;

で取り出せるんですけど、次の子がnullになるまで取り出したい場合、

 XmlNode rootXmlNode = myXmlDocument.DocumentElement.FirstChild;
 (rootMxlNodeを使った処理)
 if(rootXmlNode = myXmlDocument.DocumentElement.FirstChild.NextSibling != null)
 {
    rootXmlNode = myXmlDocument.DocumentElement.FirstChild.NextSibling;
    (rootMxlNodeを使った処理)
       if(myXmlDocument.DocumentElement.FirstChild.NextSibling.NextSibling != null)
       {
           rootXmlNode = myXmlDocument.DocumentElement.FirstChild.NextSibling.NextSibling
           (rootMxlNodeを使った処理)
       }   
                    ・
                    ・
                    ・               
  }   

ってやらなきゃいけないんですか?
For文を使うわけにはいけないし・・・
他にいい方法ないですかね?
814デフォルトの名無しさん:2006/12/03(日) 11:01:02
>>813
無能っぽく再帰でもしてろよボケ
815デフォルトの名無しさん:2006/12/03(日) 11:11:55
これ→myXmlDocument.DocumentElement.FirstChild が
ファイル読み込みなので再帰の方法が思いつかないんですが
こういう場合でもできますか?
816デフォルトの名無しさん:2006/12/03(日) 11:12:27
while( >>813 == nurupo )
{
 Console.WriteLine( "ふらっとC♯, C#(初心者用) Part10" );
 Console.WriteLine( "http://pc8.2ch.net/test/read.cgi/tech/1162193452/" );
 Console.WriteLine( " へどうぞ" );
}
817デフォルトの名無しさん:2006/12/03(日) 11:34:54
>>793 794
ありがとうございました。
818デフォルトの名無しさん:2006/12/03(日) 11:36:34
>>815
rootXmlNode = myXmlDocument.DocumentElement.FirstChild;
do{
//
}while(null!=(rootXmlNode = rootXmlNode.NextSibling));
819デフォルトの名無しさん:2006/12/03(日) 11:41:27
>>813
foreach(rootXmlNode in myXmlDocument.DocumentElement.ChildNodes){
//
}
820デフォルトの名無しさん:2006/12/03(日) 12:06:05
>>818
>>819
ありがとうございます
821デフォルトの名無しさん:2006/12/03(日) 13:05:15
>>811さん
すみませんが、ついでにもう一つ教えてくださいませ。申し訳ありません。

もしかして、.NET は Windows2000 はサポート外ではないですよね
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetdep/html/ndp2_prere.asp
では

 Microsoft Windows 2000 Professional with SP4

がありましたのでOKのようですが、今 Microsoft のサイトを見ましたら、
現在の Framework の最新バージョンは 3.0 になっていました、それで対応OSに関しては

http://www.microsoft.com/japan/msdn/windowsvista/general/netfx30.aspx
-------------------------
.NET Framework 3.0 の導入
このセクションでは、.NET Framework 3.0 を導入してアプリケーションで使用する方法について説明します。

ソフトウェア要件
.NET Framework 3.0 をインストールするには、対象のコンピュータに次のいずれかのオペレーティング システムがインストールされている必要があります。

Microsoft Windows XP Home または Microsoft Windows XP Home Professional、Service Pack 2 以降
Microsoft Windows Server 2003 ファミリ、Service Pack 1 以降
-------------------------

とありました、これは 3.0 以降はこのバージョン以上からしか対応しない
ということになるでしょうか?Windows2000 は安定性がいいのでずっと使っていましたが、
.NET 3.0 以降が必要な場合は上記OS以上に Upgrade しないといかんということになる
でしょうか?
822デフォルトの名無しさん:2006/12/03(日) 13:25:23
>>821
その通り。
WinFX改め.NET3.0からは2kサポートがドロップされてる。
823デフォルトの名無しさん:2006/12/03(日) 13:25:50
そだよ 3.0 は XPSP2 以降限定
2.0 までは Win98 以降
あと今更 2k の方が安定性がとか無い
824デフォルトの名無しさん:2006/12/03(日) 13:58:15
>>822さん、>>823さん

早速にどうもです。

そうだったんですか、うーん。

早急な Upgrade はまだとしても、いずれはやらないと
いけないんですね。わかりました。
とりあえずは 2.0 を入れて VS2005 を勉強してみます。

どうもありがとうございました。

>あと今更 2k の方が安定性がとか無い

そうでしたか、自分がいた会社でも去年ぐらいまではずっと
これを言っていて業務用は2000で統一していたりしていました。

ありがとうございました。

それではまたよろしくお願い致しますです。
825デフォルトの名無しさん:2006/12/03(日) 14:43:14
>>824
それは機材の更新を先延ばしにしたい鯖缶の常套句
826デフォルトの名無しさん:2006/12/03(日) 15:52:42
カネないのがモロバレ
827807:2006/12/03(日) 16:10:50
>>809
なるほど。
ループさせます。どうもありがとう。
828デフォルトの名無しさん:2006/12/03(日) 18:00:23
>>826
金ないのもあるだろうがむしろ

め ん ど く さ い 仕 事 増 や す な

だと思う > 鯖缶
829デフォルトの名無しさん:2006/12/03(日) 18:13:55
#FTP

C#には、FTPサーバにファイルを
アップデートする方法(クラスライブラリ)
があるのでしょうか。
830デフォルトの名無しさん:2006/12/03(日) 18:46:02
>>829
当然MSDNぐらいは検索したんだろうな?
831デフォルトの名無しさん:2006/12/03(日) 20:03:31
>>830
すいません、MSDNってなんですか?
832デフォルトの名無しさん:2006/12/03(日) 20:10:48
>すいません、MSDNってなんですか?
>すいません、MSDNってなんですか?
>すいません、MSDNってなんですか?
>すいません、MSDNってなんですか?
>すいません、MSDNってなんですか?
833デフォルトの名無しさん:2006/12/03(日) 20:13:27
( ゚д゚) ポカーン
834デフォルトの名無しさん:2006/12/03(日) 20:16:57
MSDN知らずにどうやって開発するんだろ?
835デフォルトの名無しさん:2006/12/03(日) 20:25:36
VSのヘルプで検索でおk
836デフォルトの名無しさん:2006/12/03(日) 20:35:51
VSとは一体…
すみません初心者なので略されると学習できません
おはずかしいのですが
837デフォルトの名無しさん:2006/12/03(日) 20:37:57
ぽまえら釣られ杉
838デフォルトの名無しさん:2006/12/03(日) 20:46:54
MasterSystemDominantNormalization

Virtuoso Sound
839デフォルトの名無しさん:2006/12/03(日) 20:56:42
VSはVirtual Sexだろ
840デフォルトの名無しさん:2006/12/03(日) 20:57:20
Visual Studio
841デフォルトの名無しさん:2006/12/03(日) 21:19:25
>>836
飽きたのでマジレス。まず、ここは初心者スレ(ふらっとスレ)ではないです。
ましてや「C#初心者」よりもっと前の段階の人なんて初心者スレでもお断りです

入門書でも買ってそこからはじめてください。
842デフォルトの名無しさん:2006/12/03(日) 21:25:01
MSDN以前にGoogleは知ってるよな、まさか
843デフォルトの名無しさん:2006/12/03(日) 22:57:24
ここは何だかんだで初心者に優しいスレですね。
844デフォルトの名無しさん:2006/12/03(日) 23:02:01
>>842
検索はYahooで行っています。
なにか、問題ありますか?
845デフォルトの名無しさん:2006/12/03(日) 23:04:56
>>844
問題ないから他所に池
846デフォルトの名無しさん:2006/12/04(月) 00:31:38
ストアドプロシージャの出力パラメータ(@ErrCode)を
変数に格納する作業をしたいのですがエラーが発生します。

string ErrCode = "";
"DECLARE @ErrCode exec [STP_SelectKoshinSiire] @ErrCode OUTPUT SET @ErrCode = " + ErrCode;

どこか間違っていますでしょうか?
847デフォルトの名無しさん:2006/12/04(月) 00:39:14
>846
基本がナットラン・・・
848デフォルトの名無しさん:2006/12/04(月) 00:44:10
このスレでは代入式まで教えなくちゃいけないの?
たぶんコンパイラも呆れてるよ?

x = y;
右辺yを左辺xに代入
849デフォルトの名無しさん:2006/12/04(月) 01:02:12
DECLARE @ErrCode INT exec [STP_SelectKoshinSiire] @ErrCode OUTPUT SET " + ErrCode + " = @ErrCode
エラーメッセージ
=付近に不適切な構文があります。

となってしまいます。
850デフォルトの名無しさん:2006/12/04(月) 01:06:21
>>812
Visual Studio 2005のスレがあるから、次からはそちらへ。
851847:2006/12/04(月) 01:06:23
>>849
不適切な構文があるんです
852デフォルトの名無しさん:2006/12/04(月) 01:25:16
>>851
いえ自分の見る限りですがそんな構文あり得ないです
853デフォルトの名無しさん:2006/12/04(月) 02:00:49
>>852
おまいは C# が使いたいのか C# に似たオリジナル脳内言語が
使いたいのかどっちなんだ?
前者ならコンパイラのほうがまず正しい。後者なら C# のコンパイラは
使えない。
854851:2006/12/04(月) 02:20:57
>>853 正解
855デフォルトの名無しさん:2006/12/04(月) 08:29:52
おまえら・・・少しはスルー汁よ
856デフォルトの名無しさん:2006/12/04(月) 08:48:50
BAC#言語
857デフォルトの名無しさん:2006/12/04(月) 09:51:26
例え釣りっぽいと思っても、ホンモノだと仮定したうえで
全力をもって食い付くのが俺のジャスティス。
858デフォルトの名無しさん:2006/12/04(月) 09:59:53
うむ。ウサギはライオンを倒すにも全力を尽くすというしな。
がんばれ。
859デフォルトの名無しさん:2006/12/04(月) 11:43:31
最近のライオンはスルー力を鍛えてるらしい
860405:2006/12/04(月) 12:20:46
>>857 は VIP 的発想だとおもた。
861デフォルトの名無しさん:2006/12/04(月) 21:21:52
秀和システムの本だけで開発しています
862デフォルトの名無しさん:2006/12/04(月) 21:22:54
MSDN+秀和?
863デフォルトの名無しさん:2006/12/05(火) 16:50:07
RichTextBoxについて質問があります。
FontプロパティをMS ゴシック, 9ptにしているのですが、Textプロパティに文字列をセットしたときと
RichTextBoxに直接入力したときでフォントが変わってしまいます。

なぜだかご存知の方はおられますか?
864デフォルトの名無しさん:2006/12/05(火) 17:24:14
半角文字のフォントがArialになるバグのことか?
865デフォルトの名無しさん:2006/12/05(火) 17:25:18
あ、バグなんですか?
866デフォルトの名無しさん:2006/12/05(火) 18:56:08
諸事情よりメニューを作らずにツールバーだけが存在するアプリを開発中なのですが
メニューなしでショートカット(Ctrl+Oで開くなど)を実現する方法はありますか?
867デフォルトの名無しさん:2006/12/05(火) 19:05:12
KeyPreview=trueにしといてFormのイベントに引っ掛ければいいんじゃね?
868デフォルトの名無しさん:2006/12/05(火) 19:13:07
>>865
アジア言語圏特有の仕様。
この機能を抑制するにはWin32ではEM_SETLANGOPTIONSメッセージでIMF_AUTOFONTをクリアする。
.NETでもP/Invokeを使わない方法が何かあったと思ったが出てこないな。
869866:2006/12/05(火) 19:43:54
>>867
できました。ありがとうございます。
870デフォルトの名無しさん:2006/12/05(火) 20:31:12
>>863の問題は過去スレで、.NET Framework 2.0以降なら何かのプロパティをいじるだけで直せる解決法が出た。
ログ紛失してしまったorz
871デフォルトの名無しさん:2006/12/05(火) 20:43:53
>>870
これ?

uint opt = (uint) richTextBox1.LanguageOption;
opt &= ~((uint)RichTextBoxLanguageOptions.DualFont);
richTextBox1.LanguageOption = (RichTextBoxLanguageOptions) opt;
872デフォルトの名無しさん:2006/12/05(火) 21:52:29
>>871
おおおおおおおおおおおおおおおおおおおおおおお
ありがとうございます!!!
873871:2006/12/05(火) 22:06:35
自分で貼っといて何だが

richTextBox1.LanguageOption &= ~RichTextBoxLanguageOptions.DualFont;

でいいな。
874デフォルトの名無しさん:2006/12/05(火) 22:29:33
>>873
enumを直接演算に使うと警告かエラーが出た気がする。それでuintにキャストしているはず。
875デフォルトの名無しさん:2006/12/05(火) 22:36:41
普通にやってるぜ?
876デフォルトの名無しさん:2006/12/05(火) 22:43:18
>>874
別に問題ないよ。

今回は大丈夫だけど、enumを32ビットと仮定しているところのが怖い。
877デフォルトの名無しさん:2006/12/05(火) 23:45:06
enum型で出来ないのは算術演算でビット単位の論理演算は出来た。思い込みをやっちまってたかorz
878デフォルトの名無しさん:2006/12/06(水) 12:12:37
unionが見つからない
879デフォルトの名無しさん:2006/12/06(水) 12:29:44
IDEを使ってDataSetとDataGridViewをそのままバインドしています。
ここで現在表示されているUnix Epochからの経過秒数を、普通の日付に直したいと思います。

これは非バインドされた列を新たに追加して、バインドされた列を元にデータを作らないといけないのでしょうか。
それとも、バインドされた列に「そのように見えるフィルタ」のようなものをほどこしてやる事は可能でしょうか?
方針を教えていただければ幸いです。
880デフォルトの名無しさん:2006/12/06(水) 12:43:39
>>879
普通SQLの段階で直す。DataSetはあくまでコンテナ。クエリエンジン
ではない。
881デフォルトの名無しさん:2006/12/06(水) 12:50:35
>>880
そうなんですけど。レコード件数が多いのでサーバ負荷がすこしでも減ればと思って。
あまり意味はないのでしょうか。
882デフォルトの名無しさん:2006/12/06(水) 14:33:33
>>878
FieldOffset

ところでVARIANTARGには死んでもらっていいですか?
883デフォルトの名無しさん:2006/12/06(水) 15:29:29
バリアントあるだろ
884デフォルトの名無しさん:2006/12/06(水) 15:32:58
110cm単装リニアカノン:バリアントMk.8
アークエンジェル副砲。艦尾両舷に1基ずつ装備されているリニアガン。連射能力も高く精密射撃が可能だが、長時間連続使用すると砲身温度が上昇して使用出来なくなるのが欠点。
右舷が1番、左舷が2番である。ゴットフリートと違って側面に配置されているために上下方向の旋回が可能であるため、地表や海面を空中から直接狙撃することも可能である。
また、潜水航行が可能である本艦にとって数少ない水中での攻撃が可能な兵器である。
「DESTINY」最終話では、これによりミネルバの武装を破壊、戦闘不能に追い込んだ。
885デフォルトの名無しさん:2006/12/06(水) 15:41:43
キチガイは放置で。
886デフォルトの名無しさん:2006/12/06(水) 17:04:03
どなたかinvalidaterectの使い方を教えてください。
普通にinvalidate()するよりも軽くなるんでしょうか?
[DllImport("user32.dll")]
private static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("user32.dll")]
private static extern bool InvalidateRect(
IntPtr hWnd,
ref Rectangle r,
bool bErase
);
private void button2_Click(object sender, EventArgs e)
{
Graphics gra = pictureBox1.CreateGraphics();
IntPtr hwnd = gra.GetHdc();
Rectangle rect = new Rectangle(100,100,100,100);
InvalidateRect(hwnd, rect, false);
}
調べたんですがこの程度しか分かりませんでした。あってるのかも分からないです
887デフォルトの名無しさん:2006/12/06(水) 17:17:38
Invalidate(Rectangle) でいいだろ
888デフォルトの名無しさん:2006/12/06(水) 17:42:12
おまいらインタフェースに同じような名称のメソッドつけたくなる時どうしてますか?
メソッド名にインタフェースを表すようなプレフィックスつけてる?
それとも衝突覚悟で同じ名前つける漢ですか?
889デフォルトの名無しさん:2006/12/06(水) 17:46:12
>>886
InvalidateRectが引数にとるのはRECT構造体へのポインタ。
マネージドのRectangleではない。メンバの意味が違う。MSDNで探せ。

GetHdcしたらReleaseHdcする。
CreateGraphicsしたらDisposeする。

あと細かいけど

>IntPtr hwnd = gra.GetHdc();

hwndはHWND型
hDCはHDC型
マネージドだとどっちもIntPtrで型はあってるけど
ふつうそういうときにhwndは使わない


つーか>>887でFA
890889:2006/12/06(水) 17:54:02
あっー
よく考えたらデバイスコンテキスト取得する必要ないじゃんorz
InvalidateRectの第一引数はウインドウハンドルっす。

どうしてもInvalidateRectしたいなら
struct RECT
{
    public int left;
    public int top;
    public int right;
    public int bottom;
}

RECT rct = new RECT();
//ここでrctのメンバ入れる。rightとbottomにちゅうい
InvalidateRect( pictureBox1.Handle, ref rct, false );
891886:2006/12/06(水) 18:34:56
みんなありがとう。
教えてもらったとおりがんばってみます。
892デフォルトの名無しさん:2006/12/06(水) 19:32:32
FormのタイトルバーをFormBorderStyleをNoneにすることで消し、
そこにリストボックスを配置、DockをFillにしました。

が、表示させるとなぜか下のほうにFormがはみ出ます。
(グレーの背景が見える)
なぜなんでしょう?
893デフォルトの名無しさん:2006/12/06(水) 19:41:43
>>892
IntegralHeight を false に
894デフォルトの名無しさん:2006/12/06(水) 20:09:10
ListBoxに追加するアイテムの色分けする方法を教えてください

行ごとに色を変える方法はDrawItemで作れたのですが
一列の中で何色も色を変える方法がわからないです
895デフォルトの名無しさん:2006/12/06(水) 20:31:56
>>893
ありがとうございました!できました!
896デフォルトの名無しさん:2006/12/06(水) 20:39:48
>>894
言いたいことがよく分からんが、オーナードローならどんな描画だってできるでしょ。
897894:2006/12/06(水) 20:52:40
一行丸々色を変更する方法は、こんな感じで出来ました
e.Graphics.DrawString(文字列, フォント, 色, e.Bounds);
e.DrawFocusRectangle();
---
赤い青い黄色い
という文字列(実際に色がついているとして)をリストボックスの1列に表示したいんですが
ListBoxの要素ひとつの中で色を変更する方法を探してます
上のDrawString + DrawFocusRectangle だと一列ごとにひとつの文字列・一色しか設定できませんでした

わかりやすい説明が出来なくて申し訳ないです
898デフォルトの名無しさん:2006/12/06(水) 20:55:23
DrawString を複数回呼び出せばいいだろ
要は MeasureString だな
899894:2006/12/06(水) 21:05:45
MeasureStringの知識がなかったので助かりました
苦肉の策で文字数*5と指定してX位置を横にずらして表示していたので
その部分を変えていけばできそうです
ありがとうございます
900デフォルトの名無しさん:2006/12/06(水) 22:19:08
>>888
そうならないようにインタフェースに責任を持たせる。
自然な発想で操作から連想される名前が重なる場合には衝突は気にしない。(どうせ、明示的実装できるし)
もちろん、時と場合による。
901デフォルトの名無しさん:2006/12/06(水) 22:39:34
そもそも幽霊だからこの世の物質に干渉できないって言うなら
そもそも視覚や聴覚も機能しないはず
902デフォルトの名無しさん:2006/12/06(水) 22:55:45
視覚や聴覚を認識する自意識はこの世の物にはあらず
903デフォルトの名無しさん:2006/12/06(水) 23:14:54
例外が発生してそれをキャッチした場合に
PictureBox.Imageが突然、nullになってしまうのですが、
何が原因なのでしょうか?

904デフォルトの名無しさん:2006/12/06(水) 23:21:52
>>903
何が投げてる例外だよ?
905デフォルトの名無しさん:2006/12/06(水) 23:25:56
>903が自力で調べるのを投げてるように見えるが…。
906デフォルトの名無しさん:2006/12/06(水) 23:30:32
誰がうまいこと言えと
907質問です。:2006/12/06(水) 23:32:58
DataTableに関する質問です。

例えばDataTableに10行レコードが入っていたとして
一番最初(0レコード目)に””(空白)値のみのDataRowを
挿入したいのですが何か良い方法をご存知の方はいらっしゃいますか?

New DataRow ・・・ dt.Add
⇒この方法だと一番末尾にレコードが追加されてしまいます。
908デフォルトの名無しさん:2006/12/06(水) 23:34:52
TextBoxのGetPositionFromCharIndex(int index)を呼び出すと
indexにかかわらずIsEmptyがTrueのPoint(X=0,Y=0)が帰ってきます。

何がいけないのでしょう?
909903:2006/12/06(水) 23:37:28
スマヌ。
原因が分かった orz...

try{...}
catch(...){return;}
PictureBox.Image = new ...;
910デフォルトの名無しさん:2006/12/06(水) 23:38:33
>>909
おもろいやんけw
911デフォルトの名無しさん:2006/12/06(水) 23:43:18
>>907
もうちょっとメソッド調べれ 挿入を英語で
912デフォルトの名無しさん:2006/12/06(水) 23:46:01
>>908
indexは0以上かつText.Length未満でなければならない。
913デフォルトの名無しさん:2006/12/06(水) 23:54:18
>>912
はい、その点は大丈夫です。
txtBox.GetPositionFromCharIndex(txtBox.SelectionStart);
とやっているのにそうなるのです…(T-T)
914デフォルトの名無しさん:2006/12/07(木) 00:05:32
>>913
ブレークポイント張ってSelectionStartの値は見てみたのか?
915デフォルトの名無しさん:2006/12/07(木) 00:07:39
fuck?
916907:2006/12/07(木) 00:12:33
>>911

DataTable.Insertでしょうか?

このメソッドは挿入箇所をインデックスで指定する事も
出来るのでしょうか?
917デフォルトの名無しさん:2006/12/07(木) 00:21:00
なぜ調べない?
918907:2006/12/07(木) 00:24:00

>>917
調べても使い方が分かりません。
919デフォルトの名無しさん:2006/12/07(木) 00:36:36
つか DataTable には Insert 以前に Add が無いはずだが
Add は別のクラスのだろ? それ調べれ
920デフォルトの名無しさん:2006/12/07(木) 00:43:07
>>918
そんな姿勢ならプログラミングやめた方がいいよ
少なくともこのスレには来ないでくれ
921デフォルトの名無しさん:2006/12/07(木) 00:59:35
>>918
プログラミングというのは、正にそういうことの地道な繰り返しなわけだが。
その作業が嫌なら、プログラミングには向いてないな。
922907:2006/12/07(木) 01:06:17
いや、向いてるよ。

実際プロだしね。
923デフォルトの名無しさん:2006/12/07(木) 01:09:19
プロに勝った!
924デフォルトの名無しさん:2006/12/07(木) 01:09:31
>>922
名前全角にしないとそれっぽく見えないよ
925デフォルトの名無しさん:2006/12/07(木) 01:12:43
プロが2ちゃんで質問かよw
それで教えて貰って分からないってのも。
926デフォルトの名無しさん:2006/12/07(木) 01:16:30
927デフォルトの名無しさん:2006/12/07(木) 09:52:41
DataRowCollection.InsertAt メソッド

コレクション内の指定した位置に新しい行を挿入します。

名前空間: System.Data
アセンブリ: System.Data (system.data.dll 内)

構文
C#
public void InsertAt (
DataRow row,
int pos
)

パラメータ
row
追加する DataRow。

pos
DataRow を追加するコレクション内の位置。

解説
InsertAt で指定する位置は、DataRowCollection での行の順序だけを表しています。
DataRow 配列で複数の行が返される場合は、挿入行が InsertAt で指定した位置に返されないことがあります。
たとえば、Rows プロパティは指定した挿入位置に行を返しますが、Select と GetChildRows は挿入位置に行を返しません。
DataRowCollection の内容を XML (WriteXml など) で作成すると、行は DataRowCollection で指定された順序に従って書き込まれます。

pos パラメータで指定した値がこのコレクション内の行数を超えている場合は、新しい行はコレクションの末尾に追加されます。
928デフォルトの名無しさん:2006/12/07(木) 10:25:47
下記で、悩んでいます、たすけてください。

TEST_DLLという名前空間にTEST_CLASSというpublic クラスをつくりました。
これは、DLLとしてビルドされます。

それで、上記のDLL内のクラスを参照して、うごくEXEファイルを別につくっているのですが、
以下のようにするとDLLのクラスを呼べるのは確認しました。
TEST_DLL.TEST_CLASS test = new TEST_DLL.TEST_CLASS();

ただ、上記のDLLを削除して起動すると例外(System.IO.FileNotFoundException)が発生して
おちてしまいます。DLLがあれば、問題なく動きます。
そら、DLLがないのだから当然の例外なのですが、インスタンスを作成する前に、
DLLがあるかどうかのチェックをする処理を入れて、
あれば、インスタンス生成にしても、例外が発生します。
インスタンス生成を削除すると動くので、インスタンス生成が問題であるのは確認しました。
また、上記インスタンス生成時に(System.IO.FileNotFoundException)を
catchにしてもキャッチされません。
Visual Studioのデバッグで起動しても、どこで例外がおこってるかも表示されません。

どうしたら、いいのでしょうか?ご教授頂けませんか?おねがい致します。
929928:2006/12/07(木) 10:59:08
>>928
ごめんなさい。自己解決しました。
インスタンスの生成に失敗すると自動的に例外が上位にあがるんですね…。
たぶんで、自信ないけど…。
インスタンス生成部分をメソッド化して、呼び出し元でキャッチしたらできました。
メソッド化した時に例外が発生したら上位にあげるとかもかかなくても、勝手に上位に上ったので、
たぶん、そうなのかなあと思いましたが…。
930デフォルトの名無しさん:2006/12/07(木) 11:00:24
>>928
Exceptionならキャッチできる?
931928:2006/12/07(木) 11:14:27
>>930
System.Exceptionでもキャッチできなかったから、ほんきで悩んだんだ。
そんなはずないだろ?って。
メソッド化しても、メソッド内ではキャッチできなくて、呼び出し元ではキャッチできた…。
よくわからんが…。
932デフォルトの名無しさん:2006/12/07(木) 12:04:29
あのね、参照した型を直接扱コードを実行するためには
実際の実行より前に型情報が必要になるのね
つまり、そのコードを含むメソッドのJITコンパイル時ね
先にJITコンパイル済まさないと実行出来ないからね
てことは、そのメソッドの実行よりも前に型のロードが必要になるのね
もう分かるね?
933デフォルトの名無しさん:2006/12/07(木) 12:09:39
すげぇわかりやすい説明だと思った
934デフォルトの名無しさん:2006/12/07(木) 12:15:49
>>932
日本語でおk
935デフォルトの名無しさん:2006/12/07(木) 12:19:38
>>928
あるかどうか分からんライブラリをアーリーバインドする馬鹿がいるかよ。
Reflection使っとけ。
936デフォルトの名無しさん:2006/12/07(木) 12:32:26
試してないけど、完全に分離して、アセンブリの名前解決が起こらないようにすればいけるんじゃね?

namespace ConsoleApplication1
{
    class Program
    {
        static private void doSomething()
        {
            new ClassLibrary1.Class1().DoSomethong();
        }
        static void Main(String[] args)
        {
            if (File.Exists("ClassLibrary1.dll"))
            {
                doSomething();
            }
        }
    }
}

汚いからやめて欲しいが。
937デフォルトの名無しさん:2006/12/07(木) 13:54:56
C#でRC6使えないのかな?
938デフォルトの名無しさん:2006/12/07(木) 14:09:18
C#から入ってC、C++もできるようになる?
939デフォルトの名無しさん:2006/12/07(木) 14:14:19
>>937
使えるから自分で実装汁
940デフォルトの名無しさん:2006/12/07(木) 14:15:25
>>938
なる奴はなる。ならん奴はならん。

そういう質問をするタイプの奴はならん。
941デフォルトの名無しさん:2006/12/07(木) 14:16:36
そっか
じゃあやめとくか
942デフォルトの名無しさん:2006/12/07(木) 17:59:47
Formatメソッドで、文字列を幅固定し左詰したいのですが、
固定幅を文字数でなくバイト数で設定することは可能なのでしょうか?
何がしたいかというと・・・(アスタリスクは空白文字とお考え下さい)

1.String.Format("{0, -6}", 1) -> “11****”
2.String.Format("{0, -6}", "あい") -> “あい****”

上記の2の結果“あい****”を、“あい**”で取得したいのです。
943デフォルトの名無しさん:2006/12/07(木) 18:05:43
>>942
"1" と "あ" はどちらも2バイト。
944デフォルトの名無しさん:2006/12/07(木) 18:17:42
>>942
Encoding.GetEncoding(name).GetByteCount(s)
で目的のエンコーディングでのバイト長を取得して、
足りない分を空白を埋めればいいんじゃね?
945デフォルトの名無しさん:2006/12/07(木) 18:27:07
>>943-944
・・・根本的に思い違いをしていたのですねorz
GetByteCountで取得してみます。即レスありがとうございました。
946デフォルトの名無しさん:2006/12/07(木) 21:05:16
質問があります。

wsdl.exeで作成したプロキシクラス(呼び出し元はjavaで作成したwebサービス)
をコンソールアプリケーションのプロジェクトに追加してビルドすると
プロキシクラスの先頭で

using System.Web.Services;
using System.Web.Services.Protocols;

と宣言している部分で
「型または名前空間名 'Services' は名前空間 'System.Web' に存在しません。アセンブリ参照が不足しています」
というエラーが出ます。
どのようにすればビルドが成功するかわかりません。
助けて下さい。


947デフォルトの名無しさん:2006/12/07(木) 21:19:03
>>946
アセンブリ参照が不足しています
948デフォルトの名無しさん:2006/12/07(木) 21:31:21
プロパティのオーバライドについて質問です。

public abstract class AbstractClass{
public abstract int Value{get;}
}

public class ConcleteClass{
public override int Value{get{return 0;} set{ }}
}

のようにサブクラスではGetter/Setter両方を定義する方法ってありませんか?
プロパティに対してoverrideキーワードを追加すると以下のようなコンパイルエラーになるのですが
「オーバーライド可能な set アクセサがないため、オーバーライドできません。」
949デフォルトの名無しさん:2006/12/07(木) 21:39:29
ない
SetValue メソッドでも用意してやれ
950デフォルトの名無しさん:2006/12/07(木) 21:43:35
>>927
ありがとう。
951デフォルトの名無しさん:2006/12/07(木) 21:50:15
public abstract class AbstractClass{
public abstract int Value{get;}
}

internal class MiddleClass : AbstractClass{
public override int Value{get{return 0;}}
}

public class ConcleteClass : Class{
public new int Value{get{return base.Value;} set{ }}
}

こうするとか
952デフォルトの名無しさん:2006/12/07(木) 21:55:05
ミス
ConcleteClass : MiddleClassね
あと、internalにはできないな
953デフォルトの名無しさん:2006/12/07(木) 22:44:40
concrete
954デフォルトの名無しさん:2006/12/07(木) 23:37:04
TreeViewの一番上の親ノードを取得するのってどうやるんですか?
955デフォルトの名無しさん:2006/12/07(木) 23:43:22
何を悩む事があるんだ?
956デフォルトの名無しさん:2006/12/07(木) 23:55:56
何かトリッキーな方法を欲してるんじゃね?
957デフォルトの名無しさん:2006/12/08(金) 00:00:21
(仮想的な)スーパールートノードが欲しいとか?
958デフォルトの名無しさん:2006/12/08(金) 00:08:07
TreeView.FirstNodeみたいなのはないんですか?
959928:2006/12/08(金) 00:08:31
>>935
Reflection使って、作りなおしました。
でも、複数アプリに共通なクラスはDLL化したらしたで、
Reflectionつかわないとってなるとめんどいな…。
960デフォルトの名無しさん:2006/12/08(金) 00:10:18
配布せずに自分でしか使わないというならGACに入れるという手も……
961デフォルトの名無しさん:2006/12/08(金) 00:16:41
959 の思考がさっぱり理解できない
962デフォルトの名無しさん:2006/12/08(金) 00:22:17
>958

お前の頭についている二つの穴はフシアナか?
963デフォルトの名無しさん:2006/12/08(金) 00:23:59
あんまり釣られんな
964デフォルトの名無しさん:2006/12/08(金) 00:34:20
??あるんですか?
965デフォルトの名無しさん:2006/12/08(金) 00:35:10
人に訊く前にMSDNくらい読んでこいや
966デフォルトの名無しさん:2006/12/08(金) 00:36:44
MSDNってなんですか?
967デフォルトの名無しさん:2006/12/08(金) 00:40:17
thx >>949,951,953
メソッド用意しました。

968デフォルトの名無しさん:2006/12/08(金) 00:43:16
>>966
これは自分じゃないです
見てきます
969デフォルトの名無しさん:2006/12/08(金) 00:59:38
>>961
ごめんお…
970デフォルトの名無しさん:2006/12/08(金) 01:10:15
>>959
いったい何がしたいわけ?
dllがなくても正常に動かしたいの?
普通dllがなきゃ動かないのは当たり前でそ
971デフォルトの名無しさん:2006/12/08(金) 02:34:06
>>970
いや、エラー処理なんだな。
DLLがなきゃ動かないのは当然なのはわかってるんだ。

もし、DLLがない場合&DLLが古い&DLLが名前は同じでも別もの
の場合でもちゃんとエラーをだして止まるようにしたかったんだ。
例外が発生しておちましたでは困るんで。

一般のユーザは、こっちが思ってるように、正しく使ってくれないから…。
972デフォルトの名無しさん:2006/12/08(金) 03:10:35
だから例外キャッチしときゃいいんでしょ?
973デフォルトの名無しさん:2006/12/08(金) 06:04:03
Reflection使うのめんどくさいって・・・
3行くらい書くだけじゃないの?
974デフォルトの名無しさん:2006/12/08(金) 06:50:23
必須DLLだったらReflectionもメソッド単位でcatchする必要も無いと思うけど
975デフォルトの名無しさん:2006/12/08(金) 08:25:07
せいぜい最上位レベルでキャッチしてメッセージ出すくらいだな。
976デフォルトの名無しさん:2006/12/08(金) 09:56:01
publicなHashtableを持つクラスをシリアライズしたいんですが
XmlSerializer.Serializeを使ったら冷害が出ました。
どうすればいいんでしょうか?
977デフォルトの名無しさん:2006/12/08(金) 10:15:51
BinaryFormatterマンセー
978デフォルトの名無しさん:2006/12/08(金) 13:50:32
Xmlserializerはそんなことには使えない
979デフォルトの名無しさん:2006/12/08(金) 18:17:13
Magic Library Docking Manager Designer
http://www.codeproject.com/cs/miscctrl/dockingmanagerextender.asp

デバッグに失敗するですけどどうすればいいんでしょうか?
VS2005です。
980デフォルトの名無しさん:2006/12/08(金) 19:04:36
>>979
Magic Libraryっていう有償のコンポーネントが必要
981デフォルトの名無しさん:2006/12/08(金) 20:07:39
Magic Docking - VS.NET Style
http://www.codeproject.com/cs/miscctrl/magicdocking.asp

フリーバージョンがあってそれを使ってます。

参考サイト
http://dobon.net/vb/dotnet/links/dockingwindow.html          
982デフォルトの名無しさん:2006/12/08(金) 22:05:55
>>979
詳しく書かないってことは答えて欲しくないってことでおk?
983デフォルトの名無しさん:2006/12/09(土) 01:58:02
>>974-975
またまた、出没しましたよ…。
下のソースの 1 のClassLibrary.MyClassがDLL内にある。
それで、そのDLLがないともちろんエラーとなるんだが、例外が 2 じゃなくて 3 でキャッチ
されるのがなぜなのか理解できない。普通 2 じゃないの?
ここでthrowしてないのに…。なぜ3にいくの…

static void DLL_Class_Test()
{
try
{
ClassLibrary.MyClass test = new ClassLibrary.MyClass(); // ←ここ 1
}
catch (System.Exception ex) // ←ここ 2
{
Console.WriteLine(ex);
}
}


static void Main(string[] args)
{
try
{
DLL_Class_Test();
}
catch (System.Exception ex) // ←ここ 3
{
Console.WriteLine(ex);
}
}
984デフォルトの名無しさん:2006/12/09(土) 02:26:22
>>983
>>932読んでも分かんないの?
985デフォルトの名無しさん:2006/12/09(土) 03:29:17
>>984
エラーになるのはなぜかっていうのはわかるけど、
例外の発生場所がなぜそうなるのかわからないよ…。
型情報がないから、そのメソッド自体を初期化できないってこと?
飲み込み悪くてすまねぇ。
986追加:2006/12/09(土) 03:52:14
>>985
そのメソッドってのは、上でいうDLL_Class_Testのことです。
987デフォルトの名無しさん:2006/12/09(土) 10:32:02
いや、そのメソッドを実行開始する前にJITコンパイルが必要だから、
そのメソッドを実行開始する前に、型がロードされる。JITコンパイルしようとして。

これでなんで分からないんだ?
初めてDLL_Class_Testが呼び出される時点、つまりDLL_Class_Test();の部分を実行箇所に来ると、
この時点でDLL_Class_TestのJITコンパイルが開始され、
まだロードされてないClassLibrary.MyClassが必要と認識され、
自動的にロードが試みられる。

ふぁいるが見つかんないから例外

DLL_Class_Testメソッド内の
ClassLibrary.MyClass test = new ClassLibrary.MyClass();ではなく、
MainのDLL_Class_Test();
の実行箇所で例外となる。
988デフォルトの名無しさん:2006/12/09(土) 11:30:39
ザッツオール!
989デフォルトの名無しさん:2006/12/09(土) 15:32:10
32bitのpng画像なんですが、汚くなってしまいます。

なにかのcontrol.Image プロパティに直接指定したときは綺麗なんですが、
一度ImageListに格納してしまうと(ColorDepth を32bitにしています)
微妙にアルファがつぶれてくれます。
iconでも確認しました。


回避法はありませんか〜?
990デフォルトの名無しさん:2006/12/09(土) 15:45:51
メッセージボックスに表示される文字列を改行することってできますか
991デフォルトの名無しさん:2006/12/09(土) 15:51:39
それはギャグで(ry
992デフォルトの名無しさん:2006/12/09(土) 16:02:51
改行文字を入れればいいと思うよ。
993デフォルトの名無しさん:2006/12/09(土) 16:05:57
できました、ありがとうございます
994デフォルトの名無しさん:2006/12/09(土) 16:34:14
>>989
ImageListは内部でネイティブのImageList_DrawEx()を呼び出している。
自前でやってみればできるらしい。
995デフォルトの名無しさん:2006/12/09(土) 18:40:28
C♯, C#相談室 Part36
http://pc8.2ch.net/test/read.cgi/tech/1165656839/l50

たてますた
996デフォルトの名無しさん:2006/12/09(土) 19:04:11
文字列の中に"とかを含めたい場合はどうすればいいのでしょうか?
これではエラーになりますよね
string str = " abc"d"efg ";
997デフォルトの名無しさん:2006/12/09(土) 19:11:51
string str = " abc\"d\"efg ";
または
string str = @" abc""d""efg ";
998デフォルトの名無しさん:2006/12/09(土) 19:21:12
>>997
ありがとうございます
999デフォルトの名無しさん:2006/12/09(土) 19:23:05
test
1000ぼるじょあ ◆yBEncckFOU :2006/12/09(土) 19:23:39
(・3・) エェー 100げっとずざー
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。