08/12/19 13:45:15
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
前スレ
C#, C♯, C#相談室 Part49
スレリンク(tech板)
Visual C# 2008 Express Edition 日本語版
URLリンク(www.microsoft.com)
その他テンプレ>>2-5くらい
2:デフォルトの名無しさん
08/12/19 13:49:03
関連スレ
ふらっとC#,C♯,C#(初心者用) Part35
スレリンク(tech板)
Visual Studio 2008 Part 13
スレリンク(tech板)
WPF(XAML,XBAP,.NET3.5)GUIプログラミング
スレリンク(tech板)
【VB.NET】LINQ友の会【C#, C♯, C#】
スレリンク(tech板)
3:デフォルトの名無しさん
08/12/19 13:50:19
参考リンク
MSDN2
URLリンク(msdn2.microsoft.com)
@IT Insider.NET
URLリンク(www.atmarkit.co.jp)
Insider.NET 会議室 ディレクトリ
URLリンク(www.atmarkit.co.jp)
MSDN フォーラム
URLリンク(forums.microsoft.com)
pinvoke.net: the interop wiki!
URLリンク(pinvoke.net)
宇宙仮面の C# プログラミング / C# Programming
URLリンク(ukamen.hp.infoseek.co.jp)
WisdomSoft C#入門
URLリンク(wisdom.sakura.ne.jp)
WisdomSoft Microsoft .NET入門
URLリンク(black.sakura.ne.jp)
どっとねっとふぁん
URLリンク(dotnetfan.org)
緑のバイク 初めてのC# ~ 覚え書き ~
URLリンク(homepage3.nifty.com)
どぼん!の .NET Tips
URLリンク(dobon.net)
4:デフォルトの名無しさん
08/12/19 13:51:34
他にもあったらよろ
いらんとなったら次スレ立てるとき適当に消しといてくれ
5:デフォルトの名無しさん
08/12/19 13:54:54
おつ
URLリンク(www7a.biglobe.ne.jp)
6:デフォルトの名無しさん
08/12/19 23:15:07
やっと建ったか乙
7:デフォルトの名無しさん
08/12/20 12:50:46
WindowsアプリのToolStripButtonを
作成し、実行時にこのボタンがクリックされるとき、
ボタンの色が変わりますが、この色を変える
ことってできますか??
もちろんシステムの背景色の設定を
いじる以外で。
8:デフォルトの名無しさん
08/12/20 12:56:46
ToolStripRendererを継承してオーバーライドする
9:デフォルトの名無しさん
08/12/22 10:50:53
.NETFrameworkってタイトルの6000円ぐらいの本買ったんですが
いま3.5でこれ2.0みたいなんですが、もしかして失敗しましたか?
MS公認?C#上下とかいうやつとなにか違いあるんですか?
10:デフォルトの名無しさん
08/12/22 11:14:01
なぁにぃ?やっちまったなー
11:デフォルトの名無しさん
08/12/22 11:28:05
安心しろ、間違ってない。
12:デフォルトの名無しさん
08/12/22 11:31:58
どっちなの・・・つらい
13:デフォルトの名無しさん
08/12/22 12:17:22
2.0+α+αが3.5やし無問題
+α分については別の本買えばいい
14:デフォルトの名無しさん
08/12/22 13:25:43
プログラミング .NET Framework だったかいう本だろ?
あれはどっちかっていうとCLR2.0本とも言えるような内容だから。
.NET 3.5用は出てないしな。
少なくとも買って間違いな本じゃない。
ってかむしろ1冊持っとけって本。
15:デフォルトの名無しさん
08/12/22 17:53:14
ありがとうなんか元気が出てきた(謎
16:デフォルトの名無しさん
08/12/22 20:38:54
2chねるって人気ないんですか?
インターネットって日本中の人が見ることができるから1秒に2,300件ぐらい書き込みがあってもいいと思うのですが。
ここって10人ぐらいしかいない感じしませんか?
もっと活発なインターネットはあるんでしょうか?
17:デフォルトの名無しさん
08/12/22 20:55:44
VIPへいけ
18:デフォルトの名無しさん
08/12/22 21:17:38
>>16
ドウモ~~~ッ!!お~o(⌒0⌒)oは~♪ハジメマシテ~~~ッ☆☆(*⌒ヮ⌒*)
私は27歳のOLしてるのぉ~~~っ♪(#⌒〇⌒#)キャハ
うーんとー、私メル友がすっごくすっごく欲しくってー、\(⌒∇⌒)/
探してたら(◎_◎)なんとっ!☆彡(ノ^^)ノ☆彡ヘ(^^ヘ)☆彡(ノ^^)ノ☆彡
素敵な掲示板♪を発見!!!!(^o^)//""" パチパチパチ
あやしい所とか…{{ (>_<;) }} ブルブルすごい数の掲示板がありますけど、
これ全部1人の方が管理しているんですか?(@@;)すごすぎ …
てなわけで、ついつい書いちゃったのらー(o^v^o) エヘヘφ(`∇´)φカキコカキコ♪
メル友に、なってくれるよねっ。(*^-^*) お・ね・が・い♪(* ̄・ ̄)ちゅ♪ッ
え?くれないのぉ~?(;¬_¬)そんなのいやいや~~、ガ━━(゚ロ゚)━━ン
なってくれなかったら、( `_)乂(_´ ) 勝負! \(^o^)/
☆○(゜ο゜)o ぱ~んち、☆(゜o(○=(゜ο゜)o バコ~ン!!( ゚▽゚)=◯)`ν゚)・;'パーンチ
(>_<) いてっ!ダメ!! ゛o(≧◇≦*)oo(*≧◇≦)o″ダメ!!
(☆o☆)きゃ~~(@_@;)やられた~~(o_ _)o ドテッ ガ━(゚Д゚;)━ン!
(+_+) 気絶中。。。。・゚゚・o(iДi)o・゚゚・。うぇぇん <(゜ロ゜;)>ノォオオオオオ!! ??゚□゚;ハウッ!
なあんて(#⌒▽⌒#)こんな私っ!σ(^_^)だけど、(///▽///)
お友達になってm(_ _)mくださいませませ♪('-'*)フフ ドガ━━Σ(ll◎д◎ll)━━━ン
ということで。(^-^)vじゃあね~~~♪(⌒0⌒)/~~ ほんじゃo(゜▽゜ヽ)(/゜▽゜)o レッツゴー♪
それでは、今から他の掲示板も色々見てきまーすC= C= C= C=┌(^ .^)┘
19:デフォルトの名無しさん
08/12/22 21:18:23
コピペ君って馬鹿だな、まで読んだ。
20:デフォルトの名無しさん
08/12/22 21:32:35
>>19
だからそれもコピペだって
21:デフォルトの名無しさん
08/12/23 01:05:42
C#ってよくできてる言語だと思ったんですが
あんまり現場で使われてないような気がします。
どうしてですか?
22:デフォルトの名無しさん
08/12/23 01:22:18
βはVHSよりもすぐれていたけれども流行らなかったでしょ
23:デフォルトの名無しさん
08/12/23 01:30:00
どういう現場を想定してるんだろ。
24:デフォルトの名無しさん
08/12/23 07:31:35
>>21
どういう現場か知らんが、VBしか使えないようなPGが多いから
VB.Netで行こうみたいな安易な選択することが多いのか?
VB→VB.Net の移行するぐらいなら いっそのこときれいさっぱりC#で始めた方が
よっぽどいいと思うんだが。
25:デフォルトの名無しさん
08/12/23 08:49:24
>>21
>>24
Visual C++ + MFC の時代のときに投げ出して、それ以来 Windows の C は怖くて使えなくなったに違いない!
26:デフォルトの名無しさん
08/12/23 09:29:18
>>21
うちはFA関係の仕事ですが、パソコン側のソフトは今はC#が中心です。
ときどき、C++ MFC、VB6の指定がありますが。
たまたまだと思いますが、VB.netの指定は入ったことがありません。
27:デフォルトの名無しさん
08/12/23 11:51:30
>>21
ASP.NETだけで十分だから
28:デフォルトの名無しさん
08/12/23 12:10:37
>>27
はい?
29:デフォルトの名無しさん
08/12/23 17:04:28
日本語メソッドとか変数名多用する人います?
私は多用しますがウケが悪いので困ってるのですが。
30:デフォルトの名無しさん
08/12/23 17:05:38
日本語環境以外でもコード書くので、そんなことはしません。
31:29
08/12/23 17:11:36
>>30
確かにそういうケースはありますね。
では日本語環境で限定したケースではどうでしょう?
32:デフォルトの名無しさん
08/12/23 17:13:25
漢字変換の切り替えが面倒なんで、コメントも英語で書いてます。
33:29
08/12/23 18:13:53
>>32
確かにデメリットはそうでしょうね。
自分が思うのはそういう人ってキーボードの使い方が悪いんではないんでしょうか?
キーボードの使い方自信ある人もそうでしょうか?
bool InputCheck()
{
34:29
08/12/23 18:14:57
}
って定義して実際使うときに
//入力チェック
if(InputCheck())
{
}
てするなら
if(入力チェック())
{
}
の方がよいと思うわけです。
35:デフォルトの名無しさん
08/12/23 18:16:07
変換が面倒
インテリセンスのインクリメンタルサーチがきかん
あれ?最近のはきいたっけ?
36:デフォルトの名無しさん
08/12/23 18:20:14
インクリメンタルサーチは効かないよ
どれだけキーボードの使い方に自身がある人(w)でも絶対に英語のほうが効率よく入力できる。
37:デフォルトの名無しさん
08/12/23 18:20:18
キーボードの使い方ってなんだ…?
38:デフォルトの名無しさん
08/12/23 18:22:37
よく日本語のが分かりやすいに決まってる!て意見を聞くが、
プログラミングで使う識別子じゃ大して変わらんとも思う。
39:デフォルトの名無しさん
08/12/23 20:01:07
他人に意見するほどこだわりは無いけど、俺は嫌だ。
40:デフォルトの名無しさん
08/12/23 20:32:12
俺は結構積極的につかってるけど、たしかにインテリセンスでの検索がめんどくさいね~
41:デフォルトの名無しさん
08/12/23 20:35:03
うん、だから他人が書いたコードを読むだけなら慣れれば案外ありかも知れないけど、
自分で書く場面ではインテリセンスとの相性が悪い一点で却下だな。
42:デフォルトの名無しさん
08/12/23 20:51:04
if (checkInput())
で何も困らん。
43:デフォルトの名無しさん
08/12/23 22:30:27
日本語識別子つかったことないけどたしかにインテリセンスとの相性は悪そうだな
migemo的なのを使わせられればよさそうだが
44:デフォルトの名無しさん
08/12/23 22:36:01
checkInput入力チェック()なら完璧
45:デフォルトの名無しさん
08/12/23 23:04:16
これ何記法になるんかなw
46:デフォルトの名無しさん
08/12/23 23:18:56
変態さんは変態スレへどうぞ
47:デフォルトの名無しさん
08/12/23 23:34:16
ほんとどうでもいいがInputCheckって書いてあったら
チェックを入力する?なんぞ?ってなる
48:デフォルトの名無しさん
08/12/23 23:38:54
テストコードのメソッド名は日本語にしておくと、テスト時楽。
製品コードはアルファベットだな。
ローマ字を極端に嫌うやついるよな。
"Input"を"Nyuryoku"と入れられるのは確かに俺もいやだが、
"GenkaShokyaku"(減価償却)を"Depreciation"と入れられても、可読性が損なわれると思うんだがな。
49:デフォルトの名無しさん
08/12/23 23:40:12
わかりにくいことばは日本語でもおk
50:デフォルトの名無しさん
08/12/23 23:48:57
>>48
変な略されてなけりゃ辞書引けば分かるし、
その分野の用語の英語表現ぐらい知らなきゃまずいと思うけど。
少なくとも大した手間じゃない。
51:デフォルトの名無しさん
08/12/23 23:51:04
変に対訳表みたいの作るくらいなら、わかりやすいローマ字の方がいいな。
52:デフォルトの名無しさん
08/12/23 23:54:57
>>48
その主張見るたびに思うんだが、調べりゃすぐわかるから
落ちないだろ可読性。一回わかりゃ終わりだし
さくさく調べられる時代になった今ではすでに無理あると
思うよその主張
53:デフォルトの名無しさん
08/12/24 00:30:58
対訳表ってアホかw
英語のまま理解しろ。
54:デフォルトの名無しさん
08/12/24 00:40:00
どのプロジェクトにも間抜けなやつはいるもんでね。
ある程度は、そいつにレベルをあわせる必要があったりするんだよな・・・
55:デフォルトの名無しさん
08/12/24 00:45:51
>>48
メソッド名にマウス持っていけば「減価償却を行います。」とか説明が出るだろ
もしかして、コメント全く書かない人ですか?
56:デフォルトの名無しさん
08/12/24 00:54:45
おれ、コメントもドキュメントも英語で書くよ。
外注先インド人だし、客はアメリカ人だ。
57:デフォルトの名無しさん
08/12/24 00:56:10
お前らフィールド全部にプロパティ作ってる?
58:デフォルトの名無しさん
08/12/24 00:56:28
ワタシ、コメントもドキュメントも中国語で書くアルよ。
外注先中国人だし、客は台湾人アル。
59:デフォルトの名無しさん
08/12/24 01:20:49
外部に公開するやつは全部プロパティ作ってる
60:デフォルトの名無しさん
08/12/24 01:40:32
プライベートフィールド用は作らんの?
61:デフォルトの名無しさん
08/12/24 02:07:55
以前は作らない事が多かったけど(入力チェックが必要な時とかは例外)
C#3.0になって自動プロパティ使えるようになってからは、方針転換した。
クラス内からでも基本プロパティ経由でアクセスさせてて
privateフィールドを直接使うのは、ラップするプロパティを除けば、特定のメソッドから"のみ"利用する場合だけ。
62:デフォルトの名無しさん
08/12/24 08:52:44
質問です。
独自のプロパティをもたせたボタンを作ろうと
Buttonクラスを継承してクラスを作ったのですが、
フォームに生成(描画?)できません。
どうやったら生成されるのでしょうか?
public class HageButton : Button
{
HageProperty m_hage; //独自プロパティ
private void CreateHageButton(int maxButtons)
{
Button[] m_customBtn = new Button[maxButtons];
int loopButtonIndex = 0;
for (loopButtonIndex = 0; loopButtonIndex < maxButtons; loopButtonIndex++)
{
//↓現状固定値で入れてますが、上手くいかない為で、本来は独自プロパティから読み込んだ座標の設定が入ります。
m_customBtn[loopButtonIndex] = new System.Windows.Forms.Button();
m_customBtn[loopButtonIndex].Location = new System.Drawing.Point(100, 200);
m_customBtn[loopButtonIndex].Name = "btn_Config";
m_customBtn[loopButtonIndex].Size = new System.Drawing.Size(117, 33);
m_customBtn[loopButtonIndex].TabIndex = 2;
m_customBtn[loopButtonIndex].Text = "Hage";
m_customBtn[loopButtonIndex].UseVisualStyleBackColor = true;
m_customBtn[loopButtonIndex].Visible = true;
m_customBtn[loopButtonIndex].Click += new System.EventHandler(this.hageFunction);
m_customBtn[loopButtonIndex].Refresh();
m_customBtn[loopButtonIndex].Show();
}
}
63:デフォルトの名無しさん
08/12/24 08:58:29
プロパティのsetアクセサ内で自身がButtonから継承したプロパティを設定する
64:デフォルトの名無しさん
08/12/24 09:53:03
TypeCodeからTypeを取得するメソッドってある?
逆はあるけど
65:デフォルトの名無しさん
08/12/24 10:01:22
C#触り始めて数日なのですが
なんとかハローワールドがアラート?表示できるようになりました
そこで記念にexeにしておいておきたいのですがexeにする方法が分りません。
やり方を教えてもらえないでしょうか?
VC#2008を使用しています
66:デフォルトの名無しさん
08/12/24 10:09:25
>>64
前にどっかの掲示板でその話題を見たことがあるな
結論はswitch/caseでチェックするしかない、だったはず
67:デフォルトの名無しさん
08/12/24 10:17:43
>>63
レスありがとうございます
>>62で設定してるのですが他に何が足りないのでしょうか?
68:デフォルトの名無しさん
08/12/24 10:25:29
親コントロールのControlsにAddする必要がある
ところでそのHageButton自身はButtonじゃなくてButtonのコンテナじゃないのか?
ならButton派生じゃなくてUserControl派生にすべきだが
// やりたいのはHTMLのクリッカブルマップみたいなの?
69:デフォルトの名無しさん
08/12/24 10:27:26
>>65
bin/Debug/プロジェクト名.exe
70:65
08/12/24 10:31:19
>>69
ありがとうございます
勝手に出来るんでね
助かりました。
71:デフォルトの名無しさん
08/12/24 11:33:54
>>68
ありがとうございます
う~ん、何と言いますか
ユーザーが自由にボタンを配置・設定出来て、
動的に生成されるボタンが欲しいんです
で、そのボタンは押されたら独自のプロパティに設定された動作を実行する
みたいな感じなんです
72:デフォルトの名無しさん
08/12/24 12:50:08
ThreadPoolを使ったスレッド内でCOMコンポーネントを使いたいのですが
スレッドをSTAにする事は出来ないのでしょうか?
スレッド起動後にThread.CurrentThread.SetApartmentState(ApartmentState.STA);を試してみたのですがInvalidOperationExceptionでだめでした。
73:デフォルトの名無しさん
08/12/24 13:04:04
無理
74:デフォルトの名無しさん
08/12/24 13:27:55
質問です。
下記のコードをEclipseにてデバッグしました。
int i の宣言の行にブレークポイントを置いてあります。
そのままステップインを続けると、System.out.print(sMsg)の行でソースファイルが見つかりませんと出ます。
コメントホバーを日本語化するためにソースファイルの参照をapiフォルダに変更したからなのですが、
そもそもSystem.out.print()メソッドのソース内までステップ実行してもらう必要がないのです。
この場合どのように設定したらいいでしょうか?
class Test {
public static void main(String args[]) {
int i;
char[] a = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' };
String sMsg = "0から9までの数字を入力してください : ";
System.out.print(sMsg);
i = readNumber();
if (0 <= i && i <= 9)
System.out.println(a[i]);
else
System.out.println("範囲外ですよ");
}
// キーボードから数字を入力するメソッド
public static int readNumber() {
byte[] b = new byte[100];
try {
System.in.read(b);
return Integer.parseInt((new String(b)).trim());
} catch (Exception e) {
return -1; } }}
75:74
08/12/24 13:29:11
ゴバック失礼
76:デフォルトの名無しさん
08/12/24 20:36:47
>>71
ボタンを生成したり配置したりする処理をボタン自身の中に書くのはおかしい
77:29
08/12/24 22:14:02
>>35
>>36
先頭一文字は変換する必要ありますね
でも覚えにくい変数名思い出す手間よりは早いと思います
>>38
自分のためのツールならとにかく、自分の現場では今まで
仕様書漁らないと変数名と役割のひも付けができないものが多かったので
日本語の方がかなり可読性が高いです
辞書で調べてつけたような変数名が多いので。
>>48
確かに。自分の命名方法が間違ってました。
>>51-52
塵も積もれば、ですし、PG考えてるのに気が散ります
10個や20個の変数ならとにかく。
>>55
その手間が無駄です
いくつか省略させてもらいましたが、要約すると
インクリメンタルサーチできないってのが大きいみたいですね。
あとは変数とその役割の理解しやすさによって考えるといいかもしれませんね。
78:デフォルトの名無しさん
08/12/24 22:29:55
普通、最初に用語集作って英訳も付けると思うんだがやらないところ多いのか
79:デフォルトの名無しさん
08/12/24 23:02:51
>>77
自分が酷い現場ばっかりに回されたからって、他も同じと思うなよ。
>先頭一文字は変換する必要ありますね
>塵も積もれば、ですし、PG考えてるのに気が散ります
変換する手間で気が散るのだが
>>78
俺のとこも、あまり一般的でない用語に関しては英訳用意するな。
80:デフォルトの名無しさん
08/12/24 23:53:13
まあ中途半端にローマ字にされるよりは日本語の方がいいよね
81:デフォルトの名無しさん
08/12/25 00:29:35
ローマ字や日本語は綴りが一意に決まらないから・・・
82:デフォルトの名無しさん
08/12/25 01:04:55
英語で綴りが一意に決まるのは、単に知ってる語彙が少ないからじゃない?
83:29
08/12/25 01:12:56
>>82
そうそう。
私を始めみんな結構知らないんで日本語がよいかと。
84:デフォルトの名無しさん
08/12/25 05:43:10
確かに英訳するといくつもある場合が多いけど、自然な物を選択していけば普通に使えるしなあ
メソッドの意味が分からんならインテリセンスに聞くし
85:デフォルトの名無しさん
08/12/25 07:16:22
centre と center とかあるけど
ローマ字や日本語よりゃ遥かにレアだろ。
86:デフォルトの名無しさん
08/12/25 07:20:38
>ローマ字や日本語は綴りが一意に決まらない
?
87:デフォルトの名無しさん
08/12/25 08:41:41
これ以上はこっちでやれば?
ソースのコメントを英語で書くスレ
スレリンク(tech板)
88:デフォルトの名無しさん
08/12/25 09:30:55
ここでいいよ
89:デフォルトの名無しさん
08/12/25 22:47:13
C#のプログラムをjavaのプログラムと連携させる必要があります。
どうするのがベストでしょうか?
ちなみに2000ステップくらいです。
1.javaに書き換える
2.exeをjavaから実行する
3.dllにする
4.その他
90:デフォルトの名無しさん
08/12/25 22:48:46
何をするかも分からん状況では書き換えろとしか
91:デフォルトの名無しさん
08/12/25 22:52:50
保守とかそういう話を全部抜きにして言うと、
(1) そのC#のプログラムが .NET のライブラリをガシガシ使って無いなら、
全部書き換える(=1)が早い。2000行なら1日で移植できるだろ
もし.NETベタベタで、
(2) 単にデータを処理するバッチ的なプログラムなら、exeとして呼び出して
出力(XMLとか)を解析するのが早い(=2)
(3) JavaプログラムとC#プログラムが相互に連携(通信とか)するなら、
やっぱり書き直した方がいいと思う(=1)
JavaとC#でプロトコル決めてSOAPとかで通信するって手もあるが
2000行じゃ割に合わないだろうな
92:デフォルトの名無しさん
08/12/25 22:57:08
ありがとうございます。
C#プログラムは.NETライブラリバリバリです。
javaに移植しようとすると対応するライブラリがあるのか心配です。
あと、javaとの相互通信はありません
フローはこんなかんじです
javaからC#呼ぶ
↓
C#でファイルに対して加工処理
↓
加工されたファイルに対して続きの処理
93:デフォルトの名無しさん
08/12/25 23:00:42
>>86
ヘボン式、訓令式、日本式、あるいはそれらの混合。
外来語をローマ字で書くかもとの綴りにするか。
漢字で書くかひらがなでかくかカタカナで書くか。
94:デフォルトの名無しさん
08/12/25 23:04:24
外来語をローマ字で書くやつっているの?
tasuku とか?
95:デフォルトの名無しさん
08/12/25 23:05:24
英語出来ない奴はそう書く
96:デフォルトの名無しさん
08/12/25 23:17:22
ローマ字ソース見たことあるけど、
動詞と名詞の区別が滅茶苦茶ですごい可読性低かった。
97:デフォルトの名無しさん
08/12/26 00:07:28
ステップ数とか意味わからんよね
98:デフォルトの名無しさん
08/12/26 00:22:40
CILのOpCodeが2000個とか
99:デフォルトの名無しさん
08/12/26 00:52:08
最適化で工賃へるんですね
100:デフォルトの名無しさん
08/12/26 12:15:04
ローマ字の表記法は一意に定められるだろ
ローマ字の表記法はいくつかあるが、どれか採用すればいいだけだ
101:デフォルトの名無しさん
08/12/26 12:51:06
一般に大阪はOsakaだが大崎はOhsakiだぜ
また人名だと個々に好みのスペリングがあるから簡単には定まらない
102:デフォルトの名無しさん
08/12/26 13:09:17
定まらないって定めないからだろ
OhsakaにするかOosakiにするか決めりゃいいだけだ
俺はO_sakaが好みだが
103:デフォルトの名無しさん
08/12/26 14:41:37
(´・ω・`)しらんがな
104:デフォルトの名無しさん
08/12/26 14:49:08
マルチスレッドで受信したイベントデータを、受け取った順番どおり
保持して、(次のイベントがくるまで終わらないくらいに)時間がかかる処理を
順に行いたいのですが、こういう仕組みはどうやって
実現すればいいんでしょうか。lockでは順番は保持されないらしいのですが。
105:デフォルトの名無しさん
08/12/26 15:01:48
(非同期1)[データ1受信]
(非同期2) [データ2受信]
(非同期3) [データ3受信]
(メイン) [データ1処理 ][データ2処理 ][データ3処理]
こんなことがしたいのですが、うまく説明できない
106:デフォルトの名無しさん
08/12/26 15:22:12
メインにQueueもっといて各スレッドで受信完了時にロック取得してEnqueue→ロック解放
メインは処理が終わるたびロック取得してDequeue
とか?
107:デフォルトの名無しさん
08/12/26 15:30:34
キューじゃだめなの
108:デフォルトの名無しさん
08/12/26 15:49:27
保持するイベントデータは配列に登録するようにして、
メインにおいてはイベントデータ配列をループし、
イベントデータががないときは待機して
イベントデータがある場合は処理して次にループ
というかんじでいいんじゃね?
109:デフォルトの名無しさん
08/12/26 16:27:03
Visual C# 2008 Express Edition と SQL Server 2008 をインストールして今.NETを勉強してます。
PG経験はVB5少々、Delphi少々って感じです。
ようやく古いAccessのデータMDBをMDFというのに変換してdataGridViewに表示は出来ました。
で、簡単な顧客管理を作ろうと思ったのです。
顧客番号入れて該当の名前を表示するという単純な・・・
Delphiだとこんな感じでしょうか。
with User do
begin
wk:=EId.Text;
Active:=true; // ファイルOPEN
IndexName:='ID'; // インデックス設定
if FindKey([wk])=true then EName.Text:=FieldByName('Name').AsString // 該当あり
else ShowMessage('見つかりません'); // 該当なし
Active:=false; // ファイルCLOSE
end;
同じ事をやろうとホームページとか調べたんですがdataGridの説明はたくさん見つかるのですけど
やりたい事が全然見つかりませんでした。
どこかいいホームページとかあったら教えて下さい。
110:デフォルトの名無しさん
08/12/26 16:51:16
DataGridViewに対してどのようにデータソースを設定しているかわからんが。
まあ、それは別として
DataTable型オブジェクトをtblとしこのtblに顧客データが取得されているものとし、かつIDが主キーに設定されているものとすると
DataRow foundRow = tbl.Find(wk);
if(foundRow != null) Ename.Text = foundRow("Name").ToString();
111:デフォルトの名無しさん
08/12/27 20:19:04
アプリケーション設定ファイルを任意のディレクトリに保存したい場合は
SettingsProviderを自力で実装するしか手が無いんでしょうか?
シンプルに、↓こんなディレクトリに保存したいだけなんですけども
C:\Documents and Settings\<ユーザー名>\Application Data\<アプリ名>\
112:デフォルトの名無しさん
08/12/27 20:27:23
Shell32.dll等のアイコンを抽出するのはどうしたらいいんでしょうか。
113:デフォルトの名無しさん
08/12/27 22:30:13
Icon.ExtractAssociatedIconで。
Exの方はないので複数のアイコンを取り出したいならAPIを呼ばないと無理かと思う。
114:デフォルトの名無しさん
08/12/28 00:03:57
>>101
ちょっとあなた
馬鹿がばれてますよ
115:デフォルトの名無しさん
08/12/28 00:06:06
しょうもない事で何回ループさせれば気が済むんだ馬鹿野郎
116:デフォルトの名無しさん
08/12/28 00:11:37
ごめんなさい
117:デフォルトの名無しさん
08/12/28 00:17:24
どんまい
118:デフォルトの名無しさん
08/12/28 00:42:01
SQLサーバーってはやってる?
119:デフォルトの名無しさん
08/12/28 03:44:31
>>113
ありがとう、やってみます。
120:デフォルトの名無しさん
08/12/28 06:23:51
int WinExGetInfo(HANDLE hnd,array *set);
typedef struct ary{
char string_a[1024];
char string_b[512];
}array;
Cでこう宣言されてる関数をPinvokeする場合、どうすればいいんでしょうか?
構造体でなければStringbuilderを渡すだけですが、構造体だと渡せないようで
121:デフォルトの名無しさん
08/12/28 09:23:13
>>120
バイト型の配列で渡せばOK
122:デフォルトの名無しさん
08/12/28 09:53:40
[DllImport( "hoge.dll" )]
static extern int WinExGetInfo( IntPtr hnd, ref array set );
[StructLayout( LayoutKind.Sequential, CharSet = CharSet.Ansi )]
struct array
{
[MarshalAs( UnmanagedType.ByValArray, SizeConst = 1024 )]
public char[] string_a;
[MarshalAs( UnmanagedType.ByValArray, SizeConst = 512 )]
public char[] string_b;
}
こんなんでいける? よう知らんが
123:デフォルトの名無しさん
08/12/28 10:07:24
速度重視ならunsafe structにして
public fixed char string_a[1024];
public fixed char string_b[512];
124:デフォルトの名無しさん
08/12/28 10:38:26
いやbyteか
125:デフォルトの名無しさん
08/12/28 18:51:44
フォームや子ウィンドウが全部描画されてからよばれるイベントってある?
Form_Showでブレークはっても子ウィンドウは描画中っぽいんだけど
126:デフォルトの名無しさん
08/12/28 18:56:38
Application.Idle辺りかね
127:デフォルトの名無しさん
08/12/28 20:15:43
ツリーノードの位置を調整するのってどうすればいいんでしょうか。
ドラッグドロップでノードへ追加するんではなくて、順番を変えたいんですが。
128:デフォルトの名無しさん
08/12/28 20:20:26
TreeView.Nodes.Insert()
129:デフォルトの名無しさん
08/12/28 21:29:42
>>128
出来ました!ありがとう
130:デフォルトの名無しさん
08/12/28 21:32:24
>>125
Shownて無かったっけ
131:デフォルトの名無しさん
08/12/28 21:52:21
>>130
Form_ShowじゃなくてForm_Shownだった
>>126
やっぱりidleがいいのかな・・・
132:デフォルトの名無しさん
08/12/28 21:56:03
あ、それがダメだったのか。スマソ
133:デフォルトの名無しさん
08/12/28 22:25:10
再び質問で恐縮ですが、ドラッグ中にキャンセルするのはどうしたらええんでしょうか。
ドラッグ中に右クリックでキャンセルしたいんですが。
134:デフォルトの名無しさん
08/12/28 22:32:45
QueryContinueDragでハンドリング
135:デフォルトの名無しさん
08/12/28 22:42:37
しかし、マウスの左右を同時に押下させるUIってどうなのよw
136:デフォルトの名無しさん
08/12/28 22:44:02
どうなのよちゃうわ
うっさいわぼけ
137:デフォルトの名無しさん
08/12/28 23:07:48
ESCキーにしとけw
138:デフォルトの名無しさん
08/12/28 23:12:27
Windowsエクスプローラは右クリック(右でドラッグしているなら左)とESCのどっちでも取り消しできる。
139:デフォルトの名無しさん
08/12/29 21:46:03
ちょい質問
VS2005まで?あったと思うのだけど、
XMLスキーマをビジュアルに(クラス図みたいな)編集出来るのって
VS2008に無いのでしょうか?
拡張子がxsdのファイルをクリックすると、
エディター?のようなのになって困っています。
どなたかお助けを
140:デフォルトの名無しさん
08/12/29 21:58:09
>>139
ありますん
141:デフォルトの名無しさん
08/12/29 22:28:16
>>139
ないあるよ
142:デフォルトの名無しさん
08/12/29 23:05:55
おしえてくんなます (せっていとう)
143:デフォルトの名無しさん
08/12/29 23:07:00
>139
ないよ。
144:139
08/12/29 23:29:52
了解しました。どうやらなさそうですね。
エディターでこつこつやることにします。
XML スキーマエクスプロらー自体がつかいやすいのかなぁ?
まあ、使ってみます。
145:デフォルトの名無しさん
08/12/29 23:33:08
>>134
できました、ありがとうございます!
146:デフォルトの名無しさん
09/01/01 00:15:15
C#でWindowsプログラミングをやってみたいのですが、
お手本となるソースコード(プロジェクトファイル)を公開しているサイト等はあるのでしょうか?
あるならば、ご教示しては頂けないでしょうか。
ググっても、そっち系の教本しか出てこないもので・・・
147:デフォルトの名無しさん
09/01/01 00:17:08
まず .NET Framework SDK についてくるサンプルを動かしてみれば?
148:デフォルトの名無しさん
09/01/01 00:32:33
デザイナで何か作ってソース見れ。
お手本かどうかはアレだけど「ちゃんと動く具体的なソース」として便利。
149:デフォルトの名無しさん
09/01/01 01:31:54
本買えよ
150:デフォルトの名無しさん
09/01/01 09:29:11
>>146
CodePlex
CodeProject
151:デフォルトの名無しさん
09/01/01 13:08:43
もしかしたら既出の質問かもしれませんが
作成したアプリケーションの設定を保存するのに
Properties.Settings.Default.Save()
だとOSの指定されたフォルダにしか保存できません。
出来ればアプリケーションのあるフォルダに出来るだけ少ないコード量で実装したいのですが
みなさんの場合はどのような方法をとっておられるのでしょうか?
152:デフォルトの名無しさん
09/01/01 13:12:26
アプリケーションのあるフォルダに保存するとVista以降で問題出るからやらないかな
153:デフォルトの名無しさん
09/01/01 13:15:45
>>151
どうしてもその要件があるのなら、管理者モードで起動するw
154:デフォルトの名無しさん
09/01/01 13:20:26
便乗質問です
>>111 についてはどうなんでしょうか?
155:デフォルトの名無しさん
09/01/01 13:30:18
tes
156:151
09/01/01 13:36:35
ご回答ありがとうございます
既出って次元じゃないのですね…orz
USBでアプリケーションごと持ち歩く可能性があるので…
んー、がんばりますかぁ…
逆に需要多そうなのに、マイクロソフトでは準備してくれないのですね。
157:デフォルトの名無しさん
09/01/01 13:55:46
MS は Windows の流儀にそった形での API を提供してるだろが。
それが嫌なら自分で何とかしろよ
158:デフォルトの名無しさん
09/01/01 13:56:41
>>156
Program Filesの下のディレクトリにインストールされるアプリじゃないのなら、
UACで蹴られることもないんだろうから、普通にシリアル化なり何なりを使って
「そのように」実装すればいいだけじゃないの?
もちろんProperties.Settings.Defaultは普通の方法では使えないと思うけど。
159:デフォルトの名無しさん
09/01/01 14:55:08
ディレクトリはこれで。
URLリンク(dobon.net)
あと実行時のEXEのディレクトリは
APIのGetModuleFilenameとk使えばいいかもしれんがお勧めしない。
160:デフォルトの名無しさん
09/01/01 16:00:06
実行exeは
Application.StartupPath
161:デフォルトの名無しさん
09/01/01 17:28:38
確実に、そのexe, dllのあるディレクトリを取得したいなら
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
ライブラリにして別のdllに入れるなら、ExecutingじゃなくてCallingの方使う
162:デフォルトの名無しさん
09/01/01 17:41:49
>>111
そこにアプリ名を入れられると迷惑
会社名が入るところだから
163:デフォルトの名無しさん
09/01/01 17:46:25
MSにも言ってやってくれ
164:デフォルトの名無しさん
09/01/01 17:48:39
>>163
おまえが言えよ
165:デフォルトの名無しさん
09/01/02 00:09:04
エクスプローラの中でフォルダやファイルの縮小版を表示する機能が
ありますが、あれと同じように表示するためのクラスやメソッドはどこかに
あるでしょうか。あるとしたらどこを見ればよいか教えてください、よろしく。
166:デフォルトの名無しさん
09/01/02 00:16:25
>>165
縮小版って何? ListView の機能ではなく?
167:デフォルトの名無しさん
09/01/02 00:18:22
>>166
>ListView の機能
ListView の表示形態の一つにそれがあったんでしたっけ?
では見てみますです。
168:デフォルトの名無しさん
09/01/02 00:20:56
>>166
縮小版、とは、ファイルの最初のページをイメージにして縮小し
小さく表示してみせる機能のことです。それがLisyViewにあれば
それでできるのですが、無かったように思いました。
一応また調べてみます。
169:デフォルトの名無しさん
09/01/02 00:23:46
>>168
了解。その機能は .NET Framework にはないよ。
ということで、自分でファイルを開いてビットマップに描画して、って実装する必要あり。
170:デフォルトの名無しさん
09/01/02 00:27:15
どこまでを欲してるんだ。
ファイルのアイコンを表示する機能も
サムネールを作成する機能も
ListViewに標準でそんなのあるわけないだろ
171:デフォルトの名無しさん
09/01/02 00:27:21
>>169
どうもです。View列挙体にはやはり無い様ですね。
>ファイルを開いてビットマップに描画
ということは、それをするための方法を知る必要があるのですね。
いろんな種類のファイルがあるのでだいぶ難しそうですが
突破口はどこかにあるでしょうか。
またListViewに似たように表示する場合はViewプロパティを
拡張するようなことをするのでしょうか?
172:デフォルトの名無しさん
09/01/02 00:28:31
エクスプローラなら、↓みたいなのも。
URLリンク(bbs.wankuma.com)
View プロパティは大きなアイコンでいいんじゃね?
URLリンク(www.atmarkit.co.jp)
とか。
173:デフォルトの名無しさん
09/01/02 00:29:31
>>170
アイコンは一応表示できたのですが、縮小版はやはり相当な技術が
要りそうで大変めんどうでしょうか?
174:デフォルトの名無しさん
09/01/02 00:34:58
>>172
おおお。こんなにすぐにお答え戴けて感謝です!!
方法があるのですね!驚きました。ありがとうございました!!
助かりました!!!またよろしくです。
みなさま、大変、ありがとうございました!!
175:デフォルトの名無しさん
09/01/02 11:29:57
ノートPCで動くアプリを作っていてどうしたら良いか
分からないので質問です。
アプリが起動してる間だけアプリ以外のコントロールをさせないようにしたいんですが、
フォームを常時前面にするようには出来たのですが、
ノートPCのUSBポートそのものを無効or使用禁止(挿しても動作しない)
ノートPCのタッチパッドとトラックポイントを無効
が出来なくて・・・どうやったら無効に出来るのでしょうか?
176:デフォルトの名無しさん
09/01/02 11:32:28
>>175
基本的には無理。
177:デフォルトの名無しさん
09/01/02 11:33:07
頭悪いくせにそんなウィルスチックなもの作ろうとするなよ。
178:デフォルトの名無しさん
09/01/02 11:39:21
>>175
スクリーンセーバー作りたいのか?
179:デフォルトの名無しさん
09/01/02 11:49:24
タッチパッドのドライバを削除する
180:デフォルトの名無しさん
09/01/02 14:04:23
, ノ)
ノ)ノ,(ノi
( (ノし ノートPCのUSBポートそのものを使用禁止!
┐) ∧,∧ ノ ノートPCのタッチパッドとトラックポイントを無効 !
..|( ( ....:::::::) (
 ̄⊂/ ̄ ̄7 ) ヽ lヽ,,lヽ
(/ 川口 /ノ ( ) やめて
 ̄TT ̄ と、 ゙i
181:デフォルトの名無しさん
09/01/02 14:06:32
>>177に100%同意
182:デフォルトの名無しさん
09/01/02 14:17:37
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR\Start で設定できるのは、
USB ストレージデバイスだけだっけか。USB は範囲が広すぎなんだよな・・・
マウスに関しては、グローバルフックかフィルタドライバか。どちらにせよ、C# では無理。
183:デフォルトの名無しさん
09/01/02 15:04:34
普通にデバイス無効にすればいいだけ
184:デフォルトの名無しさん
09/01/02 15:07:08
>>183
で、やり方は?
185:デフォルトの名無しさん
09/01/02 15:21:06
setupapi
186:デフォルトの名無しさん
09/01/02 15:33:06
Ctrl+Alt+Delはどうすんだよ
187:デフォルトの名無しさん
09/01/02 15:44:04
GINA
188:デフォルトの名無しさん
09/01/02 16:12:51
>>176
>基本的には無理。
う~ん、そうなんですか・・・
>>178
>スクリーンセーバー作りたいのか?
いえ、店頭で一般の方が操作するアプリなんですが
USBメモリ挿されたり、そのアプリ以外触れない様にしたいんです。
で、お客が言うには店が終わったらそれを店員が使うから
アプリを終了したら、USBデバイスやトラックポイントやタッチパッドの無効を戻して
すぐ普通に使える様にして欲しいそうで・・・
>>179
>タッチパッドのドライバを削除する
それだとアプリ終了後使えないので・・・
189:デフォルトの名無しさん
09/01/02 16:20:01
>>182
>どちらにせよ、C# では無理。
C#でなくVC++だったら出来たりしますか?
それともアプリ側から制御する事そのものが無理なんでしょうか?
>>183
>普通にデバイス無効にすればいいだけ
プログラムからでなく、普通に設定という意味でしょうか?
190:デフォルトの名無しさん
09/01/02 16:26:37
>>189
VC ならできる。が、結構めんどい。
デバイス無効にして、一般ユーザー権限でアプリを実行しとけばいいんじゃね?
191:デフォルトの名無しさん
09/01/02 17:04:01
ふと思ったのだけど、どうやってそのアプリを終了させるつもり?
192:デフォルトの名無しさん
09/01/02 17:04:59
キーボード
193:デフォルトの名無しさん
09/01/02 17:44:46
ノートPCをお客さんが弄れるようにするんだよね。
店内の商品検索端末みたいなものかな?
大変そうだね。タッチパッドよりキーボードの操作の方が心配する要素が多いような。
Ctrl+Alt+Delは禁止できるとして、
Alt+F4とか、Windowsキーとかは禁止できるのだっけ。
194:デフォルトの名無しさん
09/01/02 17:48:27
Alt+F4はまあシステムメニュー弄るかメッセージ無視すればいいけど
ウィンドウズキーは元の設定でつぶさないと難しいかもね。
195:デフォルトの名無しさん
09/01/02 17:51:43
Winキーはレジストリで殺せるし、
エクスプローラ起動してなかったら働かないはず。
196:デフォルトの名無しさん
09/01/02 18:00:50
空港なんかのキオスクモードってどうやってんだろ
専用ソフト?
197:デフォルトの名無しさん
09/01/02 18:01:59
あれは本体触れないし、キーボードは物理的にマスクしてなかったっけ。
198:デフォルトの名無しさん
09/01/02 18:16:45
グローバルフックでWindowsキーも握りつぶせるよ。
TopMostに設定したFormを画面一杯に表示してグローバルフックでキー入力でのタスク切り替えを潰す。
WindowsキーとAlt+Tabを潰せばタスク切り替えは防げる。
VistaだとWindows+Tabで切り替えできるけどWindowsキーを潰せばそれも防げるので。
Alt+F4は画面を覆うアプリの方で無視する。
キーを潰すだけなので低レベルキーフックでいけるのでC#だけでも実装できるよ。
USBはそのアプリを動かすのを一般ユーザーにしてデバイスを無効にしておくのが手軽だと思うけど
アプリだけでブロックってのはやったことないなぁ…
199:デフォルトの名無しさん
09/01/02 18:57:43
普通はそういうのはアプリケーションで制限するんじゃなくて
ポリシーで制限するもんじゃないか?
200:デフォルトの名無しさん
09/01/02 19:10:41
>>196
Windows Embeddedとかを使う。explorerの代わりにShellを変更できる。
201:デフォルトの名無しさん
09/01/02 19:11:47
>>200
別に Embedded じゃなくても変えられるよ。
202:デフォルトの名無しさん
09/01/02 19:17:04
アプリで~とか言ってる時点で、目的と手段を取り違えてる気がする
要するに、通常モードと特定アプリモード(仮称)とが有り、両モードは簡単な操作で切り替え可能
前者は説明不要だとして後者の要件は
1. あるアプリを全画面表示で実行し、そのアプリ以外は操作不可
2. リムーバブルメディアは使用不可
3. USBデバイスの無効化
4. ポインティングデバイスを無効化(タッチパッドとトラックポイント限定?)
といったところだろ
203:デフォルトの名無しさん
09/01/02 22:15:58
タッチパッドを取り外す
204:デフォルトの名無しさん
09/01/02 23:29:54
>>202に同意。
自分なら専用ユーザーを作るか、
ハードウェアプロファイルを使う
205:デフォルトの名無しさん
09/01/03 01:00:42
URLリンク(csharp-source.net)
ここみると、C#用のユニットテストツールっていろいろあるけど、
どれがお勧め?VS2008使ってる
206:デフォルトの名無しさん
09/01/03 04:33:15
NUnitとTestDriven.NET使ってる。2005だけど
207:デフォルトの名無しさん
09/01/03 11:42:59
ボタンを押すと音が再生されるようにしたいので
URLリンク(dobon.net)
を利用して「Windows Media Player Control」を使ってmp3ファイルを再生したのですが音が鳴るまでにタイムラグがあって「ポチッ」という感じが出なくて困っています
同じようなことで困った方はいらっしゃらないでしょうか?
208:デフォルトの名無しさん
09/01/03 11:51:16
たかが効果音にmp3?
wavにしてSoundPlayerで鳴らせ
209:207
09/01/03 12:34:07
ファイルサイズの増加を心配して控えていたのですが
実際にやってみると
mp3 96k → wav : 101k
とほとんど変化しませんでした。
これでよかったみたいです。お知恵をありがとうございました。
210:デフォルトの名無しさん
09/01/03 13:00:48
容量はコーデックの設定次第じゃねえの
211:デフォルトの名無しさん
09/01/03 13:39:35
wavはまんまサンプリングレートと量子化ビット数とチャンネルと秒数だろうけどな。
212:デフォルトの名無しさん
09/01/03 18:20:40
音屋には音屋のテクニックがあるんだぜ。
213:デフォルトの名無しさん
09/01/03 20:35:22
mp3かwavか、って以前にWMP Controlが糞重いからね
214:デフォルトの名無しさん
09/01/03 23:42:55
VS2008で、
string text = "何かのテキスト";
Regex line = new Regex(@"正規表現のパターン");
MatchCollection matches = line.Matches(text);
List<string> result = new List<string>();
foreach(Match m in matches.GetEnumerator()) {
result.Add(m.Value); // <-- ここでエラー
}
とすると、
「エラー foreach ステートメントは、'System.Collections.IEnumerator' が
'GetEnumerator' のパブリック定義を含んでいないため、
型 'System.Collections.IEnumerator' の変数に対して使用できません。」
とエラーが出ます。不勉強でエラーメッセージの意味がさっぱりわからないんですが、
この使い方は間違ってるのでしょうか?これと同じことを正しく書くとどうなりますか?
要はマッチした string の全部の List が欲しいんです
for文と [ ] 演算子で地味に読みだすのはできるんですが・・・
215:デフォルトの名無しさん
09/01/03 23:49:37
foreachのinの後は「GetEnumeratorできるもの」を指定する。
matches.GetEnumerator()はIEnumeratorを返すけど、IEnumerator自体はGetEnumeratorできないでしょ。
つまりmatches自体がGetEnumeratorできるもの。
216:デフォルトの名無しさん
09/01/03 23:51:56
>>215
おお、なるほどできました!
ありがとうございます!!
217:デフォルトの名無しさん
09/01/03 23:52:09
foreach(Match m in matches)
218:デフォルトの名無しさん
09/01/03 23:55:37
リファレンスにほぼそっくりそのままの例載ってるじゃん。
分かんないときはまずドキュメント読もうよ。
URLリンク(msdn.microsoft.com)
219:デフォルトの名無しさん
09/01/03 23:58:14
ドキュメントはろくに読まず、何かあると MS のせいにする・・・
そんな開発者が増えた気がする俺はおっさんw
220:デフォルトの名無しさん
09/01/04 00:02:35
古の昔から続く「今の若い者は・・」と同じ香りを感じるわけだがw
221:デフォルトの名無しさん
09/01/04 08:01:36
> 何かあると MS のせいにする・
これは大昔からほんとに「MSのせい」であることが多かっただろ
222:デフォルトの名無しさん
09/01/04 08:40:25
ウリがなんでも日本のせいにするようになったのは日本のせいニダ
223:デフォルトの名無しさん
09/01/04 08:47:23
昔に比べるとMS開発環境のクオリティ遙かにあがった気がする・・・(´・ω・`)
224:デフォルトの名無しさん
09/01/04 09:23:52
>>219
VC6の頃はF1で的確なヘルプが出てきたけど.netのヘルプはでたらめじゃないか。これでドキュメントを読めというのは無茶じゃないか?
225:デフォルトの名無しさん
09/01/04 09:31:59
あ、ここにも一人
226:デフォルトの名無しさん
09/01/04 14:05:21
休みの日に恐れ入ります。
現在、8bppindexedのgifファイルを1bppindexedのGIFファイルに
変換するソフトを作っています。
Image img=new Bitmap(10,10,System.Drawing.Image2D.Imageformat.1bppindexed);
といった感じにimgを作成し、
img.Save(myfilepath, ・・・1bppindexed);
という風に保存すると、なぜか、myfilepathのGIFファイルはカラーデプスが
8bppになってしまいます。
1bppindexedで保存することはできないのでしょうか。
227:デフォルトの名無しさん
09/01/04 14:25:33
Image.SaveにPixelFormat渡すのなぞ無いはずだが
んー、たしかにGDI+のエンコーダはGIFは8bppのみのサポートだった気がする
228:デフォルトの名無しさん
09/01/04 14:29:12
>>227
すみません、saveにpixelforって書いたのはミスです不正確ですみません。
>>んー、たしかにGDI+のエンコーダはGIFは8bppのみの
なんですって!!ということはどうすれば1bppindexedのGIFファイルを
作れるのでしょうか。グーグルしても全然ヒットしません・・。
229:デフォルトの名無しさん
09/01/04 14:31:52
あ!!
URLリンク(support.microsoft.com)
>>GDI + クラスは、 System.Drawing クラスによって作成される、GIF イメージ ファイルは、8 1 ピクセル (bpp) ビット イメージを使用して常に保存されます。
なるほど!!ってことは、別の手段にするほかなさそうですね・・・
230:デフォルトの名無しさん
09/01/04 14:40:39
WPFのGifBitmapEncoderとか
231:デフォルトの名無しさん
09/01/04 15:06:57
わぉ!!
こりゃ斬新です!!!こんなのが世の中にあったのかー
プラットフォームがWindows VistaになってますけどXPでもいけますよね?
232:デフォルトの名無しさん
09/01/04 15:12:02
XPならSP2+.NET3.0以上
233:デフォルトの名無しさん
09/01/04 15:37:38
WebBrowserで質問です。リンクをクリックしたときに、それが新たにブラウザを
開いてしまうのか、それとも同じブラウザ内に表示されるのか、クリックの前に
知る方法はあるでしょうか。右クリック・メニューにはその情報がないため
クリックしてからでないとわかりません。IEが出て来るまでに時間がかかって
しまう場合が多くいらいらしてしまうのでした。
何かよい方法があるといいのですが・・・アドバイスお願いします。
234:デフォルトの名無しさん
09/01/04 15:41:13
>>233
a タグの属性見ればいいんじゃね?
235:デフォルトの名無しさん
09/01/04 15:48:19
>>233
URLリンク(support.microsoft.com)
236:デフォルトの名無しさん
09/01/04 16:31:51
VS2005のC#で、XP上でボタンを押すと単純にbluetoothのオン・オフを切り替えるだけのアプリを作りたいのですが、
どこから手をつけてよいのか分からないのです。ぐぐってもWindowsMobileの情報ばかりで・・・
WindowsMobileのBthSetModeに相当するような関数はあるのでしょうか?
237:デフォルトの名無しさん
09/01/04 16:33:54
>>234
クリックされたときにそこの内容がつかめればいいということですか。
>>235
NewWindow イベント というものがあるのですね、知りませんでした、
これで単純にキャンセルすることはできそうですね!!
これで新しいブラウザではなくて自分のところにリダイレクトできれば
いいのですね。この CancelEventArgs にはアドレスがなさそうなので
どうやったら掴めるか、また調べてみますです。
どうもありがとうございました!
238:デフォルトの名無しさん
09/01/04 16:38:12
>>236
BluetoothSetLocalServiceInfo() とかの API は使えないの?
239:デフォルトの名無しさん
09/01/04 16:40:09
>>237
> クリックされたときにそこの内容がつかめればいいということですか。
違う。DOM でパースして、target 属性を見ればいいんじゃない? ってこと。
ま、a タグに Javascript を仕込まれてたりしたときのことを考えなくちゃならんけどw
240:デフォルトの名無しさん
09/01/04 18:07:58
C#でAccessデータベースをOLEで連携してDataGridで表示しつつ
右横に単票状態のデータベースを表示し、修正する名簿ソフトを
作っています。
そこで質問をさせてください。
----
DataGridに表示させ、DataGridの右横にテキストボックス
を配置し、テキストボックスにデータベースのデータソースと
バインドさせて、名簿管理ソフトを作りました
これに機能追加で、DataGridの表示条件を絞り込みできるようにしようと
しました。
そこで、
DataViewを使って、RowFilterプロパティを使って抽出条件で
DataGridの表示条件を絞り込み出来る機能を追加しましたが
DataGridの右横にあるテキストボックスとDataGridのデータが
連動されなくなってしまいました。
(DataGridの絞込みをしてもテキストボックスに表示されるのは
データソースの1行目の情報となってしまう)
これを解消する良い方法は無いでしょうか?
テキストボックスでデータ修正をし、データベースの情報を
修正する機能をつけていて、それを無くしたくは無いのです。
お手数をおかけしますがご教示ください
また、説明不足や表現力不足でわかりづらかったらご指摘ください
ますと幸いです。
241:デフォルトの名無しさん
09/01/04 18:15:00
TextBoxのバインディングソースもそのDataView使えばいいんじゃね
242:デフォルトの名無しさん
09/01/04 18:56:09
>>241
なるほど、試してみます
どうもありがとうございます
243:デフォルトの名無しさん
09/01/05 01:12:37
教えてください。
フォームに配置されているコントロールの使用可制御を 以下のように行いたいのです。
textA.Enabled = true;
if (条件1)
{
textA.Enabled = false;
}
if (条件2)
{
textA.Enabled = false;
}
if (条件3)
{
textA.Enabled = false;
}
このソースを実行すると、if文の条件に合ったとき、 一瞬、コントロールが使用可になってから使用不可になる というちらつきが生じてしまいます。
「textA」としていますが、このようなコントロールがとてもたくさんあり、
if文の条件もたくさんあります。
また、条件はコントロールが『使用不可になる条件』しかなく、 使用可になる条件がない(使用不可の条件に1つも当てはまらなければ使用可) ため、いったんコントロールを使用可にしてから条件にあったときだけ 使用不可にする方法をとっています。
ちらつきをなくす良い方法はないでしょうか。
上記のソースが流れ終わるまでは画面の再描画を行わない、などの
方法があればお願いします。
244:デフォルトの名無しさん
09/01/05 01:30:44
textA.Enabled = !(条件1||条件2||条件3);
245:デフォルトの名無しさん
09/01/05 01:33:24
if (条件1)
{
textA.Enabled = false;
}
else if (条件2)
{
textA.Enabled = false;
}
else if (条件3)
{
textA.Enabled = false;
}
else
{
textA.Enabled = true;
}
246:デフォルトの名無しさん
09/01/05 01:53:18
LockWindowUpdate() とかダメ?
247:デフォルトの名無しさん
09/01/05 02:18:21
bool tmp = true;
if (条件1)
{
tmp = false;
}
if (条件2)
{
tmp = false;
}
if (条件3)
{
tmp = false;
}
if(textA.Enabled != tmp)//これ無いとちらつく?試してないけど
{
textA.Enabled = tmp;
}
248:デフォルトの名無しさん
09/01/05 02:36:56
>>247
> ラスト4行
確認はしていないが、そのチェックはプロパティの実装に入ってる可能性が高い
他のには大抵入ってるし、ないとEnabledChangedが正常動作しなくなる
249:デフォルトの名無しさん
09/01/05 06:42:38
textA.BeginUpdate(); // EndUpdate()まで画面の再描画を行わないようにする
textA.Enabled = true;
if (条件1)
{
textA.Enabled = false;
}
if (条件2)
{
textA.Enabled = false;
}
if (条件3)
{
textA.Enabled = false;
}
textA.EndUpdate();
250:デフォルトの名無しさん
09/01/05 11:54:19
240の質問の続きです・・・
240の質問事項については、>>241で無事解決しました。
どうもありがとうございます。
RowFilterでフィルタをかけている状態で、下記のコマンドをボタンで実行
させていますが、DataGridのフォーカスを手動で変更をしないと
データベースが更新されないのです。
※フォーカスを移動しなくても更新されるようにEndCurrentEdit
メソッドを事前にかけているのですが・・・
---------------------------------
int iRow; //更新したレコード数
this.BindingContext[dbCustomer1, "M_Customer"].EndCurrentEdit();
iRow = oleDbDataAdapter1.Update(dbCustomer1, "M_Customer");
MessageBox.Show("更新 " + iRow + "件");
-----------------------------
度々すみませんが、ご教示いただけないでしょうか?
251:デフォルトの名無しさん
09/01/05 12:06:07
string path が不正なパスのとき ( "::{hogehoge}" みたいな )
bool b = Directory.Exists( path );
は例外ださないでfalseが返る (内部では出ててcatchされてるのがパフォーマンスモニタで確認できる) けど
DirectoryInfo di = new DirectoryInfo( path );
bool b = di.Exists
だとコンストラクタの時点でArgumentExceptionがでる
前者でも例外出してくれた方がいいかなぁ
でも実用的じゃなくなるかなぁ
ただ「信頼性とパフォーマンスモニタ」の「# of Exceps Thrown」が増えてくのは気持ち悪い
つーか増えてく原因探すのでえらい手間取ったorz
252:デフォルトの名無しさん
09/01/05 12:23:10
Visual Studio 2008で専用ブラウザを作成しています
FormClosing時に画面は閉じても良いのですが閉じる前に
サーバーに対してログアウト処理のページを読み込ませて
強制ログアウトさせたいのですが、FormClosingでNavigate
に処理ファイルを書いて実行しても処理は行われず
FormClosingの最終部にe.Cancel = true;を書くと
処理は実行されます。
しかしこれだとどうやっても画面が閉じれなくなるので
何とかしたいのですが、この場合どういう書き方をしたら良いのでしょうか?
253:デフォルトの名無しさん
09/01/05 12:35:07
FormClosing
{
if( !ログアウト処理した )
{
e.Cancel = true;
FomClosing中ですよ = true;
ログアウト処理();
}
}
ログアウト処理
{
...
ログアウト処理した = true;
if(FomClosing中ですよ)
{
this.Close();
}
}
254:デフォルトの名無しさん
09/01/05 12:41:51
ログアウトしたかどうかの判断がFormのイベントハンドラに入ってて、
フォームを閉じる処理がログアウト処理()に入ってるっていうのはどうなの。
まるでVB厨の書くコードみたいw
ってういか、そもそも>>252のいっているような現象って本当に起こるの?
255:デフォルトの名無しさん
09/01/05 12:42:00
最終部にApplication.DoEvent();
256:デフォルトの名無しさん
09/01/05 13:44:23
UWSCというマクロツールの画像判定処理
(bmpファイルを読み込んで、その画像と同じものが画面上になければfalseを返す
画面上にあればtrueを返してその画像の座標を参照渡しするというモノ)
をC#で実現しようとしてがんばってるんだけど
BitmapクラスのGetPixelを使って再現してみたら実行にものすごく時間がかかるんですけど
これを早くする方法はないですか?
257:デフォルトの名無しさん
09/01/05 13:51:57
LockBits
258:デフォルトの名無しさん
09/01/05 14:00:20
GetPixel/SetPixelって何のために生きてるの?
知らないと使ってしまいがちな絶対使ってはいけないものの代表格だよね
259:デフォルトの名無しさん
09/01/05 14:02:53
>>258
極端な思考だなあ。。
こういうのを2ch脳っていうのかなあ。(というのも極端な思考かもしれんが)
260:252
09/01/05 15:00:37
>>253
書かれている方法で試したのですがこれだと無限ループが発生して
しまいませんか?
>>254
私の環境では起きてます。orz
webBrowser.Navigateで通信が完了した等の
情報をひらう事は出来ないのでしょうか?
もし出来るならやり方を教えてもらえませんか?
261:デフォルトの名無しさん
09/01/05 15:18:58
ログアウト処理はBeginInvoke使って呼び出さないと駄目っしょ
ログアウト後のCloseはまた別にWebBrowserのイベントとかで呼び出しってことになるだろうけど
>>254
FormClosing中にWebBrowser.Navigateしても意味無いのは当然
あとはWebBrowserのイベント調べれ
262:デフォルトの名無しさん
09/01/05 15:22:25
そう言えばどうせNavigateして完了待ちになるならBeginInvokeも特に必要ないな
263:109
09/01/05 15:46:03
>>110
情報ありがとです。
なぜか{"テーブルに主キーがありません。"}って怒られました。
データベースエクスプローラのテーブルにある奴をダブルクリックしたら構成画面みたいなの出たので
右クリックで「主キーの設定」ってのはやったんですけど・・・
やさしそうな本買って勉強してみます。
264:252
09/01/05 16:56:12
>>261-262
ありがとうございます
調べてみます
265:デフォルトの名無しさん
09/01/05 17:20:31
>>263
主キー(primary key)とは制約(constraint)であり、その列に重複(duplicate)する値を持たないので一意性(ユニーク,unique)がある
つまり主キーから行を特定できる
266:デフォルトの名無しさん
09/01/05 20:53:41
NUnitを使っているのですが、
テストデータとして予め用意したテストファイル(VS2008のプロジェクトディレクトリ内)を
使う場合、そのパスを取得するいい方法は何でしょうか?
Assembly.GetAssemblyで取得しようとすると、NUnit の GUI runner がshadow copyをしているので
違う一時ディレクトリになってしまい、shadow copyをオフにするとAssemblyにロックがかかってしまい
VSでのビルドができなくなってしまって困っています。
267:デフォルトの名無しさん
09/01/05 22:49:38
Gifファイルのカラーパレットを変更したいです。
現在はビット深さが8bitで、カラーパレットは2^(7+1)で256色用意してあります。というかこれがデフォルトだと思います。
この状態で、ビット深さは8bitのままで、カラーパレットのエントリーのレングスを2にしたいのですが、
どうやったらいいのかわかりません。お願いいたします。
(目的は、特許庁のインターネット出願ソフトをパスするためです。どうやら、カラーパレットが2でないと
出願ソフトではじかれてしまうようなのです)
268:デフォルトの名無しさん
09/01/05 23:04:17
意味が分からん
パレットのエントリ数は色深度で決まるもんだろ?
つーか普通に画像処理ソフト使えよと思うわけだが
269:デフォルトの名無しさん
09/01/05 23:11:38
>>268
>>パレットのエントリ数は色深度で決まるもんだろ?
原則、そうだと思います。ただ、GIFのヘッダーのパックドの2~4ビット目と、6~8ビット目を
みるとお分かりの通り、デプスとエントリ数は異なる値に設定できるようになっています。
Universal Document Printerという市販ソフトでモノクロ出力すると、
デプスが8でパレットのエントリ数は2で出力されます。
個人的には、こうするんだったら、デプスが1bitでエントリ数が2という組み合わせで
いいじゃないかとも思うんですが、業界としてデプスは8bitが標準なので
それに倣っているんだな、と勝手に解釈しています。
270:デフォルトの名無しさん
09/01/05 23:17:30
static public void test()
{
Bitmap bmp = new Bitmap(@"C:\Documents and Settings\stuv\デスクトップ\b1.gif");
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
BitmapData bmpData = bmp.LockBits(rect, ImageLockMode.ReadWrite,bmp.PixelFormat);
IntPtr ptr = bmpData.Scan0; int stride = bmpData.Stride; int bytes = stride * bmp.Height; byte[] index = new byte[bytes];
// Copy the RGB values into the array.
System.Runtime.InteropServices.Marshal.Copy(ptr, index, 0, bytes);
int initX;
for (int y = 0; y <bmp.Height; y++)
{
initX = stride * y;
for (int x = 0; x < bmp.Width; x=x+2)
{
index[initX + x] = 0;
index[initX + x+1] = 1;
}
}
System.Runtime.InteropServices.Marshal.Copy(index, 0, ptr, bytes);
bmp.UnlockBits(bmpData);
Bitmap bmpTemp = new Bitmap(1, 1, PixelFormat.Format1bppIndexed);
ColorPalette pal = bmpTemp.Palette;
pal.Entries[0]=Color.Black;
pal.Entries[1]=Color.White;
bmp.Palette = pal;
bmp.Save(@"C:\Documents and Settings\stuv\デスクトップ\b2.gif", ImageFormat.Gif);
bmp.Dispose();
コンソールです。これよりスマートなのはありますでしょうか。
271:デフォルトの名無しさん
09/01/06 01:13:23
RowFilterでフィルタをかけている状態で、下記のコマンドをボタンで実行
させていますが、DataGridのフォーカスを手動で変更をしないと
データベースが更新されないのです。
※フォーカスを移動しなくても更新されるようにEndCurrentEdit
メソッドを事前にかけているのですが・・・
---------------------------------
int iRow; //更新したレコード数
this.BindingContext[dbCustomer1, "M_Customer"].EndCurrentEdit();
iRow = oleDbDataAdapter1.Update(dbCustomer1, "M_Customer");
MessageBox.Show("更新 " + iRow + "件");
-----------------------------
272:デフォルトの名無しさん
09/01/06 11:32:48
ネットワークからのデータを1バイトずつ処理したいので、BufferedStreamを使おうとしたのですが、
BufferedStreamにデータが到着したかどうかを取得できる機能が見つからなくて困っています。
普通にReadByte()すると切断されるかリモートホストからデータが1バイト来るまでブロックしてしまいますし、
LengthやPositionの取得はおろかタイムアウトの設定すらサポートされていません。
1バイトを読むためにいちいちコールバックさせるのも面倒でたまりません。何かいい方法はありませんか?
273:デフォルトの名無しさん
09/01/06 12:28:03
非同期でやれば
274:デフォルトの名無しさん
09/01/06 19:12:20
NetworkStream.DataAvailable
275:デフォルトの名無しさん
09/01/06 19:32:40
64*64の画像をバッファに取り込んで、そこから32*32の範囲を拡大縮小せずに取り出すことはできますか?Rectangleを使うらしいですが、そこから先が分かりません。教えて下さい。
(例)
Bitmap bmp = new Bitmap("test.bmp");
Rectangle rec = new Rectangle(0,0,32,32);
Bitmap result = ??
276:デフォルトの名無しさん
09/01/06 20:00:40
新しいBitmap作ってGraphics.FromImageで作ったGraphicsにGraphics.DrawImage
277:デフォルトの名無しさん
09/01/06 20:30:02
>>276
それはここのことを言ってると思いますが、
URLリンク(dobon.net)
Bitmap img = new Bitmap(@"C:\サンプル.jpg");
//PictureBox1のGraphicsオブジェクトの作成
Graphics g = PictureBox1.CreateGraphics();
//元の画像の(10,10)-(100,100)の部分を切り取って表示する
//座標(0,0)に表示し、単位をピクセルとする
Rectangle rect = new Rectangle(10, 10, 100, 100);
g.DrawImage(img, 0, 0, rect, GraphicsUnit.Pixel);
//Graphicsオブジェクトを破棄
g.Dispose();
これは一部を表示するだけで、私がしたい「別のbitmapまたはimageデータに切り取った画像を入れたい」ことにつながってません。
この点厚かましいお願いとは思いますがよろしくお願いします
278:デフォルトの名無しさん
09/01/06 20:35:06
言ってない
279:デフォルトの名無しさん
09/01/06 20:35:46
ぽかーん・・・
280:デフォルトの名無しさん
09/01/06 20:44:19
>>277
噴いたwwレベル高いなおいwww
まぁ、この程度の事にGraphics持ち出すのは大袈裟だとは思うが、要求仕様は満たしてるな。
MSDN行って、Bitmapクラスのメソッド一覧読んで来い。
281:デフォルトの名無しさん
09/01/06 21:06:00
Objectとobjectってなにが違うんですか?
(先頭の大文字と小文字)
イベントの引数を書いてると、小文字のobjectが最初に出てきます。
282:デフォルトの名無しさん
09/01/06 21:06:54
>>281
C# のキーワードと、.NET のオブジェクト
283:デフォルトの名無しさん
09/01/06 21:07:10
あ、逆ね。object が C# のキーワード。
284:デフォルトの名無しさん
09/01/06 21:26:50
おまえらはStringとstringどっちで書いてるんだ
285:デフォルトの名無しさん
09/01/06 21:29:44
宣言はstring
286:デフォルトの名無しさん
09/01/06 21:30:04
string だなぁ。
287:デフォルトの名無しさん
09/01/06 21:31:15
Int32
288:デフォルトの名無しさん
09/01/06 21:31:33
String
VSで型名が水色に統一されるからw
by 素人
289:デフォルトの名無しさん
09/01/06 21:31:39
静的メソッド呼び出すときだけString
290:デフォルトの名無しさん
09/01/06 21:53:38
何か水色だと参照型な気がしてしまう
291:デフォルトの名無しさん
09/01/06 22:04:39
>>289
オマエハオレカ
292:デフォルトの名無しさん
09/01/06 22:36:47
折角キーワード用意してくれてるんだから全部小文字でいいじゃん
293:デフォルトの名無しさん
09/01/06 22:39:43
小文字で始まるとJava臭くなるから
294:デフォルトの名無しさん
09/01/06 23:10:42
String や Object のほうが Java くさい
295:デフォルトの名無しさん
09/01/06 23:48:50
StringやObjectはVBくさい。
296:デフォルトの名無しさん
09/01/06 23:53:18
ほにゃらら臭くない命名規則なんてあるのか?
297:デフォルトの名無しさん
09/01/07 00:03:35
CodeZineで瀬○遥が投稿するたびに
憂鬱になるのは俺だけ?
298:デフォルトの名無しさん
09/01/07 00:15:38
stringが正解です。
299:デフォルトの名無しさん
09/01/07 00:19:44
namespace書かない方がusingで指定しなくてもクラス使えて便利だった
300:デフォルトの名無しさん
09/01/07 01:30:33
教えてください。
TreeViewにあるアイテムを選択し、それをExplorerを使って
あるフォルダへD&Dすることで、そのフォルダにテキストファイルを作成する
ことを考えています。
そのために、D&D先のフォルダのパスを検出する必要があるのですが、
それがどうもわかりません。
QueryContinueDragを使ったほうがいい?とWebにもあるのですが、
そのイベントで得られるイベント引数にはExplorerのパスが含まれていません。
ExplorerからTreeViewへのD&Dは簡単だったのですが・・・
どなたか教えていただけないでしょうか。
301:デフォルトの名無しさん
09/01/07 09:45:14
>>300
URLリンク(dobon.net)
ここを参考にしてみては?
今どうやろうとしているのかよくわからないんだけど、explorerのパスを取得するの
ではなくて、あらかじめテキストファイルを作成しておいて、ドロップしたいそのファイルの
パスを IDataObject(Dataformats.FileDrop, string[]{パス})として、explorerに通知するん
だと思うが。
302:デフォルトの名無しさん
09/01/07 09:50:29
>>300
ファイルやディレクトリをエクスプローラへドラッグ&ドロップするには?
URLリンク(www.atmarkit.co.jp)
エクスプローラへドロップしたタイミングでファイルを作成し、コピーしたい
URLリンク(forums.microsoft.com)
これらを見た感じ、エクスプローラ側のドロップ先パスを調べることは出来ないみたいだね。
エクスプローラへのドロップは、ファイルコピーまたは移動をエクスプローラが主体となって行う。
だからあらかじめ、作成したいファイルをどこか一時的に出力しておいて、
それらのファイルパスをドラッグデータに設定するしかないんでない?
303:デフォルトの名無しさん
09/01/07 09:55:39
すまん被った。
質問。
XmlSerializerで任意の型が含まれるobject配列をシリアライズしたいのですが、
その為にはXmlSerializerのコンストラクタへ、含まれる可能性のあるTypeを
全て渡しておかなければいけません。
そこで、XmlSerializer生成前にobject配列内の要素を総なめしType一覧を生成して
XmlSerializerに渡しているのですが、これって正しい方法なのでしょうか?
304:デフォルトの名無しさん
09/01/07 10:11:03
普通は属性で事前に定義しとくもんだろ
デシリアライズ時にどうすんだ
>>300
ドロップ時の動作はドロップ側で行うものだから
基本的にはDataFormats.FileDropとダミーファイル作るしかない。
ダミーを作るのが嫌ならシェル拡張でExplorerのドロップ時動作を書き換えることになる。
が.NET/C#でシェル拡張は止めといたほうがいいというのが定説だな。
Explorer以外のファイラとかだとまず無意味だし。
305:デフォルトの名無しさん
09/01/07 11:03:46
最近、C#を勉強しはじめたのですが、delegate、event で困惑してしまって・・・。
namespace my_namespace
{
delegate void my_delegate();
class my_class
{
public event my_delegate MyEvent;
public void my_func()
{
Console.WriteLine("hello");
}
static void Main(string[] args)
{
my_class oIns = new my_class();
my_delegate del0 = oIns.my_func; //※1
my_delegate del1 = new my_delegate(oIns.my_func); //※2
del0 += oIns.my_func; //※3
del1 += new my_delegate(oIns.my_func); //※4
:
}
}
}
[質問1]
※1と※2、※3と※4 この2種類の式でどのような違いがあるのかわかりません;;
306:305
09/01/07 11:04:38
あと、
"System.Windows.Forms.Buttonクラスインスタンス"の"Clickイベント"へイベントリスナーを登録しようとした際、
public void MyEventHandler(object sender, System.EventArgs e){ … }
:
this.button1.Click = this.MyEventHandler;
と記述すると、
イベント 'System.Windows.Forms.Control.Click' は += または -= の左側にのみ表示されます。
と、コンパイルエラーが表示されます。
[質問2]
どうして、"="ではリスナーの登録ができないのでしょうか;;
長文ですいません;;。何かお分かりの方、どうぞ、お知恵を…m(_ _)m
307:デフォルトの名無しさん
09/01/07 11:09:27
> ※1と※2、※3と※4 この2種類の式でどのような違いがあるのかわかりません;;
同じ 型が明らかなので省略可能ってだけ
> どうして、"="ではリスナーの登録ができないのでしょうか;;
eventがそういう仕様(add/removeのみ)だから
308:デフォルトの名無しさん
09/01/07 11:48:11
> ※1と※2、※3と※4 この2種類の式でどのような違いがあるのかわかりません;;
デリゲートの場合、=を使うとデリゲートがクリアされて新しく格納される
+=つかうと追加になって実行時にマルチキャストされる
イベントは基本的にマルチキャストされるべきなので外部からは+=か-=しかできない仕様になってる
イベントを実装するクラスでは=も可能
309:305
09/01/07 11:51:11
>>307
レス、ありがとうございます m(_ _)m
> > どうして、"="ではリスナーの登録ができないのでしょうか;;
> eventがそういう仕様(add/removeのみ)だから
ご回答頂いたとおり、私も最初、「そういうものなんだろうなぁ~」と思ったのですが、以下のソースでは、問題なくコンパイルが通ります。
※環境ですが、VS2008sp1 .NetFramework3.5sp1 です。
310:305
09/01/07 11:52:44
using System;
namespace my_namespace
{
delegate void my_delegate();
class my_class
{
public event my_delegate MyEvent;
public void my_func()
{
Console.WriteLine("hello");
}
static void Main(string[] args)
{
my_class oIns = new my_class();
my_delegate del0 = oIns.my_func;
my_delegate del1 = new my_delegate(oIns.my_func);
oIns.MyEvent = oIns.my_func; //※1
oIns.MyEvent = del0; //※2
oIns.MyEvent = del1; //※3
}
}
}
※1~3部分がコンパイルエラーにならないんです・・・
なんでだろ;;
311:デフォルトの名無しさん
09/01/07 11:55:41
同じクラス内だから
312:デフォルトの名無しさん
09/01/07 11:58:31
>>308でも書いたけど、
外部から=できてしまうということは、他で登録されていたかもしれないイベントを
全部削除できてしまうということになる。
それだからイベントを使う側からは追加か、既知のデリゲートの削除しかできないような仕様はあたりまえっしょ
イベント定義したクラスではすべてのことができる
313:305
09/01/07 12:21:16
>>308,311,312
レスありがとうございますm(_ _)m
309-310を書き込んでる間に、308が書かれていたようで;;
大変失礼しましたm(_ _)m
レス頂いた内容でスッキリしました。ありがとうございます。
余談なのですが…
私は、もともと、C→java、そして、C#と勉強?(仕事で使っている)してきたのですが、どうにも、C#はややこしく感じてしまいます…。
うまくいえないのですが、
・vatualやorverrideやnew
・delegateやevent
・struct(これは、アリだとおもいますが…)
といったものは、javaをやっていると、「必要かな?」とおもうような言語仕様のように思えます…
ただただ、ややこしくしているように感じます…
もう、歳なんですかね;;
314:デフォルトの名無しさん
09/01/07 12:25:59
>>305
.NET1.xまでは※4で書く必要があったが、.NET2.0以降は※3でよくなった。
匿名メソッドやラムダ式への布石だと思う。
>del0 += oIns.my_func; //※3
>del1 += new my_delegate(oIns.my_func); //※4
.NET2.0以降なら※3を使ったほうがよい。最適化してくれることがある。
>>313
単に慣れかと、むしろ
>・struct(これは、アリだとおもいますが…)
この一文に不安を感じる。
315:デフォルトの名無しさん
09/01/07 12:32:02
CとJavaの間にC++が入ってたらすんなりだったかもな。
316:デフォルトの名無しさん
09/01/07 12:46:33
DelphiやJ++に手を出してたもので理解は早かった。ヘジたんラブということで(笑
eventは一度add/removeを自分で書いてみると完全に理解できると思う。
java1.1で匿名クラスが出たときの方が理解に時間がかかったな。
317:デフォルトの名無しさん
09/01/07 13:04:45
overrideはJavaにあるじゃない
overrideはないと困るから追加されたんだよ
あとJavaにはvirtualがないために
メソッド定義にfinalをつけると速度が格段に上がるということが実際にあったんだよ
delegate的なものもそのうち追加されるよ
318:デフォルトの名無しさん
09/01/07 17:12:22
これからC#勉強するため本を買おうと思っています。
VB, Delphiはそこそこ使えます。
ローカルデータベースでの顧客管理みたいなプログラムを作ろうと思ってるのですが
今まで買って「この本はなかなかお勧めだよ」って本あったらぜひ教えて下さい。
データベースはSQL ServerかAccessがいいのかなって思ってます。
319:デフォルトの名無しさん
09/01/07 17:36:21
URLリンク(codezine.jp)
上のサイトを参考に、Plug-inフォルダに入れ込んだDLLをアプリケーションの起動時に読み込むようにしようとしています。
コードもほとんどコピーのはずなのに、何故か実行するとダウンキャストを行う所で例外が発生します。
// 読みだし終わったDLLにあるクラスをインスタンス化
Object obj = asm.CreateInstance(t.FullName); // tFullNameはCountChars.CountChars
Debug.WriteLine(obj.GetType()); // 「CountChars.CountChars」が表示される
CountChars.CountChars plg = (CountChars.CountChars)obj; // ここで型変換したのだが、System.InvalidCastExceptionが発生
// Exceptionが発生したため、以下のコードが実行されません
Debug.WriteLine("Plug-in Run");
plg.Run();
Debug.WriteLine("Plug-in Runed");
正直、何故うまくダウンキャストされないのか理由が思い浮かばないという状況です。
お知恵をお貸しいただけると大変ありがたいです。
320:デフォルトの名無しさん
09/01/07 17:39:04
C#は上位の名前空間と同名のクラスを認めてないみたいな話じゃないの
321:デフォルトの名無しさん
09/01/07 17:54:31
プラグインが実装するインターフェイスのアセンブリは、
呼び出し側とプラグイン側で同じものを参照する必要がある。
両方に同じコードをコピーしてそれぞれでコンパイルしてるのではないかな。
322:デフォルトの名無しさん
09/01/07 17:56:37
俺はC++&PythonからC#入ったら、ほとんど覚えることは無かったな。
最近のGC付き言語はどれも似たような感じだね。
323:319
09/01/07 18:34:24
>>321
どうもご返答ありがとうございました
一応あの後頑張った結果
1.インターフェースクラスのみをdllに吐き出す
2.参照の追加、でdllを参照に加える(これは継承したクラスとアプリケーションどちらも)
3.この状態で動的ロードとダウンキャストを行う
で、うまく行きました
ありがとうございました。
324:デフォルトの名無しさん
09/01/07 20:27:38
>>275
解決しました
325:デフォルトの名無しさん
09/01/07 20:44:01
Runed・・・ 笑うとこ?
326:デフォルトの名無しさん
09/01/08 07:59:11
sql serverへの接続プログラムを作っていて不思議に思ったことがありました。
SqlConnectionクラスが保持しているリソースの開放を、
『using + IDisposableインタフェイス』で行いました。
using (SqlConnection oCon = new SqlConnection("接続文字列"))
{…処理…}
この時、ふと、
「SqlConnectionクラスって、IDisposableインタフェイスを実装してるよね?」
と思い、継承関係を追いかけてみると、親クラスであるDbConnectionが、
IDisposableインタフェイスを継承していました。
「あ~、ここで継承してるのね。」
「Disposeメソッドを定義してるのが、SqlConnectionクラスなんだ。」
と思ったのですが、SqlConnectionクラスのDisposeメソッドを見てみると
protected override void Dispose(bool disposing)
となっていました。
「あれ? "void Dispose()" じゃないの?」
と思い、引き続き調べてみると、DbConnectionクラスの親クラスである
Componentクラスもまた、IDisposableインタフェイス継承しており、
ComponentクラスにてDisposeメソッドが定義されていました。
ComponentクラスでもIDisposableインタフェイスを継承しており、
Componentクラスを継承しているDbConnectionクラスもまた、IDisposableインタフェイスを
継承していることがとても、不思議でした。
なぜ、DbConnectionクラスでもIDisposableインタフェイスを継承する必要があるのでしょうか?
以上、おサルな私に何かアドバイス頂けたら幸いです。
327:デフォルトの名無しさん
09/01/08 08:10:18
DbConnectionはDisposeには手を出してないよ
Componentがpublic void Dispose()とprotected virtual void Dispose(bool)を定義
Dispose()およびファイナライザ内でDispose(bool)を呼び出す
DbConnectionは何もしない
SqlConnectionがprotected override void Dispose(bool)をオーバーライド
クラスの解説の定義のとこに出てくるインターフェイスは基底が実装してるのも含めて書かれる
328:326
09/01/08 08:26:19
>>327
>クラスの解説の定義のとこに出てくるインターフェイスは基底が実装してるのも含めて書かれる
この1行で全てが解決しました。
目から鱗です。
ありがとうございました。
329:デフォルトの名無しさん
09/01/08 12:26:05
Objectとobjectって同じもの?Stingとstringって同じもの?
330:デフォルトの名無しさん
09/01/08 12:54:57
System.Objectとobjectは同じもの
System.Stringとstringは同じもの
331:デフォルトの名無しさん
09/01/08 12:59:58
global::System.Object とすればさらに正確か
332:デフォルトの名無しさん
09/01/09 02:34:19
C#やり始めて3年、大体空気するように使えるようになったけれど、F#今初めてどのぐらいでこの域に達するかな・・・
やっぱり日々の仕事で使ってかないと上達しないんだろうな・・・
333:デフォルトの名無しさん
09/01/09 12:21:41
>>332
プログラミング言語なんてひと月ふた月でフルに立ち上がらないようなやつは
だめだろ
334:デフォルトの名無しさん
09/01/09 12:24:23
F#が日々の仕事で使えるわけないがな
335:デフォルトの名無しさん
09/01/09 13:37:02
>>333
ひと月ふた月でフルに立ち上がるってどんな超人だよw
そんな奴いるんだったらうちで月50万で即雇うよ。
住所と名前教えてくれ。
フルってC#で可能な事なら何頼んでもすぐ完成させてくれるって事だよな?
マジで雇う。
336:デフォルトの名無しさん
09/01/09 15:06:09
VC#2008EE なんですけど、
コンパイルのたびに前回のコンパイルなどの知識を生かしてPGO(?)、最適化みたいなことって
やっているんですか?
意味不明な質問ですいません
337:デフォルトの名無しさん
09/01/09 15:11:23
>>335
派遣会社にでも相談したら?
月150万出せば、貴方の言う超人レベルの人が来てくれるよ。
>>336
ただの最適化しかしてくれないよ。
PGOみたいな機能はない。
338:336
09/01/09 15:15:02
ということは、
同じソースコードを同じパソコンでコンパイルしたら大体同じ速度ってわけですか。
(最適化オプションが一致なら)
しかしそれがどうもそうじゃない気がして気持ち悪いのですが。
なにかありがちな勘違いとかないですか?
339:デフォルトの名無しさん
09/01/09 15:17:22
コンパイル時に行われる最適化はローカルな範囲だけ。
どこでコンパイルしても出来上がるILは一緒。
インライン展開が行われたりするのは実行時。
340:デフォルトの名無しさん
09/01/09 15:21:30
気がすると言われても困る
dllのキャッシュとかその辺のレベルの話もあるわけだし
341:336
09/01/09 15:23:53
>>339 さん
ありがとございました。
342:デフォルトの名無しさん
09/01/09 15:25:57
VS2008 .net3.5SP1
SmtpClient を使用してメールを送信しようとしています。
2つのLANカードがささってるPCから送信する場合、
指定のLANカード経由でメールサーバーに接続する
プロパティや方法などありますでしょうか?
343:336
09/01/09 15:28:48
>>340 すいません、こういう質問のしかたはよくないな、と思ったんですが。
結果とって計ったりしなかったもので。
344:デフォルトの名無しさん
09/01/09 15:32:57
>>342
ServicePointプロパティの解説
345:デフォルトの名無しさん
09/01/09 15:54:50
>>344
ServicePoint.BindIPEndPointDelegate プロパティ
でいけそうです。ありがとうございます。
346:デフォルトの名無しさん
09/01/09 16:08:41
WebBrowserでリンクをクリックした時に、リンク先がpdf等だった場合
IEとかのブラウザが立ち上がってしまうんですが、これを直接pdfのプログラムで開きたい場合は
どうしたらいいんでしょうか。
347:デフォルトの名無しさん
09/01/09 16:46:05
NewWindowイベントを持つ継承クラスを作ってイベントでNewWindowをキャンセルさせて、DLしたファイルを直接開く。
348:デフォルトの名無しさん
09/01/09 20:49:08
超人レベルPGが月50万てw
駄クラスでもフリーランスで70万くらいは取ってるだろ。そんな安い金で来るわけねーだろw
349:デフォルトの名無しさん
09/01/10 00:04:34
>>335のレベルが推して知れるな
350:デフォルトの名無しさん
09/01/10 00:05:52
50万て。何重に搾り取られたゴミ派遣だよ…
351:デフォルトの名無しさん
09/01/10 00:58:52
マ版へ池
352:デフォルトの名無しさん
09/01/10 01:52:33
フリーと会社で雇うのは全く違う。
税金とか保険とか退職金とかあるだろ。
353:デフォルトの名無しさん
09/01/10 01:53:36
URLリンク(www.atmarkit.co.jp)
Parallelクラスいいな・・・
354:デフォルトの名無しさん
09/01/10 13:35:06
>>351
355:デフォルトの名無しさん
09/01/10 16:22:42
FormのPaintイベントで
DrawImageをしているのですが、
たまに
Formの上にウィンドウを表示しているところにも
DrawImageの一部が描画されてしまいます。
これはいったい何が原因なのでしょうか?
ウィンドウを再描画するようにするしか方法はないのでしょうか?
356:デフォルトの名無しさん
09/01/10 16:26:21
ウインドウってなに
357:デフォルトの名無しさん
09/01/10 16:35:24
MDI?
358:デフォルトの名無しさん
09/01/10 16:35:47
液晶が焼きついたんだろ
359:355
09/01/10 19:04:50
>>358
それかも。
違うハードで試してみます。
360:デフォルトの名無しさん
09/01/10 19:07:29
何という釣り
361:デフォルトの名無しさん
09/01/10 21:02:12
VS2005なんですけど
プロパティの自動作成機能ってなかったですっけ?
public clas MyClass
{
public string プロティ
って書いて自動でget,set作る機能です。
362:デフォルトの名無しさん
09/01/10 21:07:20
prop
363:361
09/01/10 21:29:44
thx
364:デフォルトの名無しさん
09/01/11 03:29:41
質問です。
CのヘッダーファイルからDllImport行を自動生成するツールってありますか?
もしあるようでしたら、場所を教えて欲しいです。
365:デフォルトの名無しさん
09/01/11 03:31:38
ピンボケドトネト
366:デフォルトの名無しさん
09/01/11 09:21:44
>>364
ヘッダファイルからじゃないが
URLリンク(msdn.microsoft.com)
の
siggen
URLリンク(download.microsoft.com)
367:デフォルトの名無しさん
09/01/11 18:28:44
>>366
それちゃんとヘッダファイルから生成してくれるよ
368:デフォルトの名無しさん
09/01/12 20:22:14
ジェネリッククラスについていまいち理解できませんのでちょっと教えてください。
クラス内で扱うオブジェクトをDisposeする必要がある場合、
型パラメータにIDisposableの制約を与えます。
新しくクラスを作成するときに、上記のような制約のあるジェネリッククラスを作ればよいのか、
IDisposeインターフェースを継承したクラスを使えばよいのかの判断がわかりません。
継承されたクラスを作るなら作成されたクラスはIDisposeを求められる引数などに使えます。
ジェネリッククラスだとそういうケースでは使えないが、
パフォーマンスや、明示的に型を設定できることが便利です。
インターフェースの制約のあるジェネリッククラスとインターフェースを継承したクラスを
比較した場合、こんな考えでよいでしょうか?
なんか自分の理解が足りていない気がしましたので質問させてください。
369:デフォルトの名無しさん
09/01/12 20:28:36
>>368
質問の意図がわからないし、俺じゃなくてもわかる人間がいる気がしない。
そもそも比較の対象になりようがない二つを比較している気がするんだが
370:デフォルトの名無しさん
09/01/12 20:31:18
IDisposable はクラスを Dispose 可能にする(Dispose を強制する)ためのインターフェイスであって、
ジェネリックスとは直接関係ない。
クラスの機能としてジェネリックスが必要なのか? をまず考えるべきじゃね?
371:368
09/01/12 20:46:15
>>369-370
お返事ありがとうです。
インターフェースの制約のあるジェネリッククラスとインターフェースを継承したクラスは
直接なんの関係もない、ということですね。
いろいろな型として振る舞わせたい場合はジェネリッククラス、
そんな必要はない場合はインターフェースの継承。
ジェネリッククラスの機能が導入され、Hashtableクラスはジェネリッククラス版ができ、
進化しました。
ということはジェネリッククラス>通常のクラス
と思ったわけです。
ジェネリックの機能の追加によるメリットを受けることができるのは
HashTableクラスのようなobject型としてデータを保存し、利用時にキャストしていたような
クラス、ということでしょうか?
そんな動作をしないようならジェネリッククラスは特にいらない、という解釈です。
まだ考えへんですかね?
372:デフォルトの名無しさん
09/01/12 20:51:45
>>371
型パラメータに制約のあるジェネリッククラスもインターフェイスを実装できるわけだが。
全く別のものなのに、なんで比べてんの?
373:368
09/01/12 20:59:32
>>372
>型パラメータに制約のあるジェネリッククラスもインターフェイスを実装できるわけだが
この機能考えてませんでした。
だとしたら極論ジェネリッククラスにしておくに超したことはないということでしょうか?
リソースやらなんやらで多少はデメリットあると思いますが。
とりあえずジェネリッククラスで実装しておいて利用時に型を限定できますので。
全く別物とは言われるのですが自分の中では未だに
ジェネリッククラス>そうじゃないクラス
に見えてしまっています。
結論を言うと皆さんの言うように別物なんでしょうが、
まだ理解ができていません。
いろいろなところで解説をみると「この場合ジェネリッククラスは便利」という内容は見かけますが、
「この場合ジェネリッククラスにすると変」みたいな例ありませんか?
374:デフォルトの名無しさん
09/01/12 21:01:54
Form クラスをジェネリックスで実装するバカはいないだろJK
375:デフォルトの名無しさん
09/01/12 21:14:20
つかジェネリッククラスはメタクラスなわけで、クラスとはレイヤが違うと何度言われれば(ry
376:368
09/01/12 21:17:16
>>374
例えばこんなクラスですよね?
class MyClass<T> where T:Form
実際書いてみました。
利用時にTに設定するクラスが思いつきません。
>>375とも通じますが、つまり他のクラスを管理するようなクラスでないと
ジェネリックにする意味はない、ということでしょうか?
377:デフォルトの名無しさん
09/01/12 21:28:43
つか、コンテナ以外の用途って何かあるの?
378:デフォルトの名無しさん
09/01/12 21:32:22
IEquatable<T>のようなインタフェース
379:デフォルトの名無しさん
09/01/12 21:36:16
へー。勉強になった。実装クラスでは何かある?
380:デフォルトの名無しさん
09/01/12 21:42:40
Func<..> やら Linq の中身(処理の連結連結)でも使いまくり
だろ。
381:デフォルトの名無しさん
09/01/12 21:49:54
ほー。勉強になった。LINQ とかあんま使ってないからなー。
382:デフォルトの名無しさん
09/01/12 22:24:49
まーこれも型推論の出来ない静的であるせいなんだが。
383:デフォルトの名無しさん
09/01/12 22:36:28
ジェネリックだとHoge<A>とHoge<B>は全くの別物になるからかえって不便になる場合がある
そういうときはわざわざ非ジェネリックのIHogeを定義してHoge<>に実装させたりする
384:デフォルトの名無しさん
09/01/12 22:42:12
C# 4.0 でその手間もいらなくなるかもね
385:デフォルトの名無しさん
09/01/12 22:46:08
値型は反変ダメだからやっぱり必要だよ
386:デフォルトの名無しさん
09/01/12 23:34:41
string配列をSettingsクラスを使って保存したいんだけど、型を選ぶところにstring[]が無いんだけどどうすればいいの?
387:デフォルトの名無しさん
09/01/13 00:19:56
手で入力する
388:デフォルトの名無しさん
09/01/13 01:21:15
string[]をCSVに変換して保存する方法あります?
CSVからstring[]に変換することも視野に入れて
389:デフォルトの名無しさん
09/01/13 01:24:28
for/string.split
390:デフォルトの名無しさん
09/01/13 01:32:17
>>382
型パラメータなんて推論しまくって省略されまくりだろ。
パラメータ化しなければならないってならそうだけど
この方式が安全ではあるので仕方ない
391:デフォルトの名無しさん
09/01/13 01:32:33
単なるsplitはまずい
392:デフォルトの名無しさん
09/01/13 01:51:46
結局グーグルにかけたら↓にデザイナに表示されない型の保存についてのやり方が書いてあったwww
URLリンク(dobon.net)
393:デフォルトの名無しさん
09/01/13 01:54:26
CSVのパースって、本当に汎用・厳密にやろうとするとすげー面倒だよな
だから、CSV出力・パーズ専用ライブラリを探すか作るかしなくちゃならない。
splitが使えるのは、「データに絶対にカンマが入らない」 とか、「絶対に改行が入らない」
とか、そういう仮定がいくつかおける場合だけだと思う。
C# CSVでググればいくつか出てくるから、ライセンスとかと相談しながら
選ぶか作るかすればいいんじゃね
394:デフォルトの名無しさん
09/01/13 05:14:59
Visual BasicからC#に変える利点ってどのようなものがありますか?