C♯相談室 Part21

1名無しさん♯

(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。


過去スレは>>2-5あたり。


関連リンク
http://onigiri.s3.xrea.com:8080/csharp/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D
2名無しさん♯:05/01/23 23:24:34
3931==936:05/01/23 23:50:10
>>1
乙。
4デフォルトの名無しさん:05/01/23 23:50:29
4様
5デフォルトの名無しさん:05/01/23 23:58:43
ムッハー
おっつー
6デフォルトの名無しさん:05/01/24 01:06:14
このすれの主題は、やぱーり2005かな?
7デフォルトの名無しさん:05/01/24 01:17:46
1.0でも2.0でもよい気がしますけども
2.0はリリースまだなので聞かれて答えても
MSの修正入ったりなんなりする予感。
8デフォルトの名無しさん:05/01/24 03:35:51
まぁそれでもかまわないでしょ。それを気にする人はそもそも2.0なんか触らんわけだし
9デフォルトの名無しさん:05/01/24 06:14:48
Stackを使っているのですが、以下のようなプログラムで0~9999までの数字をPushして、
次はPopを行いながらファイルに書き込むと5000~9999までしか書き込まれません。
以下のプログラムで何か間違っていますでしょうか。

using System;
using System.IO;
using System.Collections;
using System.Text;
namespace ConsoleApplication1
{
 class Class1
 {
  [STAThread]
  static void Main(string[] args)
  {
   Stack tmpStack = new Stack();
   Stack syncedStack = Stack.Synchronized(tmpStack);
   for (int i=0; i<10000; i++)
   {
    syncedStack.Push(i.ToString());
   }
   StreamWriter sw = new StreamWriter(@"C:\Out.txt", false, Encoding.Default);
   for (int i=0; i<syncedStack.Count; i++)
   {
    sw.WriteLine(syncedStack.Pop().ToString());
   }
   sw.Close();
   Console.WriteLine("終わりました。");
  }
 }
}
10デフォルトの名無しさん:05/01/24 06:20:57
>>9 すいません、事故解決しました。
POPしながらfor (int i=0; i<syncedStack.Count; i++)ではできないのも当たり前でした・・・
11931==936:05/01/24 09:08:24
>>944
http://zep.s3.x-beat.com/up/img-box/img20050124090648.gif
オブジェクト型の実体を調査するために
御指示通りに試みましたが、突き止めるに至りませんでした
(>_<) どうしたらよろしいでしょうか。
12デフォルトの名無しさん:05/01/24 09:31:03
オブジェクトブラウザでDeleteメソッドのあるクラスを探せ
13931==936:05/01/24 11:14:56
オブジェクトブラウザって、なんですか・・・。
クラスを探してほしいですが、
それ以前に、オブジェクトブラウザの使い方を・・・。
14デフォルトの名無しさん:05/01/24 11:18:48
ツール>OLE/COM オブジェクト ビューア
使い方はぐぐるなどして自分で調べれ。
15931==936:05/01/24 11:21:36
サンクスコ
16デフォルトの名無しさん:05/01/24 11:32:20
グレープシティのTrueDBGridなんだけど

C1TrueDBGridのオブジェクトから行番号取得したいんだけど
どなたかわかりますでしょうか?
17デフォルトの名無しさん:05/01/24 11:43:38
ヘルプに載ってるだろうし聞くならグレープシティに問い合わせりゃいいと思うんだけど。
SelectedRowsプロパティ辺りじゃね。
18デフォルトの名無しさん:05/01/24 11:56:26
はい。SelectedRowプロパティだろうとヘルプは見たのですが、
その下がわかりません。
教えていただければ幸いです。
1917:05/01/24 11:59:47
> ヘルプに載ってるだろうし聞くならグレープシティに問い合わせりゃいいと思うんだけど。

私自身はグレープシティのFAQざっとみてそれっぽいプロパティを挙げただけだからなー。
大体その下って何よ。

//コレクションにはそれぞれRowが入っていて、そのプロパティにはIndexなんてのがあったりするのか?
20931==936:05/01/24 12:18:16
>>14
ワード→Alt+F8→VB起動
ライブラリ=Word
クラス=Find
Parent見つけました。

Property Parent As Object
読み取り専用

これしか書いてないっす・・・●rz...
21デフォルトの名無しさん:05/01/24 12:34:29
オブジェクトブラウザでDeleteメソッドのあるクラスを探せ
2216:05/01/24 13:16:33
>19

すいません下というのは
MessageBox.Show (c1TrueDBGrid2.SelectedRows.???);

???の部分なんです。
グレープシティに問い合わせですが、まだトライアル版で使用しているので聞けないんです。
2316:05/01/24 13:38:49
つまり以下のことをTrueDBGridでやりたいのです。

int a = dataGrid1.CurrentCell.RowNumber;//行番号取得

txtBox1.Text = dataGrid1[a,0].ToString();//選択レコードの内容をテキストボックスにコピー

色々説明不足ですみません。
24デフォルトの名無しさん:05/01/24 13:50:13
それ行番号を取得したいんじゃなくて選択レコードの内容を取得したいんじゃないの?
25デフォルトの名無しさん:05/01/24 14:03:19
>>16
int a = c1TrueDBGrid2.Row;
txtBox1.Text = c1TrueDBGrid2.SelectedText;

こんな感じ?
2616:05/01/24 14:23:18
>24

結果的にはそうです。選択行の0列目の値を取得したいのです。
27デフォルトの名無しさん:05/01/24 14:36:06
>>25の訂正。
int rowNum = c1TrueDBGrid1.SelectedRows[0];
string colName = c1TrueDBGrid1.SelectedCols[0].Caption;
MessageBox.Show(c1TrueDBGrid1[rowNum, colName].ToString());
2816:05/01/24 14:56:23
>27
ありがとうございます。

行をセレクトすると
int rowNum = c1TrueDBGrid1.SelectedRows[0];
の部分でインデックスが範囲を超えています。とエラーが・・・。

もし0列目のみであれば

int rowNum = c1TrueDBGrid1.SelectedRows[0];
MessageBox.Show(c1TrueDBGrid1[rowNum, 0].ToString());
でいけますよね?
29デフォルトの名無しさん:05/01/24 15:24:38
重たい処理をするときはスレッドクラスを使って処理を分散させたほうが良いですか?
30デフォルトの名無しさん:05/01/24 15:33:24
その重たい処理が一つだけなら大体YES。
重たい処理が複数あるなら、シングルCPU環境においては順次やっていった方が早いかもしれない。
いずれにせよUIスレッドは処理スレッドとは分けるべき。
31デフォルトの名無しさん:05/01/25 00:42:55
宇宙仮面に掲載されているNotifyIconを2005でやってみたのですが、
うまくいきません。

①NotifyIcon追加しました。
②アイコンを自作し、NotifyIconのIconPropertyに割り当てました。
③ShowInTaskBarをfalseにしました。

そして、F5後に、フォームの右上の最小化ボタンを押しました。
すると、画面の左下のスタートボタンすぐ上にちっこくなりました。
最小化とは、SystemTrayにのみ表示される状態 だと思うのですが、
Systemtrayのみならず、小さいながらもデスクトップ領域に残ってます。
当然TaskbarにはShownされていません。

原因はなんでしょうか。よろしくNE.
32デフォルトの名無しさん:05/01/25 00:47:56
最小化されてからShowInTaskbarをfalseにする。
33デフォルトの名無しさん:05/01/25 00:53:22
>>32
最小化されたことを検出するには、どうすればいいのでしょうか。
SizeChangedでも一応ひっかかりますが、これは他用途で使用しているので
専用のがあったらいいな。
private void myform_minimized(object sender, e){
this.ShowInTaskbar = false;
}
復帰用
private void myform_*****(object sender, e){

}

お願いします。
34デフォルトの名無しさん:05/01/25 00:56:23
無いので……ってSizeChangedなんてあったのか。
私はもっぱらResizeイベントでやってる。
35デフォルトの名無しさん:05/01/25 01:00:15
プロパティ変更にSizeCHangedがあります。
SizePropertyの値がControlで変更されたときに発生sらしい。

Resizeやってみます。
Resizeである値以下に小さくなるのを監視すればいいんですか?
36デフォルトの名無しさん:05/01/25 01:03:11
>>34
でも、それでは、
通常使用時(sisytemtoryに格納されておらず、Form見えている状態)
では、タスクバーに表示されてしまいます・・・。
37デフォルトの名無しさん:05/01/25 01:09:02
private void notifyIcon1_Click(object sender, EventArgs e)
{
this.WindowState = System.Windows.Forms.FormWindowState.Normal;
}

private void Form1_Resize(object sender, EventArgs e)
{
if (this.Height < 30)
this.ShowInTaskbar = false;
else
this.ShowInTaskbar = true;
}

こんな感じでそれとなくできましたが、
より好ましい形態がありましたら、教えていただけますでしょうか

お願いします。m(_ _)m
38デフォルトの名無しさん:05/01/25 01:09:15
WindowStateがFormWindowState.Minimizedかどうか見ればいい。
で、>36については最小化時に一旦ShowInTaskbarをtrueにしてすぐfalseにするとか。
39デフォルトの名無しさん:05/01/25 01:12:22
>>38
今気づきました。minimizedをみることを。
アドバイスさんくすこー!
一旦、それやてみるよ。
40デフォルトの名無しさん:05/01/25 01:18:56
private void notifyIcon1_Click(object sender, EventArgs e)
{
this.WindowState = System.Windows.Forms.FormWindowState.Normal;
}

private void Form1_Resize(object sender, EventArgs e)
{
this.ShowInTaskbar = true;
this.ShowInTaskbar = false;
// if (this.WindowState == System.Windows.Forms.FormWindowState.Minimized)
// this.ShowInTaskbar = false;
// if (this.WindowState == System.Windows.Forms.FormWindowState.Normal)
// this.ShowInTaskbar = false;
}

なんとも、ばかばかしくて、意味不明。
はぁっ?って感じ。これでうまくいきました〇rz...
41デフォルトの名無しさん:05/01/25 01:19:36
>>38
コメントきぼん抜
42デフォルトの名無しさん:05/01/25 01:28:27
なぜ、
2005のステータスバーに追加したプログレスバーだけ
ForeColorの変更が適用されないのでしょうか。
普通にフォームに貼り付けたプログレスバーは
きちんとForeColorの変更が適用されているのに・・・〇rz...
http://senpuuji-gai.hp.infoseek.co.jp/cgi-bin/img-box/img20050125012723.gif
43デフォルトの名無しさん:05/01/25 01:36:25
フォームに貼り付けるのはProgressBarで、
StatusStripに追加するのはToolStripProgressBar。
別物なので混同しない。

コードで変更した場合はどうなの?
4442:05/01/25 01:40:42
>>43
似て非なるものだけど、まぁ同じようなものだと思う。
画像には、誤ってFormに貼り付けたプログレスバーのプロパティ
だしてしまってるけど、
StatusStripに貼り付けたToolStripProgressBarも
全く同じように、ForeColorをRedに、BackColorをSystem.Desktop
にしています。
45デフォルトの名無しさん:05/01/25 01:43:55
だから、デザイナからじゃなくてコードから色を変更したらどうなの?

ちなみに私の所では問題なく色が変わってる。
VS2005は入れてないからそっちのチェックはできないが。
46デフォルトの名無しさん:05/01/25 12:03:55
あのー
ShowInTaskBarをfalseにすると、
HotKeyって使えないんですか?
falseにしたら使えませんでした。
2005 C#
参考ソース
[DllImport("user32.dll", EntryPoint = "RegisterHotKey", CallingConvention = CallingConvention.Winapi)]
public static extern int RegisterHotKey(IntPtr hwnd, uint HK_ID, uint MOD_KEY, uint KEY);
[DllImport("user32.dll", EntryPoint = "UnregisterHotKey", CallingConvention = CallingConvention.Winapi)]
public static extern int UnregisterHotKey(IntPtr hwnd, uint HK_ID);
47デフォルトの名無しさん:05/01/25 12:10:31
そんなことはないな。
4847:05/01/25 12:25:52
と思ったらちょいと勘違いだった。

ShowInTaskbarを変更するとフォームのウィンドウハンドルが作り直されるのね。
そうするとホットキーを送出するウィンドウ先が不明になって無効になると。

HotkeyをControlとかから継承した独自クラスにすればいい。
WM_HOTKEYを受け取ったらイベントを通知するようにして。

//と言う作業を私は既にやっていたから……。
4946:05/01/25 13:04:39
sampleきぼん抜 (>_<)
5042-44-46:05/01/25 15:12:32
プログレスバーのforecolorうまくいったですたい。
form_load内で、設定したらうまくいったですたい。
でも、どうしてですたい。
それじゃ、プロパティウィンドウでの設定は
なんのためにあるとですたい。
51デフォルトの名無しさん:05/01/25 15:39:27
>>49
ttp://axxe.at.infoseek.co.jp/GlobalHotkey.zip

>>50
ベータテストに参加しているという自覚を持って、きちんとMSに報告するように。
5242-44-46:05/01/25 16:35:36
>>51
49 サンクスコ!!!

50 報告の仕方のサンプルきぼん抜(>_<)
53デフォルトの名無しさん:05/01/25 16:41:51
そろそろこのバカどうにかなりませんかね?
5442-44-46:05/01/25 17:03:05
>>53
まぁそう○rzむなよ。
55デフォルトの名無しさん:05/01/25 18:30:02
とりあえず前スレを使い切りませう
5642:05/01/25 21:15:28
>>55 まだあったのですか?
57デフォルトの名無しさん:05/01/25 22:10:00
>>52
インストールしたディレクトリ(ex. C:\Program Files\Microsoft Visual Studio 8)の
readme.htmを参考に。
58デフォルトの名無しさん:05/01/25 22:12:17
ntpサーバーにアクセスが許可されておらず、
一方、HTTPプロトコル(通常のネット)は許可されている環境において、

NTPサーバーが提供している時刻、あるいはそれに準ずる時刻を
取得する方法はございませんか?
59デフォルトの名無しさん:05/01/25 22:34:22
>>58
某独立行政法人のページに、負荷がでかくなりすぎたからサービス止めたって書いてあった。

というかそんな環境なら、外側と繋がってるPCだけNTPを許可して、そこから時刻を供給するようにするのが普通。
管理者にでも文句を言って下さい。
60デフォルトの名無しさん:05/01/25 22:34:48
61デフォルトの名無しさん:05/01/25 22:52:04
>>60
ソース見ましたが、これってwebrequestで取得できそうなんですか?
どうも無理なような・・・
機械的なアクセスはご遠慮下さい、とは書いてあるがみなかったことにして。
62デフォルトの名無しさん:05/01/26 07:48:58
円周率の計算をしたいのですが、計算途中でCPU
などの温度を取得して、計算を止めた時に書き出す
事はできますか?
63デフォルトの名無しさん:05/01/26 07:52:15
π
64デフォルトの名無しさん:05/01/26 09:00:50
>>62
ttp://www.dotnet247.com/247reference/msgs/42/212165.aspx
統一的なCPU温度の測定手法は無いってさ。
65デフォルトの名無しさん:05/01/26 10:29:03
webrequestを利用して、HPのformとかに書き込みすることは可能ですか?
66デフォルトの名無しさん:05/01/26 10:35:11
ひゅーれっとぱっかーどのふぉーむってなんですか。


直接送信したいってことなら可能。
67デフォルトの名無しさん:05/01/26 11:10:03
>>66
どのように取り組んだらいいのでしょうか。
お願いいたします。
68デフォルトの名無しさん:05/01/26 11:41:17
http://www.google.co.jp/search?q=HttpWebRequest+POST&hl=ja&rls=GGLD,GGLD:2004-30,GGLD:ja&lr=lang_ja&sa=X&oi=lrtip7

いくつも参考サイトが出てくるのだが。情報検索能力ゼロですか。
69デフォルトの名無しさん:05/01/26 12:24:16
継承していくと、どんどんパブリックメソッドが増えて行くのですが、これを隠してしまいたいです
なにか良い方法はありますでしょうか。

public class MyForm1 : System.Windows.Forms.Form
{
 public string MyProperty { ... }
}

public class MyForm2 : (System.Windows.Forms.Form)MyForm1
{
 public string NewMyProperty { ... }
}

として MyForm2 のインスタンスから見えていて欲しいのは System.Windows.Forms.Form のメンバのみ
MyForm1 のプロパティーは全部または一部を protected にしてしまいたい
70デフォルトの名無しさん:05/01/26 12:35:55
無理。
集約を使うなどしてあまり無闇に継承させないというのが最近のOOP。
71デフォルトの名無しさん:05/01/26 12:49:26
>>70
集約でも構わないです、System.Windows.Forms.Form の継承をしたまま
MyForm1を利用できるか調べています。
72デフォルトの名無しさん:05/01/26 12:52:34
単にインテリセンスにでてくんなってことならEditorBrowsableAttibute属性で制御できるが。
プロパティウィンドウの表示はBrowsableAttribute属性で。
7362:05/01/26 13:04:10
>>64
そうですか…
ありがとうございました
74デフォルトの名無しさん:05/01/26 13:06:46
文字コードが誤っているサイトとかありますか!?
75デフォルトの名無しさん:05/01/26 13:08:27
……誤ってるサイトってのは難しいな……。
76デフォルトの名無しさん:05/01/26 13:09:38
>>75
意外と多く存在すると、聞いたのですが‥
どうでしょうか!?
7762:05/01/26 13:11:09
すいません、もうひとつ質問なんですが、
何桁まで円周率を求めることができますか?
時間さえあればほぼ無限と考えていいのでしょうか?
78デフォルトの名無しさん:05/01/26 13:11:23
スレ違い。
てかそれ知ってどうする。
79デフォルトの名無しさん:05/01/26 13:12:15
レポートがありまして‥
8078:05/01/26 13:12:35
ああ、書き込みがあった。
78 は >>76 へのことなので。
81デフォルトの名無しさん:05/01/26 13:15:14
まあ77もスレ違いだわな。
82345:05/01/26 17:25:45
>>77
あまりにも低レベルな質問するな!
3で、いいじゃねーか、3で!!
83デフォルトの名無しさん:05/01/26 17:28:57
「およそ」3、ですよ。
84デフォルトの名無しさん:05/01/26 17:58:20
もまいら、教えてちょんまげ。

RichTextBoxでHideSelectionをfalseにしたときに、
AppendText()やると自動的に最下行までスクロールしてくれる。
だけど、キャレットの位置が末尾以外の時にはスクロールしたくない。
どうすればいい?
85デフォルトの名無しさん:05/01/26 19:28:56
Text += を試してみてくれ。
86デフォルトの名無しさん:05/01/26 21:48:34
.NETで動的プロパティでコンフィグレーションを設定するのに
読み込みはできるのですが、書き込みはできないのでしょうか?

簡単にiniファイルなどの設定を保存する機構を実現するためには
独自のオブジェクトをXMLでシリアライズするしかないのでしょうか?
(レジストリ保存意外の方法の場合)
87デフォルトの名無しさん:05/01/26 22:00:26
88デフォルトの名無しさん:05/01/26 22:33:45
>>86
できるけどやらない方がいいって
MVPの連中が言ってた。
俺も別のファイルに保存したほうがいいと思う
8984:05/01/26 22:46:41
>>85
キャレットが末尾以外の時は、スクロールが動かないようにしてほしいんですよ。

Text += hoge;
ってやり方だと、スクロールが先頭にいってしまいます。

キャレットが末尾以外の時の動作ってのは、HideSelectionがtrueの時の動作がいいのです。

でも、
HideSelection = true;
AppendText("ほげほげ");
HideSelection = false;
ってなやり方でやってもうまくいかないんですよね。
他にやり方ありますかね?
9067:05/01/26 23:47:56
>>68
さんくすこ!!

検索文字列すら思い浮かばなかったんだ・・・
91デフォルトの名無しさん:05/01/27 02:41:18
IME文字列取得('A`)マンドクセ。メッセージとか調べ中。
キャレットも('A`)マンドクセつーかShowCaret読んでも表示されませんヽ(`Д´)ノウワァァン
92デフォルトの名無しさん:05/01/27 09:43:48
>>91
ここにまとめられてる。
本文が下の方になっちゃってるので注意。
http://shinshu.fm/MHz/95.83/archives/0000025041.html
93デフォルトの名無しさん:05/01/27 10:51:35
>>92
ありがとです。みてみます。
何で最初っからFormsにないんだ( ゚Д゚)ゴルァ!!
94デフォルトの名無しさん:05/01/27 12:40:45
[Operation on the form with .Net]

i tried [http://ukamen.hp.infoseek.co.jp/Programming1/HTMLPost/]
then i found the webRes throw exception,
"受信時に予期せぬエラーが発生しました"

WebResponse webRes = webReq.GetResponse();


meanwhile,
an warning occurs at
webReq.Proxy = System.Net.WebProxy.GetDefaultProxy();
it says this expression is an old style.

thereafter,
parameters += HttpUtility.UrlEncode( "111-");
Thereis no System.Httputility.urlenc in .NET2.0

Thank you.
webReq.Proxy = System.Net.WebProxy.GetDefaultProxy();
95デフォルトの名無しさん:05/01/27 13:18:07
>>92
だめですだ。文字コードの樹海にさまよいこみました・・・orz
9695:05/01/27 14:19:58
DllImportと取得した文字をUnicodeにすることで2000では動きました。
Win98とかだとうごかねーんだろうなぁ・・・
97デフォルトの名無しさん:05/01/27 14:48:21
>>96
Win2000 + ATOK17だとそのままで動くな~。
98デフォルトの名無しさん:05/01/27 17:38:46
C# で下記のようなアプリケーション(Windows Forms)を作ろうとしています。

バックグラウンドで動き続けて、数秒単位であるフォルダを監視します。
その時、そのフォルダにファイルが存在した場合、そのファイルを読み込み
適宜処理します。

という感じなのですが、上記のような処理を行なうには、
スレッドにて処理を行なうほうがよいのでしょうか?
(スレッドを勉強する所から入らないといけませんが)

それとも Timer コントロールの Tick イベントで処理する方法でも
問題ないのでしょうか?

いまいち、スレッドというものの概念というか使うべき所が理解できません。

上記、アドバイスを頂けますとうれしいです。
99デフォルトの名無しさん:05/01/27 17:51:08
まあ別スレッドでやった方がいいだろうね。
System.Timers.Timerで定期処理すれば?
100デフォルトの名無しさん:05/01/27 18:38:17
FileWatcher使えばできるぞ。
derige-to,BeginInvoke あたりを押さえておけ。FileWatcherにはUI用のコールバック考慮されてるからそこも見るべし
101デフォルトの名無しさん:05/01/27 19:00:05
FileSystemWatcherですた
102デフォルトの名無しさん:05/01/28 01:03:40
WebRequestでPOSTしようとしてるんですが、
hiddenタイプはどう設定するんですか?エロいひと。
103デフォルトの名無しさん:05/01/28 04:29:51
他の要素と変わらないが?
104デフォルトの名無しさん:05/01/28 04:34:12
コードアクセスセキュリティまわりを手っ取り早く解説してる本無いですかね?
ドキュメント読んでるけど脳が腫れそうだ
105デフォルトの名無しさん:05/01/28 10:37:53
>>104をみてふとおもったんだが(>>104を馬鹿にしてるとかじゃ決してないので!)
何ツーかこの業界、人の作ったルールばかり読まされて自分で考えることしない人にはある意味天国(後で取り返しのつかないことになるんだが)、な世界だな。
そうやって廃人になったひとも多いいんじゃなかろうか。
そこらへんがスーパープログラムーとVB厨の違いなんだろうな。
106デフォルトの名無しさん:05/01/28 14:23:07
>>105
自分で考えてたら、規格統一がままなりませんからね。
向き不向きが強く現れるのでしょうね。
107デフォルトの名無しさん:05/01/28 15:55:44
>>105
104ですが一応自分でも考えてるんですよ
でも馬鹿なんでドキュメント以外の言葉でも書かれている物読んだり
単刀直入な部分から入っていったり他の人がどう考えてるか知りたいんですよ
自分が無能だと分かってるから自分の考えだけで走ると取り返しに付かなくなることの方が多いから
「手っ取り早く解説してる」という表現は間違ってました
入り口の違う解説書がもしあったら紹介して欲しいなということです
108デフォルトの名無しさん:05/01/28 19:51:37
DateTimePicker に日付が表示されていない状態を作りたいのですが、
.Value には 空白を設定できないし、どのようにやればいいのかわかりません。

DateTimePicker に日付が表示されていない状態を作る方法を教えて
いただけないでしょうか?
109デフォルトの名無しさん:05/01/28 19:57:24
DateTimePicker.Format
110デフォルトの名無しさん:05/01/28 21:23:45
2005でWebrequestでPOSTしてるんですが、
'System.Net.WebProxy.GetDefaultProxy()' は古い形式です :
'This method should not be called, please rely on the
proxy selected for you by default.'
C:\Documents and Settings\Administrator\Local Settings
\Application Data\Temporary Projects\ConsoleApplication1\Program.cs
3331

といわれてしまいます。代替メソッドとかございませんか?

参考サイト
http://ukamen.hp.infoseek.co.jp/Programming1/HTMLPost/
111デフォルトの名無しさん:05/01/28 21:26:19
また、Consoleでの出力文字列が
以下のように文字化けしてします。

<HTML><HEAD>
<meta http-equiv="content-type" content="text/html;charset=SHIFT_JIS">
<title>郵便番号 [111-] の検索結果</title>
<style TYPE="text/css">

ともって貼り付けたら、文字化けしてませんでした。
なぜ、僕の2005のコンソール画面だけ
<HTML><HEAD>
<meta http-equiv="content-type" content="text/html;charset=SHIFT_JIS">
<title>□□□□ [111-] □□□□□</title>
<style TYPE="text/css">

になってるんだろう・・・
そもそもこの[111-]ってなんですか?

参考サイト
http://ukamen.hp.infoseek.co.jp/Programming1/HTMLPost/

度々すみません。緊急の宿題なんですが、
かれこれ数時間悩んでいます・・・・丸rz。
112105:05/01/28 21:34:24
>>104
ごめんなさいそういう意味じゃないの・・・一般論です・・・
いやなんかこの業界(いやどこでもそうかもしれないが)技術の進展が早くて、無駄になる知識も多いかと。
この業界廃人になる人が多いのもそういうのが関係してるんじゃないかと。
113デフォルトの名無しさん:05/01/28 21:50:42
>>110
WebRequest.ProxyはデフォルトでIEのプロクシ設定になってる。

2005のコンソールって、.NET Framework SDK コマンドプロンプトだよね?
別に文字化けはしないなー。
114デフォルトの名無しさん:05/01/28 21:56:11
>>113
VC#2005です。

115デフォルトの名無しさん:05/01/28 22:02:50
http://www.occn.zaq.ne.jp/cueay508/test.html
ここのウェブフォームに名前入れて、
送信したいんですが、
http://ukamen.hp.infoseek.co.jp/Programming1/HTMLPost/
で紹介されている文のどこを変えればいいのですか?
今、知りえた情報として、
①.Zip2AddressURL を
http://www.occn.zaq.ne.jp/cueay508/cgi-bin/tools/formdecodeに変える

②.webReq.Proxyをコメントアウト(デフォルトですでに設定されているから)

③.string parameters = "name1=George";
parameters +=
"&.to=saisoku_info@occn.zaq.ne.jp" +
"&.subject=mailsubject"+
"&.thanks=http://www.yahoo.co.jp";

ほかはいぢらずに、F5.

受信時に予期しないエラーが発生しました。

そして、メール(自分の)も受信されてません。
(メールを送れていないだけかもですが)
116デフォルトの名無しさん:05/01/28 22:03:48
リモート サーバーがエラーを返しました: (404) 見つかりません。
117デフォルトの名無しさん:05/01/28 22:04:22
http://support.zaq.ne.jp/homepage/cgi/decode.html
連続投稿で申し訳ございません」。間違えてボタン押してしまいました。;
118デフォルトの名無しさん:05/01/28 22:14:02
Uriの指定が間違ってる。
ttp://www.occn.zaq.ne.jp/cueay508/test.html
でUriクラスのインスタンスAを作って、
もう一つUriインスタンスBをnew Uri(A, [action=に書かれてる文字列])で作ってみ。
119デフォルトの名無しさん:05/01/28 22:15:43
む、先頭のhが自動的に消されてしまった。
120デフォルトの名無しさん:05/01/28 22:24:38
private static void Post()
{
System.IO.Stream stream = null;
System.IO.StreamReader sr = null;
Uri uri1 = new Uri("http://www.occn.zaq.ne.jp/cueay508/test.html");
Uri uri2 = new Uri(uri1, Action<"/cgi-bin/tools/formdecode">);
try
{
System.Net.WebRequest webReq = HttpWebRequest.Create(uri2);
webReq.Method = "post";

うまくいきません(T_T
121デフォルトの名無しさん:05/01/28 22:27:49
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemuriclassctortopic.asp

うー・・・。
[action=...]ってやると、最初の"["でエラーが起こります・・・。;
122デフォルトの名無しさん:05/01/28 22:28:15
……もうちょっとこうなんというか自分の頭で考えるとかこれって文法的におかしくね?とか思わないのか。
Uriクラスのコンストラクタを調べる事すらしないのか。
123デフォルトの名無しさん:05/01/28 22:30:34
コンストラクタの第二引数に要求されてるのは文字列だろ? C#で文字列はどう書くよ。
<form ......>の中で実際にUriを指してるのはどの部分よ。
124デフォルトの名無しさん:05/01/28 22:32:25
Uri uri2 = new Uri(uri1, [action="/cgi-bin/tools/formdecode"]);

これだと、エラーが出るんです・・・
で、ActionっていうクラスのSummaryにAction<>って書いてあったから
<>ってGenerics?とりあえず、書いてみたのが、120でした。
125デフォルトの名無しさん:05/01/28 22:39:43
読み方 : ユーアールアイ
フルスペル : Uniform Resource Identifier

 インターネット上に存在する情報資源の場所を指し示す記述方式。インターネットにおける情報の「住所」にあたる。URIは包括的な概念であり、現在インターネットで広く用いられているURLはURIの機能の一部を具体的に仕様化したものである。

〇rz。。。わからん。。。
126デフォルトの名無しさん:05/01/28 22:45:29
……C#で文字列ってのは" "でくくった中身だよな?
" "の前になんか変な文字がくっついてたりしたら当然エラーだよな?
127デフォルトの名無しさん:05/01/28 22:45:33
Uri uri1 = new Uri("http://www.occn.zaq.ne.jp");
Uri uri2 = new Uri(uri1, "/cueay508/cgi-bin/tools/formdecode");
どうひねっても、うまくいかん・・・
http://www.infoseek.co.jp/OTitles?col=OW&qt=Uri%A4%C8%A4%CF&svx=901908
http://www.kanzaki.com/docs/html/htminfo-uri.html
http://www.infoseek.co.jp/OTitles?col=OW&qt=Uri+action+post+form&svx=901908

〇rz...どこにも書いてないです・・・
128デフォルトの名無しさん:05/01/28 22:48:27
public sealed delegate void Action<T>
なんかデリゲートみたいですね。なんだろう・・
129デフォルトの名無しさん:05/01/28 22:48:42
>>126
はい、そうです。
文字列は、""でくくるか、
文字列を返り値とするメソッドを利用します。
例えば、"mytext"や、String.vbConv(string str,vbConv.Narrow,0x0411);
や、mynumber.ToString()などです。
130デフォルトの名無しさん:05/01/28 22:55:25
現在のUriは"ttp://www.occn.zaq.ne.jp/cueay508/test.html"だよな?
<form>のactionの対象Uriは"/cgi-bin/tools/formdecode"だよな?
131デフォルトの名無しさん:05/01/28 22:56:45
Uri uri1 = new Uri("http://www.occn.zaq.ne.jp/cueay508/test.html");
Uri uri2 = new Uri(uri1, "/cgi-bin/tools/formdecode");

〇rz。。。試行錯誤でなんとか・・・。
132デフォルトの名無しさん:05/01/28 22:58:31
@"c:\system"とかのように@いらないんですか?
133デフォルトの名無しさん:05/01/28 23:00:16
>>130方々
あえて、すぐに答えを教えずに
考えさせよう、という教育的な姿勢を感じました。
おかげで、さまざまなサイトを訪問し、
ちょっと知識もつきました。ありが10.
そして、最後の最後に教えてくれましたね!でも
試行錯誤でなんとか・・
というか、試行錯誤の前に
[action="文字列"]ってそのまま書くっていう意味じゃなかったのね・・・
〇rz。。。
134デフォルトの名無しさん:05/01/28 23:01:47
でも[Marshall Struct]とかのように
たまに[ ]ってみかけたから、例外的にStringなのかと
思ってた。(ぜんぜん意味わかんないけど)

[DllImport **]も、[]だし。
だからといって、[]がStringだとは思わなかったけど、
交錯していました。すみません。そして、ありがとう、みんな。
135デフォルトの名無しさん:05/01/28 23:06:29
質問というより気になってることですが。
.NET2.0のC#をみてたらyieldって命令が増えてますが、
これって内部でスレッド使ってるのかコンパイラが賢いことしてるのか気になります。
public System.Collections.IEnumerator GetEnumerator()
{ foreach (string day in m_Days) yield return day; }
どうなのでしょう?
136デフォルトの名無しさん:05/01/28 23:08:20
最後にひとつ。
parameters += System.Web.HttpUtility.UrlEncode("111-");
parameters += "&new=on";
これなんですか?必要なのでしょうか。
http://ukamen.hp.infoseek.co.jp/Programming1/HTMLPost/index.htm
137sage:05/01/28 23:12:36
スクロールバーの移動で発生する、Viewの再描画を自分で実行する方法はない
でしょうか?
 例えばListViewに新規項目が追加された場合は一番したまでスクロールし
再描画をするという処理を実現したいです。
138デフォルトの名無しさん:05/01/28 23:17:42
>>137
myListView.Item[myListView.Count-1].Select();
myListView.Invalidate();
139デフォルトの名無しさん:05/01/28 23:19:07
>>135
ttp://www.atmarkit.co.jp/fdotnet/special/cs20review02/cs20review02_02.html
このページと次のページがイテレータの内部動作の解説。

>>136
httpに関する知識を増やせ。

>>137
EnsureVisibleメソッドで指定項目を必ず表示できるところまでスクロールさせる事はできる。
140デフォルトの名無しさん:05/01/28 23:19:56
あるディレクトリ内で重複しないファイル名を作成する方法はないでしょうか?

Unix でいう mktemp のような事を行ないたいのですが、方法があれば教えてください。
141デフォルトの名無しさん:05/01/28 23:35:53
CGIにPOSTしようとする香具師が「URLエンコード」を知らないのは何かの間違いですか?
142デフォルトの名無しさん:05/01/28 23:38:50
>>140
任意のディレクトリに、ってなのはクラスライブラリには無いようだね。
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/230tempdir/tempdir.html
これは環境変数で強制的にディレクトリが決められるし。

適当に8文字+"."+3文字のランダムな文字列を作って、既存チェックで存在しないのを返す関数でも作るくらいか。
143デフォルトの名無しさん:05/01/28 23:44:06
>>139
情報ありがとう。コンパイラが賢いことをしてたのですね、安心しました。
スレッドが変わってないのは確認してたのでもしかしたら
あのレア機能のNT Fiberを使ってるのかとあらぬ想像をしてたのです(笑)
144デフォルトの名無しさん:05/01/29 02:39:10
C#って、構造体の初期化で

Point p = { 0, 0 };

これが使えないですよね?

Point p;
p.x = 0;
p.y = 0;

こう書くように解説してる人が多いけど、
やっぱコンストラクタを使いたいので

Point p = new Point( 0, 0 );

こう書くと、スタック上に未初期化のpを作って
コンストラクタで作った{ 0, 0 }なPointを
コピーするみたいですが、激しく無駄が気持ち悪いです。
C++みたく

Point p( 0, 0 );

って書ければいいのにって思います。
お前らは構造体の初期はどうやってますか?
C#のコンパイラが、

Point p = new Point( 0, 0 );

これをきちんと、無駄なコピーをしないように
最適化してくれればいいのに。
145デフォルトの名無しさん:05/01/29 02:49:03
>>144
ここはお前の日記じゃ(ry
146デフォルトの名無しさん:05/01/29 03:29:43
重い処理をスレッドを立てて処理をするようにしたのですが、
join()でスレッドが終わるまで待つようにしたところフォームが応答なし状態になってしまいます。
こんな感じです

Thread ThreadTest = new Thread(new ThreadStart(ThreadTestMethod));
ThreadTest.Start();
ThreadTest.Join();
MessageBox.Show("end");

これでは何のためにスレッドを立てたのか分かりません。
回避方法はありますか?
147デフォルトの名無しさん:05/01/29 03:54:02
>>146
Joinしなきゃいいじゃん。
コールバックメソッド使え。
148デフォルトの名無しさん:05/01/29 05:10:29
>>144
> Point p = new Point( 0, 0 );
ILを見ればわかるけどこれでコピーもポインタの代入も発生してないから安心していい。
固定の領域に対してコンストラクタを呼んでるだけ。値をそれぞれ代入するのと
コンストラクタを呼ぶのにそんなに差はないと思うからどっちでもいいのではないかな。
ついでだけどSystem.Drawing.Pointがnewでないと使えないのはX, Yがプロパティの
せいだろうか。
149デフォルトの名無しさん:05/01/29 14:24:36
>>148
ザンクス

あとは、自作のメソッドで構造体を頻繁に引数にする時は
ref渡しにすればいいのかな。
150デフォルトの名無しさん:05/01/29 15:04:07
ListViewItem へのドラッグアンドドロップについて教えてください。

ListViewに2つのListViewItemを配置します。これを A, B とします。
あるファイルXをドラッグして、A 、B どちらかにドロップさせます。
A、Bどちらにドロップされたかによって、ファイルXへの処理を決定します。

explorerなんかで、ファイルをつかんで、フォルダツリーにもっていくと、
マウスが乗ったフォルダのフォルダ名の色が反転して、
ファイルを離すと、そのフォルダにファイルがコピー or 移動されますよね。
見た目的にはああいうことをやりたいんですが、よくわかりません。
ListView にたいしてのDrag&Dropの通知はわかるんですが、
ListViewItemへの通知の仕方がわかりません。

やりかた、参考になるサイト等あったら是非教えてください。
よろしくお願いします。
151デフォルトの名無しさん:05/01/29 15:11:41
DragEventArgsのX, YからListView.GetItemAtでどれにドロップされたかチェック。
//PointToClientも必要かな?
152デフォルトの名無しさん:05/01/29 15:52:24
>>149
やってみればわかるがstructの参照渡しはできない。
void sub1(ref Point p)はエラーになる。
void sub2(object p)ならできそうに見えるが、実はbox, unboxが発生していて
やっぱりできてない上にもっと効率が悪い。
値渡しで効率が悪いような大きなデータはclassにするべきということだ。
c#のstructはvaluetypeと呼ばれるものでc++のそれとはだいぶ違うということを心得るべし。
153デフォルトの名無しさん:05/01/29 15:59:05
>>152
意味がわからんのだが。

static void sub1(ref Point p) {
   p.X = 123;
}
static void Main() {
   Point p = new Point(12, 12);
   sub1(ref p);
   Console.WriteLine(p.X); // 結果は123
}
普通にできますよ?

まあ大きなデータはクラスにすべきなのは間違いないけど。
154150:05/01/29 15:59:11
>151
ありがとうございます。

DragEventArgs が e として、ListView( listView )のDragDropイベント中で、
ファイルXがドロップされたItemを下記コードで無事取得できました。

Point point = listView.PointToClient( new Point( e.X, e.Y ) );
ListViewItem item = listView.GetItemAt( point.X, point.Y );
if ( item != null )
{
textBoxLog.Text = item.Text;
}

ドラッグ中のListViewItem名の色の反転はまだできてませんが、
ここまでこれればなんとかなりそうです。
DragOver でするのかなぁ?とか思ってます。

サーバサイドなJavaコーダで食ってるんだけど、
VSゲットでなんとなくC#勉強し始めてみた。
Windowsアプリは面白い!と結構感動中。
155デフォルトの名無しさん:05/01/29 16:18:22
>>153
むむ、System.Drawing.Pointだとできますね。もっちと調べてみます。
スレの流れ的にはマニュアルの例題にあるこれを使ってると思う。
struct Point
{
 public int x, y;
 public Point(int x, int y) {
  this.x = x;
  this.y = y;
 }
}
156デフォルトの名無しさん:05/01/29 16:24:44
できるってば。
どのアセンブリのものかによって動作が変わったら困る。
ref/outが参照渡しにならなかったらP/Invokeがめんどくさいし。
157152:05/01/29 16:44:50
>>156
すまそ、できますね。どうでもいいところでポカミスやってました。
152の記事は無効ということでお願いします。
158136:05/01/29 22:34:17
>>139
>>141
HTTPの勉強がしたいです。
ばかな質問をしてすみません。
「とりあえず、ここでも読んどけ、あふぉ!」といったような
サイトをご紹介願えませんでしょうか。
重ねてお願いします。
159デフォルトの名無しさん:05/01/29 23:57:19
>>158
http://www.faqs.org/rfcs/rfc2616.html
後は適当にぐぐ。
160136:05/01/30 02:05:20
>>159
日本語サイトで推奨はないですか?
161デフォルトの名無しさん:05/01/30 03:38:47
質問なんですが、デバッグで立ち上げたときだけ'System.NullReferenceException' を出して
Exe直接起動すると出ないってどういうことなんでしょう?

デバッグで走らせてても位置特定できないし。
ContextMenuが出そうになると固まります。その後'System.NullReferenceException' エラーが出て、その後は別に続けても問題なし・・・・
ワケワカメ
162デフォルトの名無しさん:05/01/30 11:02:41
続けて問題ないってことはどこかでcatch
されてるんだろうから、別にいいんじゃない?

場所の特定は非マネージドコードのデバグをonにすれば可能だと思う。
163デフォルトの名無しさん:05/01/30 13:09:37
Streamの位置を移動する場合、
Positionを直接設定するのとSeekメソッドを使用するのでは
何か速度的な違いがあるのでしょうか?
164デフォルトの名無しさん:05/01/30 13:12:46
気にするようなもんじゃないよ。
165デフォルトの名無しさん:05/01/30 13:57:37
サンクス
166デフォルトの名無しさん:05/01/30 18:29:35
167160:05/01/30 19:22:02
サンクスコ!
それにしても、すごい分量ですね。
僕は ただ、FormのPostで全角な文字列を
僕のメールに送りたいだけなのですが・・。
あぁ、すごい量だ。
168デフォルトの名無しさん:05/01/30 20:17:49
前スレの812です。

ボタンをマウスでクリックした時のイベントつかまえて処理をしています。
この時マウスを連打するとクリック回数分連続でイベントが走ってしまいます。
最初の一回のイベントのみ実施してその後のイベントをキャンセルしたいのですが、
いい方法ありませんか?
マウスポインタを砂時計にしてもだめでした。
それなりに重たい処理を行うので連打を許したくないのです。

クリックイベントの中でボタンのEnabledをfalseにすればいいと思っていましたが、
それではうまくいきません。
.netではイベントの開始から終了までの間にクリックしても前回のイベントが終了しないと
次のイベントが発生しないようなので。

Windowsのメッセージを捕まえて何とかしないとだめなんですかね。WndProcとかで。
169デフォルトの名無しさん:05/01/30 20:20:06
>>167
Form云々はHTTPでメール云々はSMTPだが、大丈夫か?
170デフォルトの名無しさん:05/01/30 20:21:55
>>168
フラグ持てば?
171168:05/01/30 20:25:06
>>170
ボタンのクリックイベントの中でフラグ持っても結局
イベントの最初でフラグをチェックしてONなら抜けてOFFならONにするって
やり方はVB6.0とかではできましたが、.netでは無理でした。
172デフォルトの名無しさん:05/01/30 20:28:39
それなりに重い処理なら別スレッドでやればいいじゃん。
UIスレッドはワーカスレッド起動するだけですぐ解放されるわけだから、ボタンをEnabled=falseにすればいい。
ワーカスレッドが終了時にInvokeでボタンのEnabled=trueを実行する。
173168:05/01/30 20:35:22
>>172
なるほど。試してみます。どもです。
174160:05/01/30 22:16:31
>>169
プロバイダから提供されているPostにおいて、
投稿内容送信先に僕のEメールを設定するだけです。
だいじょうぶです。なんとか理解しています。
ただ
HttpUtility.UrlEncode
がよくわかりません。
StreamWirteとか、Streamreaderとかで
Encoding.getEncodeing("shift\jis")とか("EU_**")とか
適宜設定してやれば、文字化けが回避できることは
わかたんですが、
175デフォルトの名無しさん:05/01/30 22:21:24
>>174
http に関する知識を増やしてくれ
なんでそこで躓くのかよく分からん
176デフォルトの名無しさん:05/01/30 22:23:34
安心しろ、君は何も分かってない。
つかちょっとは自分で調べろ。
UrlEncodeでぐぐっただけでもトップ20以内に有用な情報が見つかったっての。
177160:05/01/30 23:32:28
ちょっとわかりました。
ようは円コードすると、
スペースが+になったり、
漢字が2バイト(16*4)になったりするんですね。
で、フォームのテキストボックスに
「渡辺」とではなく「%4b%80」なんて入れたら、
当然、そのまま「%4b%80」と解釈されるわけだから、
渡辺っていう漢字は消えてしまうのね。
で、URLEncodeは、URLに対してのみ利用されるものなのね。
当然、そのEncoding.GetEncoding()も、
サイトによって異なるけど、少なくともFormのActionを使って
送信する分には、エンコードする必要はないのね!!
178デフォルトの名無しさん:05/01/31 02:16:39
>>160
http://www.amazon.co.jp/exec/obidos/ASIN/4798108200

おまえは本をもっと読んだ方がいい
179デフォルトの名無しさん:05/01/31 10:22:04
>>160
せめてとほほのWWW入門ぐらいは(ry
180160:05/01/31 10:46:12
本買うお金ないので、>>179さんありがとう。
>>178さん申し訳ない。
181デフォルトの名無しさん:05/01/31 18:55:27
Windows.Forms で GroupBox の中に GropBox を入れて、両 GroupBox の
FlatStyle を System に変更し、XP スタイルで表示させると、
内側の GroupBox の Text のフォントが指定した値より大きく表示
されてしまいます。

この現象を御存知の方、回避する方法を御存知の方がいらっしゃいましたら
方法を教えて頂けないでしょうか?
182デフォルトの名無しさん:05/01/31 19:10:25
183デフォルトの名無しさん:05/01/31 19:40:40
ありがとうございます。
Resolved as Fixed by Microsoft on 2004-12-10 at 02:53:10
となっているので次期では解決するんでしょうね。

教えて頂いた先に解決させるコードがあったので頂きました。
助かりました。どうもありがとうございました。
184160:05/01/31 22:36:19
>>179
前から思ってたんだけど、その最後の)ryってなに?
185デフォルトの名無しさん:05/02/01 01:50:08
>>184
お前はまず自分で考え自分で調べると言う事を
身に付けたほうがいい
186デフォルトの名無しさん:05/02/01 03:51:02
187160:05/02/01 12:17:52
>>185
僕もそう思った。
ryってぐぐったら、すぐに出てきたよ。
どうしていつも僕って(ry
188デフォルトの名無しさん:05/02/01 14:11:57
初歩的な質問ですいません。
TreeNodeをコピーしたいのですが、
TreeNode ClonedNode = (TreeNode) treeView.SelectedNode.Clone();
とすると
'System.MissingMethodException' のハンドルされていない例外が mscorlib.dll で発生しました。
追加情報 : このプロジェクトで、引数なしコンストラクタは定義されていません。
と例外が発生して、うまくいきません。
どのようにすればいいのでしょうか?
189デフォルトの名無しさん:05/02/01 15:32:47
VC++で作成したDLLをC#で呼び出したいのですが
引数に指定した構造体内の値(配列やポインタ)がうまく
ひきつげません。
どうしたらよいのでしょうか?過去にも同様の質問やサン
プルコードがあればどのあたりを参考にすればよいか教えて
下さい。
190160:05/02/01 16:26:14
>>189
検索能力0か?(ry
191デフォルトの名無しさん:05/02/01 17:59:21
>>188
Clone は出来ないってことです。新しく作ってアレコレ設定しましょう。
192デフォルトの名無しさん:05/02/01 20:35:28
>>190
お前に言われたくねーよ。
193160:05/02/01 22:55:38
>>192
○rz...(ry
194デフォルトの名無しさん:05/02/01 23:27:31

  >>160 VS >>189
195デフォルトの名無しさん:05/02/02 00:34:51
ワラ
196デフォルトの名無しさん:05/02/02 00:35:10
>>192
逆ギレ?池沼?
MSDN 読めば実例付きで載ってるだろ。
Web で検索するまでも無い。

Windows Media Format SDK 最新版も Managed コードとの
相互運用サンプル付いてるし。
197デフォルトの名無しさん:05/02/02 01:57:14
池沼ってなんですか
198デフォルトの名無しさん:05/02/02 03:00:23
イヨウ池沼君、元気か?
199160:05/02/02 09:01:49
おまえら、少し落ち着けよ。(ry
200デフォルトの名無しさん:05/02/02 09:39:21
VisualC#を使用しているのですが、
「コードの表示」と「デザイナの表示」を切り換えるタブがいつの間にか表示されなくなってしまいました。
再表示させる方法を教えてください。
201デフォルトの名無しさん:05/02/02 09:42:01
>>197
知障
202デフォルトの名無しさん:05/02/02 10:27:53
ごめんなさい。みつからなかったので質問させてください。
TextBoxでコピーや貼り付けなどを行わせないようにし、
通常の入力は行えるようにしたいのですが
どのようにすればいいでしょうか。
203160:05/02/02 10:41:03
>>200
Cntl+F7

>>202
DrawStringメソッド
204デフォルトの名無しさん:05/02/02 10:52:50
質問1
C#.NETじゃWin32APIは使えんのかね?

質問2
WebFormでフレーム組む方法はわかる。で、
2ちゃんねるの左の窓で「プログラマー」をクリックすると
右の窓が他のURLへ飛ぶだろ
これどうやるの?

205デフォルトの名無しさん:05/02/02 11:02:58
>>203,160さん
DrawStringは描画のメソッドだとおもうのですが。
通常の入力はさせたいのです。
206デフォルトの名無しさん:05/02/02 11:09:11
>>204
1)できる。DllImportAttribute属性を調べてみな。
2)name属性とtarget属性で指定するものだが。

>>205
コンテキストメニューを空のContextMenuにして、
Ctrl+VとShift+Insを殺せば良いんでない?
……WindowsFormsの話だよな?
207デフォルトの名無しさん:05/02/02 11:27:59
>>206さん

ふむふむ。ありがとうございました。WindowsFormsです。
208デフォルトの名無しさん:05/02/02 12:15:42
189です。
195さん、丁寧にありがとうございました。
質問の意図はマーシャリングすればなんとか取得出来ると
思ったのですが、うまく行かなかったので同様の議論が
あればさくっとルーティングしていただけたらと思ったので。
C#初めてでどうにもやっていることの方向性が合っている
かもわからずだったので質問してしまいました。
自力でやってみます、ありがとうございました。
ちなみに192は自分ではありません。でも探索能力0は当
たっていますね(汗)。
209デフォルトの名無しさん:05/02/02 17:09:23
210デフォルトの名無しさん:05/02/02 17:21:49
プロパティとpublicフィールドの違いをおせーて下さい。
211デフォルトの名無しさん:05/02/02 17:45:21
>>210 こ~いうのとか

class Class1 {
    public Test PublicField = new Test();
    public Test Property { get { return PublicField; } set { PublicField = value; } }

    [STAThread]
    static void Main(string[] args) {
        Class1  class1  = new Class1();
        class1.Property.Data    = 1;
        class1.PublicField.Data = 1;
    }
}
struct Test {
    public int  Data;
}
212デフォルトの名無しさん:05/02/02 18:34:39
>>211
それだと違いがわからないと思うが。
典型的には get しかない property なんかは、public field じゃ実現できない。
213デフォルトの名無しさん:05/02/02 18:58:37
>>210
プロパティだと例えば public string Value { get; set; } とかで
setする時に決まった入力文字列以外はthrowするとかの処理が挟めるし、
getするときも適当に整形して返せたりします。
214デフォルトの名無しさん:05/02/02 19:02:58
>>210
一言でいえば全然違うとしかいいようがない。
アクセスするときのシンタックスが似てるだけで。
全然違うものだから
>>211 とか
リフレクション時動作の違いとか
あげればきりがないだけの違いが出てくるし。

その質問は「メソッドとフィールドってどう違うんですか」っていうのと
同じぐらい変な質問に思える。

ただ、publicフィールドを使わないほうがいいと思う。
215211:05/02/02 19:09:08
>>212
すまぬ
public field と、変数のエイリアスとしての public property の違いを聞いているのかと思ったよ
昨日、後輩から普通に聞かれたもんで

っていうか、property って、内部的には set_ or get_ メソッドを作っているんだよなぁ
メソッドと変数の違いに近いかもしれない
216デフォルトの名無しさん:05/02/02 19:26:29
>>212
readonly...
217デフォルトの名無しさん:05/02/02 19:32:04
>>216
いや、それでも実現できないやん
公開するプロパティは弄らせないが、自分だけは弄りたい場合とか
218デフォルトの名無しさん:05/02/02 22:57:53
RichTextBoxで行の終端の座標を取得する方法はないでしょうか?
EOFとかCRLF等を描画しようと思いますが、どうにも行の終端の位置座標が
取れないため苦戦しています。
219デフォルトの名無しさん:05/02/02 23:09:40
.NETだとフィールド公開するより
プロパティのほうが速度が速いみたいですね!!
220210:05/02/02 23:14:24
みなさんどもども。

>>214
publicフィールドなんて使いません。

>>215
内部的にgetter、setter作ってるならますます違いが分からない…orz

ま、便利なメソッド=プロパティってことにしときます。

ありがとう。
221デフォルトの名無しさん:05/02/02 23:20:33
>>220
俺は public readonly のフィールドは頻繁に使うけどな
状態変化するオブジェクトは余り作りたくない性分なんで

(けどそうするとプロパティにして内部へのアクセスを >>211 みたいに禁じたほうが確実か?)


プロパティはコンポーネント指向で出てきた概念
ほら、フォームデザイナで編集するときに色々と便利やん
222210:05/02/02 23:28:20
>>221
漏れはもともとJavaやってたんでgetter、setterをしこしこ書く派。

プロパティはコードが見にくくなるんで使いたくないなぁ。
ま、アクセサ書いても一緒なんだけどね…。
223デフォルトの名無しさん:05/02/02 23:36:55
フィールドとプロパティの違い

public struct Square
{
  public double Width = 0;

  public int Area
  {
    set
    {
      Width = System.Math.Sqrt( value );
    }
    get
    {
      return Width * Width;
    }
  }
}

Widthがpublicフィールド、Areaがプロパティ。

Square square;
square.Width = 2.0;
Console.WriteLine( square.Area.ToString() );
square.Area = 9.0;
Console.WriteLine( square.Width.ToString() );

実行結果
4.0
3.0
224デフォルトの名無しさん:05/02/02 23:37:56
>>223のAreaの型を間違えた。
×public int Area
○public double Area
225210:05/02/02 23:38:15
手元の本に、アクセサ使うより、プロパティ使った方が便利みたいなこと書いてあった。

たしかに、

obj.setFoo(obj.getFoo() + bar)

より

obj.Foo += bar

の方が便利だ。
226デフォルトの名無しさん:05/02/02 23:43:44
>>222
俺ももともとJavaやってたけど、プロパティアクセサを
言語機能でサポートしてるのはJavaよりC#が明らかに優れている点だ。
もともとpublicフィールドなんて使わんし。
読み出しと書き込みのシンタクスや型を自動的に統一してくれるから
本来は不要なコーディングの手間が大幅に削減される。

227デフォルトの名無しさん:05/02/02 23:47:40
俺はpublicフィールドはconst付きのものだけ扱ってる。
余談だが、MSDNではconst付きpublicフィールドも
パブリックプロパティとしてメンバリストに載ってるな。
228デフォルトの名無しさん:05/02/02 23:49:25
229デフォルトの名無しさん:05/02/02 23:50:17
>>227
そりゃconstならフィールドでもプロパティでも同じだからな。
タイプセーフなマクロ扱いだし。
230デフォルトの名無しさん:05/02/03 00:31:42
C#でグローバルIP取得する方法ってある?
231160:05/02/03 00:42:52
>>230
iphlp.dll
string[] str = myiphlp.GetGlobalAddress()
232デフォルトの名無しさん:05/02/03 01:52:22
publicな書き換え可能なフィールドは絶対に作るな。メンテする人のことも考えてくれ。
せめて、propertyだったら互換性を維持したまま手を加える余地があるのに……
233デフォルトの名無しさん:05/02/03 02:08:24
ListViewで複数アイテムのドラッグはどうすればできるんでしょう?

MouseDownからやると、1クリックの後に矩形の範囲選択が出てきてしまうんですが、
これを回避する方法って何かないでしょうか?
234デフォルトの名無しさん:05/02/03 02:15:36
>>232
そのフィールド自体を、同じ名前のプロパティに書き換えればいいじゃんw

フィールドにできてプロパティにできない事って
unsafeコンテクスト内での&によるアドレス取得くらいのもんだろ
235デフォルトの名無しさん:05/02/03 10:08:10
>>229
public constはできるだけ使わないで。
ILをみるとわかるがconstの場合コンパイル動作が埋め込みになるので
アセンブリのバージョンリダイレクトで不整合が発生したり問題あり。

>>234
静的にアクセスしているのだと問題ない場合も多いのだけども、
リフレクション時の動作も違う。例えばDataBinding系の処理で
publicフィールドとpublicプロパティはまったく違う動作をする。
簡単な実験は、ListBoxのDataMemberにpublicフィールドと
publicプロパティを指定してみればわかる。

結局のところコンポーネントの基本要素が
プロパティとイベントのみとして設計されているので、
どっちにしろpublicフィールドは作るべきでない。
getter/setterメソッドも同じ理由でだめ。
236232:05/02/03 11:18:09
>>234
取り合えずそのDLLを参照しているアセンブリ全てリビルドが必要になる。
refやoutの引数として直接渡されてたりする。
リフレクションをくらって挙動が変わったりする。

publicなフィールドを宣言してる時点で他にもいろいろとまずいことやってる。
237160:05/02/03 13:19:36
やはり、ここで質問するからには、
先行してどのサイトをCHKしたか示すべきなのでしょうか。

例えば、
「~がわかりません。
CHK済みサイト:httq://www.yahoo.ne.jp/
とか」
238デフォルトの名無しさん:05/02/03 13:24:53
httqプロトコルにひどく興味を引かれるな。
239デフォルトの名無しさん:05/02/03 13:33:22
>>237
CHKなんていう意味不明な略語(?)を使うのはやめましょう。
質問は平易な日本語(+正しい技術用語)で具体的に。

姉妹スレの↓もよろしく。

ふらっとC♯(Part5)
http://pc5.2ch.net/test/read.cgi/tech/1065196964/
>このスレッドは
>
>「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
>
>ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
>
>少しずつC#プログラマを名乗るものが現れました。みなさん一緒に勉強しましょう。
240デフォルトの名無しさん:05/02/03 15:31:36
httq
CHK

w
241デフォルトの名無しさん:05/02/03 17:10:21
CHK=中国香港韓国統合漢字コード
242160:05/02/03 17:55:12
やべ、今までhttqって覚えてた・・・○rz...サンクスコ
243160:05/02/03 17:55:51
>>241
そうそう、それだよ、それ。ないすFLW
244デフォルトの名無しさん:05/02/03 18:11:20
そろそろカエレ
245デフォルトの名無しさん:05/02/03 18:49:50
gif画像を任意の解像度で印刷するソフトを開発しています。
http://www.infoseek.co.jp/OTitles?col=OW&qt=printdialog&svx=901908
ここはだいたい見ました。

RPCサーバに関するエラーが出て、印刷できません。
印刷環境は以下の通り。

Aパソコン(僕のPC)

Bパソコン(隣の先輩のPC)
|(usb)
Brotherのレーザプリンタ。
246デフォルトの名無しさん:05/02/03 19:18:00
それだけじゃ答えようがないな。
エラーメッセージでぐぐってみたらどうだ。
247デフォルトの名無しさん:05/02/03 19:41:42
#include <stdio.h>

main(){
printf("Hello!");
rewind(stdin); //追加行:標準入力を初期化する
       getchar(); //追加行:1文字入力を待つ
       return0;
}

実行すると
エラー E2206 sample2.c 6: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 6: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 6: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 6: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 6: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 6: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 6: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 7: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 7: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 7: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 7: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 7: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 7: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 7: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2451 sample2.c 7: 未定義のシンボル return0(関数 main )
警告 W8070 sample2.c 8: 関数は値を返すべき(関数 main )
*** 15 errors in Compile ***

と表示されてしまい、実行できません、ずーっとやり直していますが
何処がどう違うか解らないんです、ご教授お願い致します。
>>257
すれ違い。これ以上は他所で聞け。
249デフォルトの名無しさん:05/02/03 19:49:42
#include <stdio.h>

main(){
printf("Hello!");
rewind(stdin); //追加行:標準入力を初期化する
□□□□□getchar(); //追加行:1文字入力を待つ
       return0;
}
250デフォルトの名無しさん:05/02/03 19:52:00
ありがとうございました。
251160:05/02/03 22:16:57
>>249
何が違うのですか?
252デフォルトの名無しさん:05/02/03 22:23:40
http://dobon.net/vb/dotnet/graphics/printdialog.html
上記ページにおいて掲載されているC#ソースを実行。

//OKがクリックされた時は印刷する
pd.Print();
上記ステイトメントでエラー発生。
エラー内容は以下の通り。
RPCサーバーを利用できません。
253デフォルトの名無しさん:05/02/03 22:26:10
254デフォルトの名無しさん:05/02/03 22:30:54
>231
iphlp.dllとは?MSのサイト(米)で検索しても出てこなかったんですが・・・
ぐぐったらWinsockの一部みたいな感じだとわかったんですが。
Interopなしではできないんでしょうか?
255デフォルトの名無しさん:05/02/03 22:31:55
256デフォルトの名無しさん:05/02/03 22:33:41
>>254
グローバルIPを取得する統一的な手法は、外部(確認くんとか)に問い合わせるしかないよ。
257デフォルトの名無しさん:05/02/03 22:47:31
>>254
100% Pure .Netでやるには、これしか方法はない。

IPHostEntry entry = Dns.GetHostByName( Dns.GetHostName() );
foreach( IPAddress address in entry.AddressList )
{
  byte[] addr = address.GetAddressBytes();
  if ( addrがプライベートIPじゃない )
  {
    return address;
  }
}
258245:05/02/03 22:52:32
>>255
GJ!
259デフォルトの名無しさん:05/02/03 22:55:04
[DllImport("iphlpapi.dll", ExactSpelling=true)]
>>254
間違えた。
260160:05/02/03 23:11:15
261デフォルトの名無しさん:05/02/03 23:22:35
>>255さん
ご紹介いただいたリンクを確認いたしましたが、
該当するソースあるいはTIPが見当たりません
やはり、GetPrinter PRINTER_INFO_5 PRINTER_ATTRIBUTE_NETWORK PRINTER_ATTRIBUTE_LOCAL
を使わなくてはならないのでしょうか。
http://216.239.57.104/search?q=cache:R47ncsjOPlYJ:vbvbvb.com/jp/gtips/0351/gGetPrinterAttributesNetworkLocal.html+C%23+%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%97%E3%83%AA%E3%83%B3%E3%82%BF&hl=ja&lr=lang_ja

「おまえ、あほか?こことここを読めば、わかるだろ!」
みたいなサイトあれば、あとは自分でやります。
重ねてお願いいたしまq。
262デフォルトの名無しさん:05/02/03 23:31:45
というか、
スタート→設定→プリンタ
に登録されているプリンタを取得する
public CPrinter[] GetResisterdPrinter()
printer.GetResisteredPrinter().Names[0].ToString()
のようなものがてっきりあるのかと思っていました(気体していました)
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=9568&forum=7
こちらの例を呼んでちんぷんかんぷんな人はあきらめたほうがいいでしょうか。
263デフォルトの名無しさん:05/02/04 00:16:03
プライベートIPをググった結果
Class A ×1   10.0.0.0~10.255.255.255
Class B ×16  172.16.0.0~172.31.255.255
Class C ×256 192.168.0.0~192.168.255.255
が出てきたので、>>257をもとにできました。
264デフォルトの名無しさん:05/02/04 00:56:07
MFCでつくれたような
カスタムセーブファイルダイアログを作成にするにはどうすればよいでしょうか。
OpenFileDialog/SaveFileDialogを継承して作るのは無理そう。
265デフォルトの名無しさん:05/02/04 01:21:44
.NETじゃかなり目に無理ぽ。
266デフォルトの名無しさん:05/02/04 01:24:17
ですよねぇ
267デフォルトの名無しさん:05/02/04 03:37:25
C++で作ったスタティックライブラリをC#で使えると思う?
268デフォルトの名無しさん:05/02/04 09:32:28
そのためのMC++,C++/CLIだろうが
269200:05/02/04 13:27:40
Ctrl+F7押しましたが表示されません。
Cntl = Ctrl ですよね?
270160:05/02/04 17:59:56
>>269
F7おすと、コードがあらわれて
Cntoオスと、デザイナが現れて、
デザイナの詳細なバーチャルクラスは、
ソルートンウィンドウから、適宜探す。以上 がんがーら。
271デフォルトの名無しさん:05/02/05 00:45:47
C#.NETでFrameWorkがインストールされてなくても動作するようにできないんかね?
272デフォルトの名無しさん:05/02/05 01:07:15
>>271
できないよ。
利用者には、再頒布版を印すコしてもらえるようにお願いしてね。
273デフォルトの名無しさん:05/02/05 01:24:12
AppSettingsReader って EXE ファイルからしか利用できないの
でしょうか?

DLL から .config を読み込ませようとしているのですが、
キーが見つからない、といってどうしても読み込んでくれません。

同じコード、同じ内容の .config で Exe ファイルから読み込めましたので
DLL の場合だと駄目なのかな、とおもいまして。

もし DLL では駄目な場合、DLL で外部の設定ファイルの扱いは
自分で XML を読み込むなり、独自に実装するしかないでしょうか?

アドバイスよろしくお願いします。
274デフォルトの名無しさん:05/02/05 03:31:07
>>265,266
ファイル保存のダイアログで、保存するファイルの種類変えると、ファイル名にくっついてる拡張子
がその場で変更されるのって、ごく当たり前の処理だと思うんだけど、.NETのダイアログだとこれが
できなくない?
275デフォルトの名無しさん:05/02/05 03:44:12
Terrarium でC#勉強しようと思うけど、
今でもできる?
276デフォルトの名無しさん:05/02/05 17:53:08
>>274
それはできるよん。
277デフォルトの名無しさん:05/02/05 21:23:11
printerDialog()等の
プリントに関して入門者向けのサイトご紹介賜りたく存じます。
microfostのサイトはすでにCHKしました。
278デフォルトの名無しさん:05/02/05 21:35:00
またCHKか。
279274:05/02/05 23:12:14
>>276
えーっ、どうやって?
280デフォルトの名無しさん:05/02/05 23:36:01
>>278
ばれたか・・・〇rz..=3
281デフォルトの名無しさん:05/02/05 23:39:56
TabPageを継承したクラス(MyTabPage)を作ったんですが、
タブコントロールのプロパティ tabControl.SelectedTab は、
TabPage型しか返してくれず、
継承したクラスで追加した機能が使えず困ってます。
ヘタレな質問ですが、何かアドバイスをください。
282デフォルトの名無しさん:05/02/05 23:43:50
イベントハンドラのメソッドの仮引数は大体(object sender, EventArgs e)だよね。
senderはToString以下5つぐらいしかメソッド・プロパティを扱えないから役に立たない?
それじゃイベントハンドラの共有もできないじゃないか。
このsenderはMenuItemだったりFormだったりForm1だったりTabPageだったりするんだから……
283デフォルトの名無しさん:05/02/05 23:49:17
キャストすればいい。

void OnMenuItemClick( object sender, EventArgs e ) {
  MenuItem mi = (MenuItem)sender;

  // 以下略

}
284281:05/02/05 23:50:16
>イベントハンドラの共有もできない
た、たしかに。。
senderをどうにか使えばいいのですね。
だほぁぁー。。VB6房の俺にはオブジェクト指向はムズすぎる・・。 
285281:05/02/05 23:50:55
>>283
うおー。
ありがとうゴザイマシタ。
これは色んなところで使いそうです。
286281:05/02/06 00:01:09
あー。やっぱダメだぁ・・。
キャストする部分で例外がでてしまう・・。
もっと基礎的な部分から出直してきます。
すみませんでした。
287デフォルトの名無しさん:05/02/06 00:06:52
C# で、ネットワーク上で稼働している SQL Server を探す方法があれば
その方法を教えてください。
288デフォルトの名無しさん:05/02/06 00:51:55
アプリケーションを起動すると同時に立ち上げ、外部からメッセージを受け取る
ようなスレッドではwhileループを使わないほうがいいのでしょうか?
すぐにCPUが100%になり困り果てています。
289デフォルトの名無しさん:05/02/06 00:58:33
Thread.Sleep(10)でもはさんどけば?
290デフォルトの名無しさん:05/02/06 01:09:12
いやそれでも、負荷かけると100%まで速攻であがるし描画が止まってしまったし
応答無しになるのでコーディング悪いと思うのですがどうなんでしょうか?
291デフォルトの名無しさん:05/02/06 01:12:23
初心者の質問で申し訳ありません。
C#で作ったプログラムをVectorなどで配布する場合は、.net frameworkも添付すべきなのでしょうか?
なんせ重いモノなので・・・使うDLLだけで良いのでしょうか?

あと、C#のプログラムをLinux上で動かすmonoというソフトを聴いたのですが、
実際、どのようなくらい互換性があるのでしょうか?

先輩方、どうかご教授宜しくお願い致します。
292デフォルトの名無しさん:05/02/06 01:23:02
ソースコードのタブが、フォルダ別にソースを分けると、その階層パスまでついてタブ名が読みにくくなるんですが、
この設定って変える方法ありますか?
293デフォルトの名無しさん:05/02/06 01:28:22
>>290
まあその辺はバランス感覚。
ポーリング作業そのものにどれくらいかかるのか、ポーリング以外の負荷はどんなモノなのか。
どれくらいの分解能でポーリングしなければならないのか。
そもそもポーリング以外で解決できないのか。
ポーリングするなら結局ループは必須なんだし。

>>291
.NET Frameworkのインストールは必須なので、再頒布ファイルへのリンクを張っておくのが基本か。
ノータッチデプロイメントで.NETが入ってるかのチェックをしてもらって、
入ってなかったら.NET Framework付きインストーラをダウンロードして貰うとか。

Monoは.NET Framework互換のフリーなCLI実行環境であって、必ずしもLinux上って訳ではないよ。Windows版の環境もある。
まあ最新の情報は公式読め、というところだが
ttp://www.mono-project.com/about/index.html
1.0直前時点での互換性はここが割とまとまってるっぽい。
ttp://www.itmedia.co.jp/enterprise/articles/0406/24/news087.html
294デフォルトの名無しさん:05/02/06 01:52:52
281のはtabControl.SelectedTabの帰り値の問題であって
senderやキャストでどうにかなることかな?
結論から言うと、”無理”でFA
295デフォルトの名無しさん:05/02/06 01:56:58
SelectedTabがTabPageを継承したクラスTabPage1のインスタンスなら、TabPage1へのキャストは当然成功する。
……ひょっとして例をそのまま受け取った勘違い?
実はTabControl辺りのsenderをTabPage1にキャストしちゃった?
senderはあくまで見た目の型と実際の型は違う場合があるって例だったんだが……。
296デフォルトの名無しさん:05/02/06 02:48:05
>>290
まさかとは思うが、メッセージのあるなしに関わらず
ループが動いてたりしないよな?

while( true )
{
  if ( メッセージがある )
  {
    メッセージを処理;
  }
}

こんなループだったら、利用率が100%になるのはアタリマエ
297デフォルトの名無しさん:05/02/06 02:54:06
Thread.Sleepにわけのわからない数字を入れるより、
Monitor.WaitとMonitor.Pulseを使ってメッセージ処理を同期させろ。
298デフォルトの名無しさん:05/02/06 06:41:46
>>286
senderがFormになっているとかいうオチは?
そうならFormのControlsから該当のコントロール引っ張り出すとか
色々方法はありそう。
ちなみに
if (sender is MenuItem) { MenuItem mi = (MenuItem) sender; }
とか
MenuItem mi = sender as MenuItem;
とかやっておけば例外出さずに済むかも。
ただし後者はsenderがMenuItemクラス(あるいはその派生)じゃなければ
nullが返るからチェックの手間が増えることがあることも注意。
299デフォルトの名無しさん:05/02/06 09:48:12
キャストよりasのが高速なんじゃねーの?
300デフォルトの名無しさん:05/02/06 09:55:16
必ずキャストできる事が分かってるなら変わらない。
キャストの正否を確かめるのはasが一番早い。
301デフォルトの名無しさん:05/02/06 10:35:20
あるプログラムへのドラッグドロップと同等の処理を行うことって出来ますか?

例えばBSPlayerというソフトの再生リストを作ろうと思ったとき、このソフトはExe本体へのファイルドロップだと
再生に適応してくれないんですが、ウィンドウへのドロップだと再生してくれます。
GetProcessesByNameとか使ってみてるんですが、ウィンドウが前面に出るだけで再生が始まりません。
何か方法はないでしょうか。
302デフォルトの名無しさん:05/02/06 10:52:04
簡単なファイル転送ソフトを作ってみたいのですが、UDPで送る場合、勿論ポートを空ける必要がありますよね?
ネットワークゲームなどをやる場合やMessengerなどもポートを空けないでファイルを送受信している訳ですが、
ポートを空けないでファイルのやりとりをする方法はあるのでしょうか?
もしくは、C#上からポートを空けることは可能でしょうか?
303デフォルトの名無しさん:05/02/06 10:53:27
殺す
http://tmp4.2ch.net/test/read.cgi/download/1107615976/

犯罪予告キターーーーーーーー(・∀・)ーーーーーーーーー!!
304デフォルトの名無しさん:05/02/06 11:23:47
DrawStringで質問です。
ある文字列をある矩形に描いたとき、そのうちの一部の文字を色を変えて描画する際の位置はどのようにしたらいいんでしょうか?
いま下のようにして試してみたのdせうが、2ピクセルほど右に色つき文字がずれてしまいます。
FormatFlagあたりがくさいんでしょうか?
Graphics g = Graphics.FromImage(m_buffer);
g.FillRectangle(whBrsh, ClientRectangle);
SizeF size = g.MeasureString(sb.ToString(), font, 500);
Rectangle rect = new Rectangle(0, 0, (int)size.Width, (int)size.Height);
StringFormat format = new StringFormat();
//draw string
g.DrawRectangle(pen, rect);
g.DrawString(sb.ToString(), font, brbrsh, rect, format);

CharacterRange[] crArray = new CharacterRange[1];
for (int i = 0; i < sb.ToString().Length; i++)
{
crArray[0] = new CharacterRange(i, 1);
format.SetMeasurableCharacterRanges(crArray);
Region[] rgns = g.MeasureCharacterRanges(sb.ToString(), font, rect, format);
Rectangle crect = RectFToRect(rgns[0].GetBounds(g));
g.DrawRectangle(redpen, crect);
}
for (int i = 0; i < sb.ToString().Length; i++)
{
crArray[0] = new CharacterRange(i, 1);
format.SetMeasurableCharacterRanges(crArray);
Region[] rgns = g.MeasureCharacterRanges(sb.ToString(), font, rect, format);
Rectangle crect = RectFToRect(rgns[0].GetBounds(g));
g.DrawString(sb.ToString().Substring(i, 1), font, brushes[i % 3], crect, format);
}
305デフォルトの名無しさん:05/02/06 12:11:41
Visual Studio.NET 2003 のソリューションエクスプローラから、
追加-新しい項目の追加-Windowsフォームとして、新しいフォームを
追加しようとすると、

'C:\Program Files\Microsoft Visual Studio.NET 2003\VC#\CSharpProjectItems\LocalProjectItems\..\CSharpAddWinFormWiz.vsz'ウィザードを実行できません。

と表示され追加できなくなってしまいました。

これを回避する方法を御存知の方、教えていただけないでしょうか?
306デフォルトの名無しさん:05/02/06 13:06:00
>>305
5時間悩む前に、
3時間で2003を再インストしてください。m(_ _)m
307デフォルトの名無しさん:05/02/06 14:36:26
フォームの表示画面のことについてお聞きしたいことがあります。
実現したいことは、スクロールバーのような機能をボタンに持たせる事です。
今、フォームに等間隔に3個の画像を配置しています。実際にフォームを表示
した時にはフォーム上には画像が1個だけ表示されていて、他の2個は見切れ
させている状態です。AutoScrollはfalseにしているので、スクロールバーは
表示させていません。このフォームにボタンを用意して、このボタンを押す度に、
スクロールバーをある程度移動させたのと同じといった効果を持たせたいのです。
が、これがどういった風にコードを記述したらいいのか分かりません。
実現方をご存知の方がいましたら教えてください。よろしくお願いします。
308デフォルトの名無しさん:05/02/06 14:40:33
3個の画像とやらはどう表示させてるの?
3つのPictureBox?
ならボタンが押されるごとにそれぞれの座標をずらしていけば良いだけだけど。
309デフォルトの名無しさん:05/02/06 15:38:55
こんなスレッド処理をMonitorクラスを利用してかスレッドプールを利用して
書き換えるとどうなるのですか?
private void ListenStart()
{
TcpListener listener = new TcpListener( IPAddress.Any, 10000);
listener.Start();
bAlive = true;
while( bAlive){
if( listener.Pending() == true){
TcpClient tcp = listener.AcceptTcpClient();
System.Diagnostics.Debug.Write( "接続!!");
}
Thread.Sleep( 100);
}
310デフォルトの名無しさん:05/02/06 16:05:56
>>309
Pendingを使うのは、接続を待たずに何かやりたい場合だけ。
whileループを使って接続を待つのなら、Pendingなんか使わずに
AcceptTcpClientをひたすら実行してればいいだけ。
これなら、接続があるまでスレッドが止まるから、
CPUを無駄にまわさない。

アホですか?
311デフォルトの名無しさん:05/02/06 16:36:53
>>308
Σ(゚Д゚ )その発想が自分にはなかったです。
ありがとうございます!!
312デフォルトの名無しさん:05/02/06 16:48:40
>>302
デフォルトでポートは開いてるし、
閉じてるって事は他のファイアウォールソフトで閉じられてるって事なんだから、
利用者に***番ポートを開ける必要があるとお知らせすればいい。
閉じてるポートを勝手に開けられちゃたまらん。
313デフォルトの名無しさん:05/02/06 18:40:09
>>312
あ、けど、実際私の環境だとポートはしまっているのですが、
ネトゲーなどは普通にできるんです。

どうなってるのかなぁって・・・
本当にすみません。
314デフォルトの名無しさん:05/02/06 18:55:53
>>313
ポートは向こうからつないでくるのに必要でこちらから接続するには関係ないぞ。基本的に
315デフォルトの名無しさん:05/02/06 18:57:59
>>314
必要だよ。起点を指定する必要がないというだけで
316デフォルトの名無しさん:05/02/06 20:10:03
>>314
必要だと思われw
317デフォルトの名無しさん:05/02/06 21:00:31
これはよい

               ゚・ 。  ・。
 チャーハン!     。・゚・⌒)
チャーハン! _ _  o━ヽニニフ ))
        (゚∀゚ )彡。・゚。・⌒)
       ⊂   o━ヽニニフ )
        ( ⌒) ≡=-
        し'c  ≡=-

スレですね
318デフォルトの名無しさん:05/02/06 21:01:17
Windows.Forms で、

[STAThread]
static void Main()
{
TestForm c = new TestForm();
c.TopMost = true;
c.ShowDialog();

のように、アプリケーションのメイン エントリ ポイント?で
別の From を表示させようとしているのですが、
上記のようにした場合、フォーム自体は表示してくるのですが
そのフォームがアクティブになりません。

これをアクティブにするにはどうしたらよいでしょうか?

Main でわざわざ別のフォームを表示させるのは、アプリケーション起動時に
あるファイルの存在の有無を調べて存在しない場合、そのファイルを
作成するフォームを表示させたいからです。そのファイルが存在した場合
その画面の表示を行なわずに自分自身を起動してきたいからです。

よろしくお願いします。
319デフォルトの名無しさん:05/02/06 21:02:24
質問です。
WebBrowserコントロールからPOSTされるデータを取得したいのですが、どうすればいいのでしょうか?
BeforeNavigate2イベントでe.postDataをstringにキャストしようとしたのですが、できませんでした。
320デフォルトの名無しさん:05/02/06 21:27:53
>>319
バイト配列
321デフォルトの名無しさん:05/02/06 21:34:01
>>315-316
必要ないだろ??
322デフォルトの名無しさん:05/02/06 21:36:12
>>320
ありがとう。
System.Byte[] bytesPostData = (System.Byte[])e.postData;
とすればいいんですよね?
この場合、bytesPostDataをstringにするにはどうすればいいんでしょうか?
323デフォルトの名無しさん:05/02/06 21:38:13
>>318
私の所では普通にアクティブになるが、
まあVisibleChangedでSetForegroundWindowをしたらどうだ。
324315:05/02/06 21:56:35
>>321
わるい。もしかしたら必要ないかも知れん。
家に帰ったら Socket.LocalEndPoint の Port に何が入るか調べてみるよ。
325デフォルトの名無しさん:05/02/06 22:10:32
String resultStr =
SysSystem.Text.Encoding.GetEncoding(932).GetString(bytesPostData);
ってやれば任意のエンコーディングで文字列が取得できるからためしてちょ
932とかは文字コードの指定方式でたしか””で囲まれた方法で指定もできたはず。
がんばってみてちょ。
 ところで、C++のアンマネージドにByte型の配列を渡す場合のサンプルって
どこかいいとこ知りませんか?
326デフォルトの名無しさん:05/02/06 22:23:07
>>325
> ところで、C++のアンマネージドにByte型の配列を渡す場合

普通にbyte[]を渡してやれば良いんだが。
渡した先で書き換えられる場合は[In, Out]の2つの属性をつける。
327318:05/02/06 22:28:06
>> 323
アクティブになりますか…。私の所では全面に表示されますがアクティブに
なりません orz.

SetForegroundWindow も考えましたが、呼び出し先の Form は
自身の Exe から呼ばれるので同一プロセスになりますよね?

どうやって SetForegroundWindow すればよいのでしょう?

すみませんがアドバイス頂けるとうれしいです。
328デフォルトの名無しさん:05/02/06 22:30:58
[DllImport("comtest.dll")]
public static extern int receive(
IntPtr handle,
[MarshalAs(UnmanagedType.LPArray)] byte[] buffer ,
);

byte[] byteArray = new byteArray[1000];
receive(handle,buffer);
System.Text.Encoding.GetEncoding(932).GetString(byteArray);

これでいいみたいだけどfixedはかけたほうがいいのでしょうか?
329デフォルトの名無しさん:05/02/06 22:45:40
>>327
普通に自身のハンドルをSetForegroundWindowする。

>>328
固定はマーシャラが上手い事やってくれるから別に要らない。
Out属性が無くてもbyte[]の内容が書き変わってる?
330デフォルトの名無しさん:05/02/06 22:53:06
お,out必要でした。すんません。
331318:05/02/06 23:34:22
>>329
むは、そういう事ですかー。とやってみようとしましたが、
static void Main()
{
の中で処理する必要があるのですが、this.Handle のように、
自身のハンドルを取得する事ができません。

何度もすみませんが、上記状態で自身のハンドルはどのように
取得すればよいのでしょうか? よろしくお願いします。
332デフォルトの名無しさん:05/02/06 23:35:15
senderがあるじゃないか。
333デフォルトの名無しさん:05/02/06 23:44:45
>>331
c.Handle
334318:05/02/06 23:52:41
>> 331
c.Handle は気付きませんでした OTL
ばっちりできました。ありがとうございました。

335デフォルトの名無しさん:05/02/07 06:08:23
メソッドをstaticにする場合としない場合の切り分けってなんかありますか?

変数だとstaticにする意味は分かるんですが・・・

例えば、インスタンス変数をstaticにした場合、
そいつのメソッドはどういう扱いになるんでしょう?
336デフォルトの名無しさん:05/02/07 06:53:54
>>335
そのメソッドの内部で this を使用しないのなら、
そのメソッドは static になれる。
具体的には System.Math クラスなど。
FxCop を導入すれば機械的に調べることができる。

> static インスタンス変数のメソッド

基本的には、インスタンスの所在によって、
そのインタフェイスが変化することはない、と考えよ。
337デフォルトの名無しさん:05/02/07 07:31:46
画面をキャプチャするにはどうしたらいいんでしょうか?
338デフォルトの名無しさん:05/02/07 07:33:49
339デフォルトの名無しさん:05/02/07 07:53:04
C#でプログラムを作っても直ぐに逆コンパイルされてしまう。・゚・(ノ∀`)・゚・。
なんか対策ないのでしょうか?

シリアルナンバーを入れるようにしたんですが、半日でシリアルが掲示板に晒されました・・・
340デフォルトの名無しさん:05/02/07 08:01:14
>>339
http://www.atmarkit.co.jp/fdotnet/tools/dotfuscator/dotfuscator_01.html
こことか読もう。ただ、根本的な対策は難しいかな。
シリアル関係のロジックのみCで作るとか。
341デフォルトの名無しさん:05/02/07 08:24:41
>>340
あ、ソレは既に使っています。
ただ、製品版で暗号化までしないと余り意味がないんですよね・・・
製品版が商用利用可能なら製品版を購入しようかとも思っています。

一応、以前C++をかじったことがあるので出来ると云えばできるのですが、
他の部分をC#で作る為に、全体を難読化した方が手っ取り早いかなっと・・・

有り難う御座います。
342340:05/02/07 09:13:38
>>341
既に使ってるのか。
俺は製品版使ったことがないからわらかないや。個人で買うには高すぎて買えし。
MSがVSに同じような機能をつけてくれればいいのに。
丸見えになるのは本当にどうにかならないものか。
343デフォルトの名無しさん:05/02/07 10:10:14
>>341
友達のスーパーハッカーに頼めばこれぐらい朝飯前だぞwwwwww

ildasmで逆アセンブルする
 ↓
ILコードを読んでシリアルナンバー関連のコードを探す
 ↓
ちょこっと書き換える
 ↓
書き換えたILをコンパイルする
 ↓
(゚Д゚)ウマー
344デフォルトの名無しさん:05/02/07 10:19:51
逆コンパイルしても意味不明になるように、複雑にするとかかな。
まぁ限度があるしパフォーマンスも落ちるだろうけど。
345デフォルトの名無しさん:05/02/07 11:01:24
       _
    ミ∠_)
  ∧_∧/ \\
  (,, ・∀/)   | |
  (  つつ    | |
   Y  /ノ    人
    / )    <  >_∧∩
  _/し' //. V`Д´)/
  (_フ彡        / ←>>343
346322:05/02/07 12:50:00
>>325
ありがとうございます。
そのようにしてEUC-JPでエンコードされたページでテストしてみましたが、日本語が化けてしまいます。
(まだShift_JISなどではテストしていません)
対処法を教えてください。
347デフォルトの名無しさん:05/02/07 13:12:20
>>346
>>325を読んだりテストしてみたりしている間に、ドキュメント等で
Encoding.GetEncoding の説明を見ようという気は全く起きなかった?
348デフォルトの名無しさん:05/02/07 13:14:28
化けてるんじゃなくてURLエンコードされてるだけ。
ドキュメントのcharsetのEncoding (GetEncodingメソッドは文字列もOKだ) を使って
System.Web.HttpUtility.UrlDecodeしな。
349デフォルトの名無しさん:05/02/07 15:27:07
>>348
いや、それはやりました。

>>347
UTF-8にしてもEUC-JPにしてもだめだったんだすけど。。。
350デフォルトの名無しさん:05/02/07 15:46:34
>>349=>>346=>>322です
351デフォルトの名無しさん:05/02/07 15:59:40
その「やりました」ってコードをちょっと書いてみて?
352デフォルトの名無しさん:05/02/07 16:42:19
>>351

System.Byte[] bytesPostData = (System.Byte[])e.postData;
string strData = System.Web.HttpUtility.UrlDecode(System.Text.Encoding.GetEncoding("EUC-JP").GetString(bytesPostData));
これです。
EUC-JPをSHIFT_JISやUTF-8にしてもだめでした。
(自動変数では豆腐に、シフトJISでファイルに書き込んだらに?になる)
353デフォルトの名無しさん:05/02/07 16:44:40
byte[] bytes = (byte[])e.postData;
label1.Text = Encoding.ASCII.GetString(bytes);
label2.Text = HttpUtility.UrlDecode(bytes, Encoding.GetEncoding("shift-jis"));
354デフォルトの名無しさん:05/02/07 16:57:42
あと
> ドキュメントのcharsetのEncoding (GetEncodingメソッドは文字列もOKだ) を使って
も。
355デフォルトの名無しさん:05/02/07 17:46:28
>>353
>label2.Text = HttpUtility.UrlDecode(bytes, Encoding.GetEncoding("shift-jis"));
これは常にshift-jisでいいんですか?
356デフォルトの名無しさん:05/02/07 17:50:10
飽くまで
> ドキュメントのcharsetのEncoding (GetEncodingメソッドは文字列もOKだ) を使って  
は無視かよ。
357341:05/02/07 19:32:02
あぁ・・・
やはり根本的解決法はないですか・・・
そうですね、折角VS2003なのでシリアル関係の部分だけC++で書いてみることにします。
本当に有り難う御座いました。
358デフォルトの名無しさん:05/02/07 19:34:07
もう嫌だこんな質問者・・・
359デフォルトの名無しさん:05/02/07 20:08:25
return CIMM.ImmRegisterWord(hKL, str1, buffers[0].Style, str2);
が、
Attempted to read or write protected memory. This is often an indication that other memory has been corrupted.
を返しました。
AccessViolationException

どうすればよいのでしょうか。
str[0]="34";
str[1]="復水器34";

360デフォルトの名無しさん:05/02/07 20:09:01
>>356>>358
すいません。見てませんでした。
ありがとうございました。
361デフォルトの名無しさん:05/02/07 20:36:40
>>359
buffers[0].Styleがあり得ない数字を指してるか、
既に登録済みか、
をまず疑うかな。

ところでCIMMってなに?
362359:05/02/07 20:39:04
>>361
レスさんくす。
IMMは、すでに登録済みの単語でもばぐらずに重複登録を自動で回避できるように設計されているみたい。
styleがありえない数字・・・そんなことってあるんですか?
今まで、うまくいってたんだけど、急なことで、びびってます。

CIMMは、imm.dllAPIが有するメソッドや、それらメソッドを容易に利用できるstatic methodを含む自作クラスです。
363322:05/02/07 20:45:16
すいません。また質問です。
>>356氏の方法というのはWebBrowserのcharsetを取得して
それをGetEncodingに渡して、UrlDecodeをするということでしょうか?
WebBrowserにそれらしきプロパティが見つからなかったもので。
364デフォルトの名無しさん:05/02/07 20:50:23
>>362
検索能力0か?
365デフォルトの名無しさん:05/02/07 20:52:06
>>363
ドキュメントの、っていってるだろが。
366デフォルトの名無しさん:05/02/07 21:36:14
>>365
ドキュメントというのは何を意味しているのでしょうか?
367デフォルトの名無しさん:05/02/07 21:46:21
webBrowser1.Document
368359:05/02/07 21:49:24
調査しました。
>>>>359
>>buffers[0].Styleがあり得ない数字を指してるか、
>>既に登録済みか、
>>をまず疑うかな。
>>
buffers[0].Styleは正常値(名詞)
登録済みではない。
str1が"34"の時だけ、なぜかエラー
Attempted to read or write protected memory. This is often an indication that other memory has been corrupted
369デフォルトの名無しさん:05/02/07 21:56:19
>>367
すいません。
Documentをどのようにすればいいんでしょうか?
370359:05/02/07 21:58:24
http://dakko.net/imgboard/img-box/img20050207215735.jpg
なんでだよ、ぐすん。
C#とか関係ないよ、IMEだよ
371デフォルトの名無しさん:05/02/07 22:00:19
>>339
いまさらだが。
シリアルナンバーのMD5ハッシュとかだけをコード埋め込みにして、
ユーザーの入力のハッシュ値と見比べればいいんでないかい?
372デフォルトの名無しさん:05/02/07 22:02:37
http://mintweb.net/cgi-bin/mkbbs/mkres5.cgi?00000
今事件のことTVのニュースでやってるぞ!!!
373359:05/02/07 22:03:40
>>372
広告かよ
374デフォルトの名無しさん:05/02/07 22:07:36
>>370
うん、もうコーディングでどうこうできるエラーじゃないと思う。
せいぜい例外を捕まえてユーザにメッセージを出しとくぐらいだね。
//私の環境(IMEはATOK15)で同様の事をやっても例外は投げられないし。

>>371
ハッシュ演算部分をディスアセンブルすれば一目瞭然。
375デフォルトの名無しさん:05/02/07 22:31:05
>>374
お前バカだろ。

ハッシュコードがわかったって、そのハッシュコードを生成できる
元のデータを知る方法はこの世に存在しないんだよ。
376デフォルトの名無しさん:05/02/07 22:34:16
>>371
自分の入力した値が生成するMD5に埋め込みなおしておく。
377デフォルトの名無しさん:05/02/07 22:34:57
完璧な解決法

・パスワードを埋め込むのではなく、パスワードのハッシュを埋め込む
・パスワードを比較するのではなく、パスワードのハッシュを比較する
・プログラムの.exeファイル自体のハッシュコードを記録しておき、
実行時に.exeファイルのハッシュコードを計算し、改竄されていたら実行しない

以上。
378デフォルトの名無しさん:05/02/07 22:36:33
>>375
埋め込まれたハッシュを書き換えれば……。
379デフォルトの名無しさん:05/02/07 22:37:31
>>376
やっぱアホだなお前。
改竄前提なら、C++で書いたってチートされて終わりですよ
380デフォルトの名無しさん:05/02/07 22:39:27
>>378
そういうのを突き詰めていくと、難読化だって何の解決にもなってないんだがな。

ダイジェスト認証と、プログラム改竄チェックを組み合わせれば
難読化の必要すらない。
381370:05/02/07 22:57:03
>>380
僕のソフトは、あらかじめ偽シリアルをネットにさりげなく流しておいて、
正規の手順で手に入れたシリアル以外を入力したと同時に、
あぼーんするように配布してるよ。
今のところ、表立った苦情はない。あたりまえか・・・w。
382デフォルトの名無しさん:05/02/07 23:24:55
>>381
WinGr00ve事件
383デフォルトの名無しさん:05/02/07 23:25:46
ロジックボムはマジやめとけ
384370:05/02/07 23:38:56
あぼーん、といいつつも、軽微な罰則だよ。
マイドキュのファイル焼失とか、そのくらい。
385デフォルトの名無しさん:05/02/07 23:41:07
すんまそん
google Deskbarみたいにタスクバーにアプリを埋め込みたいんですが可能ですか?
ぐぐったんですけど見つけられません

タスクトレイばかり引っかかってしまいます
ヒントをキボンヌ orz
386370:05/02/07 23:44:37
>>385
IEを逆アセンブリしろ。
387デフォルトの名無しさん:05/02/07 23:54:26
388デフォルトの名無しさん:05/02/07 23:56:40
389デフォルトの名無しさん:05/02/08 00:32:27
RichTextBoxのSelect()メソッドを走らせて、文字列の範囲を選択すると
範囲が色突きで反転すると思いますが、あれを不要なので無効化したいのですが
SendMessage(richTextBox1.handle, EM_SETSEL, -1, -1)とやっても
色が変わってしまった困ってるのですがうまい方法ご存知ないでしょうか?
 最後にもう1つ、<aaa>test</aaa>という文字列をRegexをしようして
string[0] = "<aaa>" string[1] = "test" string[2] = "</aaa>"
という風に分割することのできる正規表現を教えてくれませんか?Perlの正規
表現でやると括弧がとれたはちゃめちゃな産物ができて困っています。
390デフォルトの名無しさん:05/02/08 00:42:46
アセンブリに埋め込んだリソースの使用について質問です。

現在ProjectAから、ProjectDLLで作ったDLLを使用するとして、
DLL側でProjectDLL自身のアセンブリのリソースを使用したいです。

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetEntryAssembly();
System.IO.Stream stream;
stream = assembly.GetManifestResourceStream("ProjectDLL.hoge.txt");

このようなコードなのですが、間違いないでしょうか?
リソースにしたいファイルは「埋め込まれたりソース」にしております。
しかし、いつもNullが返って来る状態です。
DLLにしてしまうとデバッグなどが大変でして・・・どうかご教授ください。
391デフォルトの名無しさん:05/02/08 00:46:22
>>389
君の文章が一番はちゃめちゃだな。

>  範囲が色突きで反転すると思いますが、あれを不要なので無効化したいのですが

要するに選択範囲をなくすって事? Cutメソッドを使っても実際にはカットしない状態にしたいと?
ならSelectionLength = 0;だが。

>   最後にもう1つ、<aaa>test</aaa>という文字列をRegexをしようして

なんとなく.NET Frameworkにおける正規表現ライブラリの使い方を分かってないような気がするが……。
System.Text.RegularExpressions.Match match = System.Text.RegularExpressions.Regex.Match("<aaa>test</aaa>", "(<[^>]+>)([^<]+)(</[^>]+>)");
// match.Groups[0].Value == "<aaa>test</aaa>"
// match.Groups[1].Value == "<aaa>"
// match.Groups[2].Value == "test"
// match.Groups[3].Value == "</aaa>"
392デフォルトの名無しさん:05/02/08 01:00:54
391さんありがとうございます。しかし、
this.richTextBox1.SelectAll();
this.richTextBox1.SelectionColor = Color.Black;
this.richTextBox1.SelectionLength = 0;
これなんてやるとピカピカ光ってちらつく以上のすごいものが見れてしまいます。
WM_PAINTで抑制すれば収集つくでしょうか?ResumeLayout SuspendLayout
を使用しましたが無意味なようでした。
393デフォルトの名無しさん:05/02/08 01:12:57
>>390
リソースはアセンブリに埋め込むモノってのは当然だよね?
アセンブリとは要するに.exeまたは.dllである、と言うのも分かるよね?

> System.Reflection.Assembly assembly = System.Reflection.Assembly.GetEntryAssembly();

エントリポイントがあるアセンブリを取得してるって事は、
実行時にエントリポイントとなるMainメソッドを含むアセンブリを取得するって事で、
通常プロセスを開始した.exeのアセンブリを指すよね?
リソースを持ってる、.dllのアセンブリを取得しないといけないのに。

typeof(*.dllで定義してる何らかのクラス*).Assemblyとやると.dllのAssemblyインスタンスを簡単に取得できる。

> stream = assembly.GetManifestResourceStream("ProjectDLL.hoge.txt");

ProjectDLLってのは、さてどこから出てきたのかな?
名前空間がって言ったって、一つのアセンブリ、一つのファイルに複数の名前空間を持たせる事もできるよ?

リソースファイルの名前が実際にProjectDLL.hoge.txtだったら正しいけれど、多分単にhoge.txtでしょ。

GetManifestResourceStreamメソッドの解説に
> type の完全名が "MyNameSpace.MyClasses" で、name が "Net" の場合、
> GetManifestResourceStream は、MyNameSpace.Net という名前のリソースを検索します。
って書いてるけど、オーバーロードを良く読むとこれはGetManifestResourceStream(Type, string)限定の解説なんだよね。
394385:05/02/08 01:25:56
>>386
そんなご無体な

>>387
>>388
うはーサンクス!ありがとう!
どうやら俺に足りないのは英語力のようだ _| ̄|○
395390:05/02/08 01:27:31
>>393
ありがとうございます。リソースを取得することができました(^^;
ファイル名は単にhoge.txtですね。
ちなみにProjectDLLはプロジェクト名です。

いろいろ検索して探していたら、リソースの取得は
stream = assembly.GetManifestResourceStream("<プロジェクト名>.<ファイル名>");
で行うと書いてあったので、そちらを参考にしていました。

まだまだAssemblyあたりになると弱いですね。。。
最後の文章が理解できなかったり(^^;
ヘルプをもうちょっと見てみたいと思います。ありがとうございました。
396デフォルトの名無しさん:05/02/08 01:30:01
はぁ?
397335:05/02/08 02:52:37
>>336
レスありです!

> そのメソッドの内部で this を使用しないのなら、
> そのメソッドは static になれる。

言い変えれば、thisを使用しないのなら
staticにすべき、ってこと?
それともしたければしてもいいよ、ってこと?

> FxCop を導入すれば機械的に調べることができる。
ほぉ。ちと試してみます。

> 基本的には、インスタンスの所在によって、
> そのインタフェイスが変化することはない、と考えよ。
すいません、書き方が悪かったです。
知りたかったのは、インスタンスをstaticにして呼び出したメソッドは
static扱いになってしまうのでしょうか?

共通部品の中で、あるクラスのインスタンスを(private)staticで定義してまして、
そのインスタンスのメンバを呼んで処理を行うメソッドを実装してるんですが、
そのメソッドを別々な画面から同時に呼ぶとどうなるのかな、と思いまして。
分かり難くくてすいません。。
398デフォルトの名無しさん:05/02/08 10:06:36
staticメソッドはステートレスなものにたいして使用
thisを使わないからstaticにするものではない(staticにすることはできる)
インスタンスがstatictoメソッドのstaticは別物です。
>別々な画面から同時に呼ぶと
おそらく"同時に"は呼んでません。同時かどうかはスレッドの問題だし
複数の場所からというならそれはstaticなインスタンスが複数の場所から扱われるので片一方の変更が影響するということです
class NankaKurasu{
class StaticNaKurasu{ 
 static int s_value;
int m_value;
static void ChangeValue(){s_value++}
public void ChangeValue(){m_value++;}}
static StaticNaKurasu s_staticKurasu=ne=new StaticNaKurasu();
void main(){
StaticNaKurass stackStaticKurasu=new StaticNaKurasu();
s_staticKurasu.ChangeValue();
stackStatickKurasu.ChangeValue();
}
void HokanoMethod(){
StaticNaKurass stackStaticKurasu=new StaticNaKurasu();
s_staticKurasu.ChangeValue();
stackStatickKurasu.ChangeValue();
}
}
でおのおの値見て見れ。コンパイルと押してないので動くか知らん。
399デフォルトの名無しさん:05/02/08 10:07:43
static public void ChangeValue(){s_value++}
二変更
400デフォルトの名無しさん:05/02/08 11:37:23
400様!!
401369:05/02/08 15:38:12
みなさんありがとうございました。
>>367
できました!
mshtml.HTMLDocument myDocument = (mshtml.HTMLDocument)axBrowser.Document;
strCharset = myDocument.charset;
ということだったんですね!
本当にありがとうございました(゚∀゚)!
402336:05/02/08 18:20:00
>>397
一応、補足しておくと…
ここでいう this とは、例えばインスタンスフィールドへのアクセスを含みます。

class Item
{
 private int value;
 public void Hoge()
 {
  value = 100; // this.value = 100; と同義。
 }
}

上記 Hoge() メソッドは static には成り得ない。
static メソッドは this にはアクセスできないため。
(Hoge() はステートを持つ。)

「this にアクセスしないのであれば、
それは(実装・設計の両面から見て)静的メソッドであるはずだ」という発想。

インスタンスが static フィールドであったとしても、
その(非 static)メソッドは、やはり自身へのアクセスを持ち続けるので、
「static 扱い」とはいえない。
メソッド(の呼び出し)はインスタンスの状態を変更する“可能性”がある。
クラスの使用者から見て、メソッドが static であるか否かは重要な意味を持つので注意。
403デフォルトの名無しさん:05/02/08 18:42:02
ttp://support.microsoft.com/default.aspx?scid=kb;ja;812409
こちらのサンプル「FtpClient.exe」について、
ユーザー認証するサイトからのダウンロードは問題ありませんが、
anonymousログインした場合、無反応になるのですが、どうしてでしょうか?
404デフォルトの名無しさん:05/02/08 21:20:05

非常に初歩的かもしれない質問で申し訳ないのですが、
普段は画面右下のところに駐屯していて、設定したキーを押すとフォームが現れて色々操作
するってのを作りたいのですが、
他のソフトなどを操作している時でも、プログラムがキー操作を受け取ることは可能なのでしょうか?
405デフォルトの名無しさん:05/02/08 21:22:10
>>404
可能です。
406デフォルトの名無しさん:05/02/08 21:22:51
>>404
特殊キーは可能でふ、Windowsとかアプリケーションキーとか
のコンビネーションか、若しくは、デスクトップでのイベント
407デフォルトの名無しさん:05/02/08 21:24:01
> 普段は画面右下のところに駐屯していて、
駐屯じゃなくて常駐。
画面右下(というかタスクバーの端)のアイコン群部分はタスクトレイ。

キー入力を受け取るのは無理。
Win32APIのRegisterHotKeyでホットキーを登録する必要がある。
408404エラーw:05/02/08 21:24:25
>>405-406
即レス激しくThx!

例えば、Shift+Ctr+Tとかって可能ですか?
409404エラーw:05/02/08 21:25:39
>>407氏もThx!
キー入力を受け付けるのは無理なんですか?
世の中にはキーロガーみたいなものがあるので、意外に簡単にできるものかとおもってました。
410デフォルトの名無しさん:05/02/08 21:34:59
>>409
簡単だよ。
411デフォルトの名無しさん:05/02/08 21:36:14
まあキーロガーは.NETでは無理だけどな。
412デフォルトの名無しさん:05/02/08 21:42:42
>>411
なんで?
413404エラーw:05/02/08 22:02:06
>>410-411
え~っと、結局どうなんでしょう?
キーロガーみたいに入力されたキーを監視していて、例えば指定されたキーが押されたら
ソフトを起動するとか、そういうことも無理ではない気がするのですが・・・

特に.netでは無理というのが非常に気になります。
414デフォルトの名無しさん:05/02/08 22:11:25
Windowsサービスにして、OS起動時に起動させりゃいいような。
415デフォルトの名無しさん:05/02/08 22:44:33
何を難しがってんだ?
SetWindowsHookEx(WH_KEYBOARD_LL)
UnHookWindowsHookEx()
で終わりじゃんか。
416デフォルトの名無しさん:05/02/08 22:51:21
GUIについて質問です。
ListViewにアイコンを複数表示したり、ボタンを入れたりってことは無理でしょうか?
ListView純正でできなかったとして、ListViewを継承して自力でなんとかするというのは無理なんでしょうか?
417デフォルトの名無しさん:05/02/08 23:34:14
>>415
それC#だと無理ぢゃない?
418デフォルトの名無しさん:05/02/08 23:36:38
>>417
C#でもdelegateでWindowProcが書けるから実はサブクラス化なんかもできるんだけど、
んでも>>416が言うように簡単にはできないなぁ。

普通のUserControlとして自前で実装した方が何かと楽だと思う。
419デフォルトの名無しさん:05/02/08 23:45:54
>>C#でもdelegateでWindowProcが書けるから実はサブクラス化
詳しく教えていただきたい。

普通にやるとGCでアドレス換わるみたく
うまくいきませんでした。

WndProcのOverrideとかじゃなく気楽にサブクラス化したい
420デフォルトの名無しさん:05/02/08 23:53:33
421デフォルトの名無しさん:05/02/08 23:57:34
>>419
特に特別なことはしてません。
delegate自体への参照を保持していなくて、開放されちゃったりしいませんか?

MyWin32ApiHelper.SetWindowLongAsWndProc(hWnd, GWL_WNDPROC, new delegate hoge( foo.bar ) ); とかして。
422デフォルトの名無しさん:05/02/09 02:02:48
TextBoxやRichTextBoxで
aaaaaaa
bbbbb
cccc
などとあった場合、描画された最後の文字がWndow左端から数えて何ピクセル目
もしくは(x,y)座標を知るようなことができるのでしょうか?
423335:05/02/09 02:09:30
レスありがとうございま。

>>398
やはり「片一方の変更が影響する」ということですね。

>>402
>「this にアクセスしないのであれば、
>それは(実装・設計の両面から見て)静的メソッドであるはずだ」という発想。

なんかすげー分かったような気がします!なるほど~
424デフォルトの名無しさん:05/02/09 03:55:03
HSPのHMemory.dllみたいにプロセスのメモリを操作したいんです
C#ではどうやるんですか教えて偉い人
425デフォルトの名無しさん:05/02/09 04:16:24
426デフォルトの名無しさん:05/02/09 05:10:42
>>415
.NETじゃグローバルフックは無理なのよ。
427デフォルトの名無しさん:05/02/09 05:19:46
428デフォルトの名無しさん:05/02/09 08:17:20
>>426
試してないんで悪いが、これで行けないのか?
ttp://support.microsoft.com/default.aspx?scid=kb;ja;318804
429デフォルトの名無しさん:05/02/09 08:50:03
>>428
無理だよ。
常にフックできるのはグローバルフックのみ。
.NETで出来るのはスレッドフックのみ。
その例のマウスフックだって、自身のウィンドウ上にカーソルが来てる時しか監視できない。
WH_KEYBOARDなら自身のウィンドウがアクティブな時だけ。
ついでにWH_KEYBOARD_LLはグローバルフック専用。
430デフォルトの名無しさん:05/02/09 09:40:46
フックDLLをC++で作ってプロセス間通信
431デフォルトの名無しさん:05/02/09 10:01:53
まあ頑張れ。
432デフォルトの名無しさん:05/02/09 10:15:53
>>86さんと同じ質問です。
>>88さんが、やらない方がいいと仰っていますが、レジストリ以外でアプリケーションの設定を保存するには、
iniファイルで保存するという見解で良いのでしょうか?
よろしくお願いします。
433デフォルトの名無しさん:05/02/09 10:38:54
XmlSerializerやSoapFormatterでシリアライズというのも一案。
434デフォルトの名無しさん:05/02/09 11:05:03
私は読み込みは動的プロパティで、書き込みはその XML に 書き込みをしています。
やっちゃいけないんだろうか…。特に問題はおきてないんですが…。
435デフォルトの名無しさん:05/02/09 13:20:25
画面の座標や大きさといった状態を保存する目的なら分離ストレージを使います。
ユーザー毎に設定できる上にレジストリも汚れないので重宝してます。
xxx.exe.configは動作環境の定義+簡易リソース的なファイルだから、
アプリで書き出すと必要な情報を壊してしまいそうで怖いです。
436デフォルトの名無しさん:05/02/09 13:27:31
>>435
そうすると今度は単純なXCOPYで環境の移行ができなくなる罠。
437デフォルトの名無しさん:05/02/09 13:36:42
>>436
だから「画面の座標や大きさといった状態」といったのですよ。
移行の時は持っていかないのが原則。
そうする必要のあるデータは独自にxmlなどのファイルを作るということで。
438デフォルトの名無しさん:05/02/09 14:36:47
listviewのFocusedItem.BeginEdit()は左端のアイテムしか編集できませんが、2列目も
同じく編集するにはどうしたらいいのですか?
439デフォルトの名無しさん:05/02/09 14:40:29
ListViewじゃ無理。
440デフォルトの名無しさん:05/02/09 14:46:08
自分で組み込む、例えばEditコントロールとか
441デフォルトの名無しさん:05/02/09 17:09:48
SharpZipLib って、別アセンブリから使用するだけだと GPL 感染しないよね?
ってことは同人ゲーとして売っても良いの?
442デフォルトの名無しさん:05/02/09 18:03:00
DateTimePicker にてカレンダーを表示する↓のボタンをマウスでクリックして
カレンダーを表示させたあと、別のコントロールをマウスでクリックして
そのコントロールへフォーカスを移動します。

その後、TAB キーで先程の DateTimePicker へフォーカスを移動すると
2005/02/09 の部分にフォーカスが移動せず、どうやら ↓ボタンが
フォーカスを取得しているようです(F4でカレンダーが表示しましたので)

DateTimePicker の yyyy の部分にフォーカスをあてる方法があれば
教えてください。

443デフォルトの名無しさん:05/02/09 18:28:25
何か壮大な勘違いしている人が多いように思えたが

オブジェクト指向を使用している以上、出来ることはリファレンスに全て書いてある
逆に言うと、リファレンスに書いていないことは出来ない

「これこれこんな裏業を使えばできます」っていう答えを期待しているのかも試練が、
そんなものあったとしてもロクなもんじゃない


>>442
DateTimePicker に該当機能が無ければ、自分で自作したほうが早いっスよ
444デフォルトの名無しさん:05/02/09 21:49:59
その書き方だとオブジェクト指向を誤解している気がする
445デフォルトの名無しさん:05/02/09 22:08:35
オブジェクト指向と何か関係あるのか?
446デフォルトの名無しさん:05/02/09 22:13:41
>オブジェクト指向を使用している以上、出来ることはリファレンスに全て書いてある
この意味がわかりませんが。
447443:05/02/09 22:20:11
>>443-446
悪い。確かに書いていて変な文章だなとは思ったけど
448デフォルトの名無しさん:05/02/09 22:26:15
C#=オブジェクト指向
M$はそんなこと考えていないよ、
オブジェクトとか関係ないw
449デフォルトの名無しさん:05/02/09 22:28:04
C#のViewの描画は、現在表示されている領域外のデータもすべて描画しているの
でしょうか?Paintメソッドの中身やUnManagedMethodの呼び出し部分を見ましたが
どうにもそのような機構になってないように思います。
 1Mのデータを読み込み、可視範囲のみを描画するRichTextExを自作している
のですが、この辺りの情報について詳しい方いらっしゃいませんか?
450デフォルトの名無しさん:05/02/09 22:38:33
次はGraphics.Clipプロパティだな。
C#というかWindowsの描画の問題だが。
451デフォルトの名無しさん:05/02/09 22:41:56
>>449
意味がよくわかりませんが、”すべてを描画しないで必要な部分だけ描画するようにする必要があり”ます。
452デフォルトの名無しさん:05/02/09 22:45:42
450さんありがとう。どうにも今までDB専業だったもので描画など
考えたことも無かったため全然閃かなくて助かります。
453デフォルトの名無しさん:05/02/09 23:18:44
>>452
そこらへんはC#によるプログラミングウィンドウズに詳しい描画関係はほぼ網羅されてマフ
454デフォルトの名無しさん:05/02/10 00:34:28
ref付けて関数の引数として渡すとき、明示的にクラスの変換をしたいんですが、文法はどうすればいいんでしょう?
455デフォルトの名無しさん:05/02/10 00:40:04
意味が分からない。

class A {}
class B : A {}
void C(ref A) {}

B b = new B();
A a = (A)b;
C(ref a);

ということ?
456デフォルトの名無しさん:05/02/10 01:25:01
スーパークラスなら無問題だが?
457デフォルトの名無しさん:05/02/10 02:43:54
class A:TreeView{}

void moge( ref tree ){}
これです。
ツリービュー自体を渡すときに(TreeView)と付けて明示的にする必要があるんですが、
ref(TreeView) とかじゃエラーになるんです。
やっぱりobjectとかからの変換になるんでしょうか。
458デフォルトの名無しさん:05/02/10 02:58:20
相変わらず意味不明だな。

> void moge( ref tree ){}

メソッド定義が変(引数の型が不明)だが、void moge(ref TreeView tree) {} でいいのかね。

> ツリービュー自体を渡すときに(TreeView)と付けて明示的にする必要があるんですが、

ツリービュー自体ってなに?

> ref(TreeView) とかじゃエラーになるんです。

A a = new A();
moge(ref (TreeView)a);
でエラーになるって事?


で、結局>>455じゃん?
459デフォルトの名無しさん:05/02/10 03:18:35
>>456
こっちで解決できました。
ありがとうございました。
>>455
こっちも考えたんですが、何か他の文法があるんじゃないかと思って。

というか this にrefつけられなかったんですね・・・しらなんだ。
460デフォルトの名無しさん:05/02/10 08:19:33
Microsoft Speech APIを使ったサンプルコードがありましたら紹介お願いします。
461デフォルトの名無しさん:05/02/10 08:34:28
>>460
ぐうぐる先生に聞いてみた。
http://www.csharphelp.com/archives/archive228.html
これかしら。
462デフォルトの名無しさん:05/02/10 09:09:27
>>461
さっそくありがとうございます。
しかし、、、それはMicrosoft Agent APIのサンプルみたいですね。
Office製品に出てくるあのうざいマスコットどもを呼べるAPIらしいです。
それのSpeakメソッド内でSpeech APIが使われているみたいですが
Speech APIそのもののサンプルコードではないようです。
463460:05/02/10 12:54:34
SpeechSDK5.1をインストール後、サンプルソース集の中にC#のもありました。
Microsoft Speech Object Libraryに参照を通せば後は

SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpVoice Voice = new SpVoice();
Voice.Speak("hello", SpFlags);

これだけで動作するというあっさりとしたものでした。
ということで事後報告。
464デフォルトの名無しさん:05/02/10 21:11:54
動的プロパティの新規作成・更新ってどうやるんでしょうか?
もしかしてXMLファイルとして自分で作るとか?
465デフォルトの名無しさん:05/02/10 22:05:25
VisualStudio2003にて
さっきまで編集できていたフォームなのに、いつのまにか
,「'Location'の宣言が重複してます」とか「'Size'の宣言が重複してます」などのメッセージが表示され
デザイナ上で配置されていたコントロールがほとんど表示されないようになってしまった。

という症状の対処法を知ってる人はいないでしょうか?
466デフォルトの名無しさん:05/02/10 22:26:46
RichTextやTextBoxなどで、this.CreateGraphics()とやって新しい描画
領域を作成し、そこに何らかの処理を描画したあと更新が必要でないので
さきほど作ったGraphicを流用し描画を行うということはできないのでしょうか?
描画毎にGraphicsを作成するのを止めたいです。
467デフォルトの名無しさん:05/02/10 23:19:58
>>466
一般的にはBitmap作って保持するわけだけれども、RichTextやTextBox相手に
それやるのは正直全くお勧めしません。
468デフォルトの名無しさん:05/02/10 23:56:08
諦めたほうがいいのかなぁうーむ。5000行近くで重くなるのはちと
勘弁してほしいんだが何かいい方法は無いものだろうかな
469370:05/02/11 00:47:30
>>465
いいか、よく聞いてくれ。
そのバグは、なおらない。
2時間悩むなら、30分で新規ウィザード。
4時間後に適切なレスついて、5分で直すより、
いますぐ、新規ウィザード。
くやしいが、有効な手立てはない。
バックアップとってるなら、それをつかえ。以上

(僕も被害者、これが一番の解決法)
470デフォルトの名無しさん:05/02/11 03:05:33
そういやイベントプロシージャが
勝手に削除されるとかって言う現象には
遭遇したことがあるな。
471デフォルトの名無しさん:05/02/11 05:40:06
アプリケーションが起動した状態でさらに引数を与えられて起動しようとしたときに、
二重起動を抑制して起動状態のアプリで引数を取得する方法のようなものはありますか?

二重起動自体はミューテックスで抑制する方法はわかるのだけど、
引数をどうにかして取得したい。
472デフォルトの名無しさん:05/02/11 09:58:30
Mutexでチェックする時点で引数見れば(・∀・)イイ!!やん
473デフォルトの名無しさん:05/02/11 10:34:38
>>471
WORDの文書をクリックした場合にWORDが既に立ち上がってれば同じインスタンスで
文書が開く、といったことを実現したいということですよね?
あれはDDEとシェル登録機能を使ってるんだけど.NETじゃサポートしてなかったような。
あと使えそうなプロセス間通信手段は.NETリモート処理ですがポートをひとつ消費して
しまうのが難点です。
474デフォルトの名無しさん:05/02/11 10:38:48
>> 464
自分で XML を更新するしか方法はないと思います。私はそうやっています。
475デフォルトの名無しさん:05/02/11 10:41:19
>>465
それって継承フォームや継承コントロールを使うとよく起きませんか?
コンストラクタやLoadイベントでいろいろな関数を呼んでると起きる感じで
いくつかコメントにしてリビルドすると治ることがあります。
476デフォルトの名無しさん:05/02/11 11:05:01
>>473
>  あと使えそうなプロセス間通信手段は.NETリモート処理ですがポートをひとつ消費して
>  しまうのが難点です。

プライベートに使えるポートが16383個ほどあるのに、それでも一つ使うのがイヤですかそうですか。
477デフォルトの名無しさん:05/02/11 12:14:22
this.SetStyle(ControlStyles.UserPaint, true);
これを適用し、OnPaintBackground、OnPaintをオーバライドしたとき
baseのメソッド呼び出しただけでは、画面がまっしろになってしまいます。
他に何か書かなければいけないのでしょうか?TextBoxでそうなってしまいます
478デフォルトの名無しさん:05/02/11 12:30:08
PanelやFormならわかるがなぜTextBoxでUserPaintの必要があるのかわからない。
479 ◆Qgg7HIarPg :05/02/11 12:55:43
>473,476
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwinforms/html/reaworapps1.asp

の中ほどに single-instance application の話題が出てはいるけど、引数伝えるのは remoting 使ってて『object remoting が標準装備されてる環境なら、これが手っ取り早いのね…』と感心した記憶があります。
480デフォルトの名無しさん:05/02/11 14:01:48

神さま仏さま!
C#で簡易SMTPサーバーを作ってそこからメール送信ってことは可能でしょうか?
つまり自分のPC自体をSMTPサーバーにするというヤツです。

ソフトに自分へのメールを送る機能を付けたいのですが、C#だとソースを読まれる可能性が高くて
自分のSMTPサーバーを使うのは少し気がひけるので・・・


要は、C#でSMTPサーバーを立てるDLLかなにかありましたら御紹介頂きたいのです・・・
(前置きが長くて申し訳ありませぬ!
481デフォルトの名無しさん:05/02/11 14:42:23
>>480がなぜC#にこだわってるのかサッパリわからん。
「可能か」と言われれば、他の言語でできる事で、C#でだけ不可能な事なんか
1つもないと答えるしかない。
482デフォルトの名無しさん:05/02/11 14:59:26
>>480
自前のソフトにSMTP鯖機能なんかつけても、すぐに役に立たなくなるからやめとけば?
Outbound Port25 Blockingがあちこちのプロバイダで導入されつつあるよ。

C#と関係無い話でスマソ。
483デフォルトの名無しさん:05/02/11 16:48:45
というか、悪徳スパム業者が逮捕されたときにほう助罪で逮捕される。
そんなことを心配すべきだと思う今日この頃。
484デフォルトの名無しさん:05/02/11 16:51:32
>>自分のSMTPサーバーを使うのは少し気がひけるので・・・
??
485デフォルトの名無しさん:05/02/11 18:26:34
>>480
おまえ C# の前は HSP 使ってただろ
質問の仕方がソックリだ
486480:05/02/11 18:33:39
一応、自力では無理なんで他力本願、簡易SMTPサーバーのソースを引っ張ってきて
作ることができました。

確かに>>482さんの云うように使えないプロバイダもありますね。
友人に試して貰ったら、niftyは使えましたがOCNは無理でした。

>>484
自宅サーバーがあるので、そっちのサーバーを使えば簡単なんですが
(むしろHPにCGIに直接の方が・・・w)、C#はソースを見られるので
悪用されるかと少し心配でした。

>>486
C#の前はVB6.0でした、
HSPってもの自体知りません。

それにしてもOutbound Port25 Blocking・・・
恨めしいです。
487デフォルトの名無しさん:05/02/11 18:39:01
サーバーがどんな言語で作られたってわかるの?
サーバーがどんなOSの元で動いてるのかは分かるかもしれないが。
意味不明
488480:05/02/11 19:20:22
>>487
http://b-51.hp.infoseek.co.jp/download.html
ここのSimpleMailServerってのがソースファイルも含まれてて、
これを参考にしました。
ちなみにC++です。
489デフォルトの名無しさん:05/02/11 19:21:42
telnet remotehost 25
490デフォルトの名無しさん:05/02/11 19:22:39
それなら、c++でやれば良いじゃん。
言語にこだわるのはナンセンス
491デフォルトの名無しさん:05/02/11 19:25:06
だれ?
492480:05/02/11 19:34:37
>>490
一応、C#の勉強にもしたかったので・・・
まぁ結局C++で書いてしまったわけですがw
493デフォルトの名無しさん:05/02/11 19:39:03
c++でそこまでできるんなら、c#だって簡単だべ?.NETライブラリ
読むだけだし。意味不明。
494デフォルトの名無しさん:05/02/11 20:13:23
質問です。
http://www.gotdotnet.com/japan/student/column/firststep/firststep21.aspx
これを参考にタブブラウザもどきのものを作っているのですが、

this.SuspendLayout();

System.Windows.Forms.TabPage tabPage = new System.Windows.Forms.TabPage();
AxSHDocVw.AxWebBrowser axWebBrowser = new AxSHDocVw.AxWebBrowser();

axWebBrowser.BeginInit();
axWebBrowser.Dock = System.Windows.Forms.DockStyle.Fill;
axWebBrowser.EndInit();

tabPage.Controls.Add(axWebBrowser);

this.currentTabPage = tabPage;
this.currentWebBrowser = axWebBrowser;

object URIbuf = (object)strURI;
object o = null;
axWebBrowser.Navigate2(ref URIbuf,ref o,ref o,ref o,ref o);

this.ResumeLayout();

とすると、axWebBrowser.Navigate2(ref URIbuf,ref o,ref o,ref o,ref o);の部分で、
InvalidActiveXStateExceptionの例外が発生します。
なにがいけないのでしょうか?
495デフォルトの名無しさん:05/02/11 20:25:50
最終的にFormのControlsに入ってないとダメ。
その例ならtabPageをTabControlのTabPagesに入れて、そのTabControlをFormのControlsに入れてからでないと。
496デフォルトの名無しさん:05/02/11 21:01:44
配列の定数ってどうすれば宣言できますか?
int[] list = {1,3,5,7,9,11};
と動的に宣言することはできますが、static constを付けるとエラーになります。
497デフォルトの名無しさん:05/02/11 21:02:54
static int[] const list = {1,3,5,7,9,11};
498デフォルトの名無しさん:05/02/11 21:06:48
>>497
これ定数の配列じゃないか?

static readonly int[] list = {1,3,5,7,9,11};
499デフォルトの名無しさん:05/02/11 21:10:26
thx これで就職できるよ
500デフォルトの名無しさん:05/02/11 21:11:40
>>499
ぉぃ
501デフォルトの名無しさん:05/02/11 22:07:32
WindowsAppliで、
ネットワークに接続されたプリンタを利用する方法を教えてください。
Webアプリケーションではなくて。
502デフォルトの名無しさん:05/02/11 22:13:44
503デフォルトの名無しさん:05/02/11 22:19:28
以下のようなコードを実行した場合エラーが出ます。

System.IO.FileStream FS = new System.IO.FileStream(@"画像ぱす",System.IO.FileMode.Open, System.IO.FileAccess.Read);
this.pictureBox1.Image = System.Drawing.Image.FromStream(FS);
FS.Close();
this.pictureBox1.Image.Save(@"画像ぱす");


'System.Runtime.InteropServices.ExternalException' のハンドルされていない例外が system.drawing.dll で発生しました。
追加情報 : GDI+ で一般的なエラーが発生しました。
ハンドルされていない例外 : System.Runtime.InteropServices.ExternalException: GDI+ で一般的なエラーが発生しました。
at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
at System.Drawing.Image.Save(String filename, ImageFormat format)
at System.Drawing.Image.Save(String filename)



ずっと悩んでいます。
回避方法は無いものでしょうか。
宜しくお願いします。
504デフォルトの名無しさん:05/02/11 22:22:46
>>503
FS.Close();      // これ入れちゃ駄目なような気がする
505デフォルトの名無しさん:05/02/11 23:33:22
くだらない質問ですが教えてくだちゃい

エクセルライクな家計簿ソフトを作ってみようかと思っとるんですが、
この場合セルってどうやって作ればいいんですかね

DataGridってやつ?それとも、テキストボックスを格子で区切るような
ことができるんでしょーか?
506デフォルトの名無しさん:05/02/12 01:13:28
誠に申し訳ない。
別のアプリケーションを終了するにはどうすれば・・・
自分で起動したアプリケーションを終了させるのはできるのですが・・・


つД`) タスケレ !! 
507デフォルトの名無しさん:05/02/12 01:46:20
508フナ太郎:05/02/12 04:41:17
あのさー、
あるフォームにクリックイベントハンドラを登録して、
そこに処理を書くのと、
フォームのOnClickイベントをオーバーライドして、
そこに処理を書くのと、
どこが違うんでございましょうか?
509デフォルトの名無しさん:05/02/12 05:32:00
Clickイベントはpublic、OnClickはprotected、Formは継承して使うことが多いけど、
Form上のコントロールだと継承することが少ないから外部から使えるのはありがたい。
あとイベントは複数のハンドラを登録できるのが特徴かな。
510デフォルトの名無しさん:05/02/12 09:07:19
>>508
仮想kんすうとで利ゲート。まったく異なる
511デフォルトの名無しさん:05/02/12 09:47:48
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(e.KeyChar==(char)Keys.Enter){button1_Click(sender,e);}
}
テキストボックスに入力した後Enterを押すとビープ音が出るんですが、これを鳴らさないように
するにはどうしたらいいのですか?
512デフォルトの名無しさん:05/02/12 09:53:33
e.Handled = true;
でいけるんじゃなかったっけ。
513デフォルトの名無しさん:05/02/12 10:37:07
>>495
そういうことだったんですか!
ありがとうございました!
514フナ太郎:05/02/12 16:13:44
>>509-510

なるほど。ありがとうございました。
それらをどう使い分けるかは自分でかんがえてみます。
515503:05/02/12 17:30:44
>>504
アドバイスありがとうございます。

System.IO.FileStream FS = new System.IO.FileStream(@"画像ぱす",System.IO.FileMode.Open, System.IO.FileAccess.Read);
this.pictureBox1.Image = System.Drawing.Image.FromStream(FS);
//FS.Close();
this.pictureBox1.Image.Save(@"画像ぱす");

でも駄目ですた。
なんでだなんでだろう
516フナ太郎:05/02/12 18:29:41
>>515

ちがうパス名ならうまく行くんで、オブジェクトがファイルを
掴んだまんまなんだね。
別のファイルにセーブ、ってのじゃダメなのかね?
517デフォルトの名無しさん:05/02/12 19:16:57
unsage コード内限定の話ですが、Windows 上で動かす限りリトルエンディアンとみなして OK ですか?
518517:05/02/12 19:17:27
unsage ってなんだよ unsafe だよ orz
519デフォルトの名無しさん:05/02/12 19:28:44
unsage=age か?
520デフォルトの名無しさん:05/02/12 19:33:48
>>517
確実を期すならBitConverter.IsLittleEndian静的フィールドでチェックだ。
がまあ、リトルエンディアンでいいだろうなぁ。
521デフォルトの名無しさん:05/02/12 19:49:20
System.IO.FileStream FS = new System.IO.FileStream(@"サンプル.bmp",System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite);
this.pictureBox1.Image = System.Drawing.Image.FromStream(FS);
this.pictureBox1.Image.Save(FS,System.Drawing.Imaging.ImageFormat.Bmp);
これじゃだめか意図が違うって?
522デフォルトの名無しさん:05/02/12 20:11:29
>>515
一度 FileStream から MemoryStream に転送し、そこから Image.FromStream というのはどうだろう
コレならば最初の FileStream は閉じられるし
523デフォルトの名無しさん:05/02/12 21:21:59
unsage推奨スレ
524デフォルトの名無しさん:05/02/12 23:06:15
C#でクラスの継承を使うとVS2003のデバッグで
クラス内のブレークポイントで止まってくれません。
どうすればクラス内のブレークポイントで止める事が出来ますか?
525デフォルトの名無しさん:05/02/12 23:37:00
>>524
Release ビルドで実行してるとか言うオチじゃねぇだろうな。

もしくは、クラス内ってのは、
class AAA
{
static int hoge = 0; // ← こことか?
}

確認面倒だからやってないけど、これは止まらない気も。
初期化コードは static コンストラクタの中にでも書け。
526503:05/02/13 00:08:25
>>516
>>521
>>522

皆さんのご意見を参考にしたら上手く行きました。
どうもありがとうございました。
↓こうなりました。

System.IO.FileStream FS = new System.IO.FileStream(@"画像ぱす",System.IO.FileMode.Open, System.IO.FileAccess.Read);
byte[] BT = new byte[FS.Length];
FS.Read(BT,0,BT.Length);
FS.Close();
System.IO.MemoryStream MS = new System.IO.MemoryStream(BT);
this.pictureBox1.Image = System.Drawing.Image.FromStream(MS);
this.pictureBox1.Image.Save(@"画像ぱす");
MS.Close();
527デフォルトの名無しさん:05/02/13 00:37:53
RichTextBox.Rtfに1M以上のデータ食わすとレスポンスが尋常じゃないほど
遅いのですが、このような場合どのようにすれば高速化できるのでしょうか?
今のところ1Mで100秒ぐらいかかり使い物になりません。
528デフォルトの名無しさん:05/02/13 01:20:40
型指定されたDataSetから、DBにそれに対応するようなデータベースもしくは
テーブルを作成するようなメソッド、もしくはCreateTableを行うSQLを出力する
などの機能はないんでしょうか?

529デフォルトの名無しさん:05/02/13 04:41:46
コントロール自体をバイナリ等で保存する事って出来ますか?
530デフォルトの名無しさん:05/02/13 05:21:49
GraphicsPathとGraphicsPathの重なりを検出することはできますか?
またGraphicsPathをMergeすることはできますか?丸と丸が少し重なっていたら雪だるまのようなpathになってほしい。
531デフォルトの名無しさん:05/02/13 06:00:53
>>527
環境にもよるけど100秒はかかりすぎ。こちらの環境では、Wordpadで作った1.7Mの
rtf形式ファイルをPentiumII級のマシンで読み込むのに8秒くらい。
Wordpadで読んでも時間がかかりますか?
532デフォルトの名無しさん:05/02/13 11:22:28
質問なんですが、
C#って.Net Framework入ってないと動かないんでしょうか?
普通のC、C++のようにランタイムに左右されず単体で動く
exeを作りたいんですが可能でしょうか?
533デフォルトの名無しさん:05/02/13 11:31:05
C# が動くというのもまた珍妙な表現だな
534デフォルトの名無しさん:05/02/13 11:39:08
下らんレスならいらないんですが・・・・
535デフォルトの名無しさん:05/02/13 11:41:32
下らんなどといっているからいつまでたっても知識が身に付かんのだ。
536デフォルトの名無しさん:05/02/13 11:51:00
>>529
シリアライズ
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, obj);

>>530
Regionと組み合わせればいろいろできます。
537デフォルトの名無しさん:05/02/13 11:53:55
>>528
標準ではないと思います。ただ、XMLスキーマの情報があれば実現できそうな感じの機能ですね。
538デフォルトの名無しさん:05/02/13 14:54:55
初めてC#に挑戦しました。
まず最初にいつもの「こんにちわ世界」を・・・

試しにタスクマネージャーを開いたら・・・
なんでこんな単純なプログラムがメモリを10Mも!!


これって正常なのでしょうか?
539デフォルトの名無しさん:05/02/13 15:16:04
>>538
最小化すれ
540デフォルトの名無しさん:05/02/13 15:22:57
.NET のソフトをタスクマネージャで見たときの
メモリ使用量は虚像に過ぎないから
気にしなくていいよ
541デフォルトの名無しさん:05/02/13 15:24:18
richTextBox.Rtf = String Data(1M以上のRTFフォーマットの文字列)
とやるとすごい時間がかかるみたいなだけした。この方法がいけないよう
でした。
542471:05/02/13 15:48:49
>>473
>>479
遅レススマソ。なるほど。.NETだと面倒なようだね。
リモート処理だとFWの警告が出そうな気もするし。悩ましいな。
543デフォルトの名無しさん:05/02/13 16:35:42
内部同士の通信でFWも無いもんだと思うんだが。
ついでに別に面倒じゃないよ。
はじめに理解するのはちと困難だが、一度理解すればすごく簡単。
コーディングも長くならない。
544デフォルトの名無しさん:05/02/13 17:59:44
standalone(XMLテキスト)のDataSetでSQLを扱う場合は
どのDataAdapterを使えばよいのでしょうか?
545デフォルトの名無しさん:05/02/13 18:21:14
XMLをSQLで処理する処理系って無いような気がするな。
XPathNavigatorとか使って処理するんじゃね?
546デフォルトの名無しさん:05/02/13 18:56:12
>>542,543
自分のアプリではAPIのSendMessageでやってるけど、やっぱり邪道?
547デフォルトの名無しさん:05/02/13 19:18:32
>>545
そっか、どうしてもDataSetを使いたいのでDataView使います。
548デフォルトの名無しさん:05/02/13 19:43:50
単純な質問スマソ

開始ボタンをクリック→キャンセルボタンを有効→時間のかかる処理→キャンセルボタンを隠す→処理完了

という部分で、処理の途中でキャンセルボタンを押すと処理を止めるってのを作りたいのですが、
キャンセルボタンを有効にしても処理の方が優先されるのか、処理をしている間、キャンセルボタンが有効にならないんです。
試しに、処理が終わった後にボタンを隠す部分をなくしてみたら、
処理が終わった段階で初めてボタンが有効になるという様でした。・゚・(ノ∀`)・゚・。
Application.DoEvents();
を処理のループの中に入れても無理でしたし・・・

このような場合はどのようにすべきなのでしょうか??
549デフォルトの名無しさん:05/02/13 19:45:52
550デフォルトの名無しさん:05/02/13 20:26:25
>>549
激しくThx

やっぱ別スレッドにすべきか・・・
ありがとうございました。
551デフォルトの名無しさん:05/02/13 20:34:00
というか、今気づいたけど >>171 の意味が良くわからん
どんなコードだったんだろうか
552デフォルトの名無しさん:05/02/13 20:59:45
イベントデリゲートのメソッド内で直接排他してたんでしょ
メッセージキューをデリゲートに分配する部分がスレッドじゃないから
メソッド内で排他してもキューはたまりっぱなしだったかと
553デフォルトの名無しさん:05/02/13 22:26:57
int型の配列を作成した時、各要素はヒープ上にありますか?
554デフォルトの名無しさん:05/02/13 22:29:33
昨日書いたコードは忘れてしまう脂質じゃなきゃやってられません
555デフォルトの名無しさん:05/02/13 22:32:50
>>553
各要素はint型、つまり構造体です。察して下さい。
556デフォルトの名無しさん:05/02/13 22:32:54
DataGridの項目名はDataColumn#Captionでは変更できないのですか?
#ColumnNameが直接反映されてしまってローカライズできずに困っています
557デフォルトの名無しさん:05/02/13 22:38:07
DataGridColumnStyle.HeaderText
558最凶VB厨房:05/02/13 23:09:07
>>553
ヒープなはず
559553:05/02/13 23:22:57
>>555
>>558
どうもありがとうございます。
MSDNのサイトでスタックとヒープの説明を見つけました。
配列の実体はヒープみたいです。
http://www.microsoft.com/japan/msdn/library/ja/jpdnbcsharp/htm/csharp2-4.asp?frame=true
560デフォルトの名無しさん:05/02/14 00:04:20
スクロールバーが出ている状態のRichTextBoxで以下のような操作をします。
richTextBox1.Select(0, 10);
richTextBox1.SelectedLength = 0;
と行っても、最終的に自動的に画面スクロールが発生しますがこれを
上記の2つの操作を行っても発生させないようにするのにどのようにすれば
いいでしょうか?
561デフォルトの名無しさん:05/02/14 00:56:29
>>560
RichTextBoxの継承クラスを作って、スクロールさせないフラグを用意する。
WndProcをオーバーライドし、フラグが立ってる時にWM_PAINTが送られた時は基底クラスのWndProcを呼ばないようにする。
後はフラグ立ててSelectionStartを保存してSelectしてSelectionLengthを0にしてSelectionStartを元に戻してフラグをおろす。
562532:05/02/14 03:47:18
>>533
すいません、質問を改めます。

C#で出来たプログラムをバイトコードではなく、
CやC++のようにnativeコードにコンパイルしたいの
ですが、そんなコンパイラは付属してますか?

563デフォルトの名無しさん:05/02/14 03:50:58
スルー
564デフォルトの名無しさん:05/02/14 04:35:03
>>562
そのつもりはないのだと思うが、それはFAQすぎて煽りと取られかねない質問なのですよ。
javaスレにいって同じ質問をしても同様の反応があると思います。
結論から言えばそんなものはないし、あったとしてもそれはかなり邪道な存在です。
.NET Frameworkとは何か、何を目標にして作られたのかといったあたりを調べてみましょう。
565デフォルトの名無しさん:05/02/14 06:16:52
>結論から言えばそんなものはないし、あったとしてもそれはかなり邪道な存在です。
>.NET Frameworkとは何か、何を目標にして作られたのかといったあたりを調べてみましょう。
別にそこにとらわれることないとおもうが・・・
.NET環境で動くものとしてもいいし、そこからアンマネージ生成して使えるようにできると幅も広がると思うが。
566デフォルトの名無しさん:05/02/14 08:05:54
>>565
利点もねーだろうし幅も広がらんと思うぜ?その上技術的にも相当厄介だし。
567デフォルトの名無しさん:05/02/14 08:52:31
.NETでないC#もあってもいいのだろうけど、それはきっとJ#並みの邪悪さだ。
568デフォルトの名無しさん:05/02/14 10:49:58
DataSet & DataTableで仮想テーブル(Accessでいうクエリ)を生成する方法ってありますか?
569デフォルトの名無しさん:05/02/14 10:55:46
よくわからんがDataViewのことか。
570デフォルトの名無しさん:05/02/14 11:18:23
select 注文.id as 注文ID, 商品.商品名 as 商品名 from (略
SQLだとこんな感じですが、複数のDataTableからひとつのDataTableを作りたいんです
DataViewに結合のメソッドが見当たらなかったのですが、どのメソッドでしょうか?
571デフォルトの名無しさん:05/02/14 14:14:42
>>570
最初から、そのようなSQLを打ってDataTableを作れば良いのではなかろうか。
572デフォルトの名無しさん:05/02/14 14:37:22
>>571
XMLでやるのでSQLは使えません。
専用のテーブル作って保存の時だけ参照をはずす方法しないのかな。
573デフォルトの名無しさん:05/02/14 15:37:20
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpcondefaultmarshalingfordelegates.asp
これを見るとdelegateの参照を保持していればアンマネージコードに渡した関数ポインタは有効みたいですが、
GCが動作してもdelegateのアドレスは変わらないという保証があるのでしょうか?
GCが動作したらアドレスが変わる可能性がありそうに思えて不安です。
574デフォルトの名無しさん:05/02/14 15:38:50
>>573
心配ならfixed
575デフォルトの名無しさん:05/02/14 15:52:45
>>573
関数ポインタはdelegateをmarshallした結果得られているわけであって、
もともとのdelegate のアドレスが変化するか、ということとはちょっと別の話だと思う。

マーシャラはCoTaskMemAllocとかその辺のレガシーAPIでメモリを確保するわけだから、
マーシャリングされた結果の関数ポインタとかTCHARへのポインタとかはunmannagedリソースで
ファイナライザで開放はされても、それまではアドレスは変化しないんじゅない?
576573:05/02/14 16:37:18
大き目のbyte[]をPlaySound APIに渡して非同期再生を行ってる最中にGCを動かせばひどい目にあうように、
delegateもGCがメモリの再配置を仕掛けて
アンマネージコードに渡した関数ポインタが無効になるんじゃないかって思えます。
でも、
http://support.microsoft.com/default.aspx?scid=kb;ja;318804
この例でもそういうのは考慮していないみたいなので
何かdelegateからできた関数ポインタが無効にならない仕様とか決まってるのかなと思ったので。

でも、GCがdelegateをメモリ再配置の対象外にしているとしたら
それはそれでdelegateをメンバに持つクラスのメモリ再配置で困りそうに思えますし。
577デフォルトの名無しさん:05/02/14 23:51:24
DataT&DataGridでAutoincrementされているIDを
578デフォルトの名無しさん:05/02/14 23:54:55
DataTable & DataGridでAutoIncrementされているIDを初期化する方法ってありますか?
DataTableをClear()したあと、DataColumn#AutoIncrementSeetを0に設定しなおしても連番は残ってしまいます。
うまく初期値に戻せる方法をご存知でしたら教えてください。



579562:05/02/14 23:57:12
>>564-567

ありがとうございました。
.NETという前提をおいといて、C#という言語だけを見たときに
私的にnativeのモジュールを作れれば、C、C++を完全に
捨てても良いのかなーと思ったりしたモノで聞いてしまいました。

お騒がせしました。
580デフォルトの名無しさん:05/02/14 23:57:32
AutoIncrementの数値を気にしてちゃいけない。
ただの識別子。
581デフォルトの名無しさん:05/02/15 01:17:45

余りにも初歩的な質問なんですが・・・
別のフォーム(例えばForm2)からForm1でPublicで宣言された変数にアクセスするにはどうすればいいんでしょ??
普通に変数(例えばstring Error1)を出そうとして
MessageBox.Show(Error);
などとやっても無理ですし、
MessageBox.Show(Form1.Error);
とやっても無理です。

三 (lll´ⅴ`)お助け願います・・・
582デフォルトの名無しさん:05/02/15 01:25:37
方法は多くあるが、そのError1とやらがどんな意味を持ってるかで推薦するのが変わってくるな。
583581:05/02/15 01:32:13
早速レスありがとうございます!Error1というのはあくまで例えでして・・・
実際は、Form2の方からForm1で動いているスレッドthread1をキャンセル、一時停止、再開などを行いたいと思っています。
584デフォルトの名無しさん:05/02/15 01:48:24
Form2にThread型のプロパティを作ってForm2の起動前にForm1から渡してやればいい。

Form2 form2 = new Form2();
form2.TargetThread = thread;
form2.Show();
-------------
public Thread TargetThread {get {return targetThread;} set {taragetThread = value;}}
private Thread targetThread;


スレッド操作専用フォームだというのならForm2のコンストラクタ引数にするのがベターだけど。

Form2 form2 = new Form2(thread);
form2.Show();
------------
public Form2(Thread thread) : this() {
   this.targetThread = thread;
}
private Thread targetThread;
585デフォルトの名無しさん:05/02/15 02:00:06
RichTextBoxにスクラッチでスクロールバーをつけたサンプル知りませんか?
スクロールで最下行の文字が半分だけ見える状態で、その最下行をクリック
すると自動的にスクロールするという仕様にあきれてスクラッチで実装したいと
思いました。よろしくお願いします。WM_PAINT等では制御は不可能でした。
SPY++ですべての発生イベント調べましたがスクロールイベントが発生していない
のに自動スクロールする糞仕様は勘弁して欲しい。
586デフォルトの名無しさん:05/02/15 02:17:54
>>585
Rich Edit コントロールの仕様だからして、RichTextBoxベースじゃどうにもならないだろね。
Controlを直接継承して書く事になるかな。
頑張れとしか言いようがないね。

ところでスクロールイベントがってのはRichTextBox.VScrollイベントの事かな?
これは
>ユーザーがコントロールの垂直スクロール バーをクリックすると発生します。
と書かれてるよ?

> スクロールで最下行の文字が半分だけ見える状態で、その最下行をクリック
> すると自動的にスクロールするという仕様

極めて真っ当な仕様だと思うけど。
587デフォルトの名無しさん:05/02/15 02:30:46
>>580
同じDataGridで別データの読み込みをするのでAutoIncrementのリセットは必須です。

現状わかってる一番の問題点は
旧DataTableをRemoveして同名を持つ新規DataTableをAddしてもDataGridは参照を変更しないこと。
それではと再度SetDataBindingしてやっても参照が外れたはずの旧DataTableを表示してしまう。
DataSet#Tablesのインデクサで確認する分には確かにテーブルは新しいものになってる。

この更新不可のなぞの現象に手詰まり状態です。
588465:05/02/15 07:47:27
>>469,>>475 ありがとうございました。
コメントアウトでメソッド削って部分的に作り直したらなおりました。(クリックイベント消してやり直し)

.netで描画されるStringの送り幅を得る方法を知っている人はいますか?

Fontクラスにそれらしいメソッドがないのですが。
GetHeight()みたいなものはあるのですが
589デフォルトの名無しさん:05/02/15 08:02:04
>>588
Graphics.MeasureString
590デフォルトの名無しさん:05/02/15 09:15:19
えーと、スマートデバイス用にビルドしたアプリケーションにアイコンを
つけたいのですが…。
コンポーネントの追加でアイコンを編集保存してもビルド時に
「見つからない」とエラーが出てしまいます。
591デフォルトの名無しさん:05/02/15 10:56:35
foreach(FontFamily ff in FontFamily.Families)
{
if (!ff.IsStyleAvailable(FontStyle.Regular))
{
continue;
}
comboBox1.Items.Add(ff.Name);
}
これで使用可能なフォント一覧を出しているのですが、大量にフォントが
あると使用メモリが一気に上がってしまいます。
これを回避するにはどうしたらいいのですか?
592デフォルトの名無しさん:05/02/15 11:19:40
GC.Collect()
593デフォルトの名無しさん:05/02/15 11:40:11
>>590
普通にくっつけられますが。
  アイコンをプロジェクトに追加
  フォームのIconプロパティでアイコン指定

アイコンファイルのパスが間違ってるとか?
594デフォルトの名無しさん:05/02/15 13:44:40
>>591
フォント入れすぎによる弊害なんて10年以上前から言われてた事だし。
595デフォルトの名無しさん:05/02/15 14:03:44
Win32APIか何かのスレでも、フォントを大量にロードした後は、フォントを破棄しても
プロセス終了まで使用メモリが減らないっていう話が出てたような気がする。
596591:05/02/15 14:11:24
文字化けするフォントを排除して、使えるフォントのみ抽出したかったのです。
これだと、大量にあるフォントの中から抽出する事はかなり困難になりそうです。
597デフォルトの名無しさん:05/02/15 16:25:48
timerコントロールより精度の高い計測コントロールってありませんか?
598デフォルトの名無しさん:05/02/15 16:31:42
System.Timers.Timerで不服かね。
599デフォルトの名無しさん:05/02/15 17:15:49
NotifyIconクラスのHandleがとりたいんですが、どうすればとれますか?
((System.Windows.Forms.NativeWindow)(notifyIcon1.window)).Handle
だと怒られてしまって・・・。
600デフォルトの名無しさん:05/02/15 18:07:30
http://www.microsoft.com/japan/msdn/net/bda/cominterop.asp
ここをみながら
ActiveX を使っているのですが、
時折異常にパフォーマンスが落ちて原因を探っていたのですが、
オブジェクトを生成したスレッドと違うスレッドから呼び出した時に起こっているような気がします。
これは、元々そういう物なんでしょうか?
それとも何か仕損じがあるのでしょうか?
601デフォルトの名無しさん:05/02/15 18:21:07
>>599
Spy++見れば分かるけど、NotifyIcon一つ一つにはウィンドウハンドル割り当てられてないよ。
タスクトレイの実体はToolbarだし。
notifyIcon1.windowってのが何を指すのか知らないけど。
602デフォルトの名無しさん:05/02/15 18:28:57
>>601
notifyIcon1.windowはNotifyIconがもつ内部のメンバ変数で
System.Windows.Forms.NotifyIcon.NotifyIconNativeWindowのようです。(デバッグ情報より)

Ballon Hintを表示させたいので、NotifyIconのhWndが欲しいのですが
window.Handleではとれないのでどうしたものかと。。。
603デフォルトの名無しさん:05/02/15 18:57:48
>>602
それはNotifyIconのハンドルじゃなくて
NotifyIconのメッセージを処理するウィンドウ。
601が言ってるようにNotifyIconはウィンドウハンドルを持たない。
604デフォルトの名無しさん:05/02/15 19:07:24
>>602
バルーンヒントならCodeCoreで見たけど
605デフォルトの名無しさん:05/02/15 19:26:40
>>603
なるほど

>>604
CodeCoreのやつは、うまくうごかなくて・・・。

リフレクションでとりあえずとることにします。
System.IntPtrhWnd = newSystem.IntPtr(0);
NativeWindownwwNativeWindow =
null;
System.Type typNotifyIconType = typeof(System.Windows.Forms.NotifyIcon);
System.Reflection.MemberInfo[] aryMemberInfo =
typNotifyIconType.GetMember(
"window",
MemberTypes.Field,
BindingFlags.NonPublic | BindingFlags.Instance);
foreach(
System.Reflection.MemberInfo mifMemberInfo
in aryMemberInfo){
FieldInfofifFieldInfo =
(FieldInfo)mifMemberInfo;
TypetypNotifyIconNativeWindow =
fifFieldInfo.FieldType;
nwwNativeWindow =
(NativeWindow)fifFieldInfo.GetValue(notifyIcon1);
hWnd =
nwwNativeWindow.Handle;
break;
}
606デフォルトの名無しさん:05/02/15 19:38:51
>>605
なぜFieldを取得するのにわざわざGetMemberを?
607デフォルトの名無しさん:05/02/15 19:57:39
>>606
コピペの関係で・・・
System.Reflection.FieldInfo fifFieldInfo =
 typNotifyIconType.GetField(
 "window",
 BindingFlags.NonPublic | BindingFlags.Instance);
Type typNotifyIconNativeWindow =
 fifFieldInfo.FieldType;
nwwNativeWindow =
 (NativeWindow)fifFieldInfo.GetValue(notifyIcon1);
hWnd =
 nwwNativeWindow.Handle;
608デフォルトの名無しさん:05/02/15 23:17:06
自分で作ったフォーム(簡単なラベルエディタ)を指定位置に出したいのですが
先に移動させてShowしても、うまく指定位置に出てくれません。

//* これだと移動してくれない
MyForm mf = new MyForm();
mf.Location = new Point(400,300);
mf.Visible = true;
//*/

//指定位置に出すことができるけど
//こうやると一瞬ヘンな位置にでてるのがユーザにばれてしまう。
MyForm mf = new MyForm();
mf.Visible = true;
mf.Location = new Point(400,300);

どなたか、解決方法を御存知ないでしょうか?
609デフォルトの名無しさん:05/02/15 23:21:38
StartPosition
610斉藤:05/02/16 00:43:35
ここで問題です。

private void ABC()
{
    ・
    ・
    ・
}

private void HOGE()
{
    DEF( ABC );
}

メソッドDEFは、メソッドABCの何を受け取るのでしょうか?
611デフォルトの名無しさん:05/02/16 01:01:38
>>584
遅レスごめんなさい!
ありがとうございました!
612MSDN:05/02/16 01:20:07
Visual Basic、C#、および C++ のサンプルを表示するには、
このページの左上隅にある言語のフィルタ ボタン▼ をクリックします。

そんなボタン、ねーぞ!
613デフォルトの名無しさん:05/02/16 01:28:38
>>610
DEF なんてないじゃん。
614デフォルトの名無しさん:05/02/16 02:01:45
>>610
関数ポインタみたいなことやらせたいんだろうか。
それともデリゲートのことをいいたいんだろうか。
615斉藤:05/02/16 02:04:19
>>614
デリゲートで受けたらエラーになっちゃったの。テヘッ
616デフォルトの名無しさん:05/02/16 02:08:25
デリゲートについて勉強すれば解決
617デフォルトの名無しさん:05/02/16 13:39:25
お前らもっとデリケートなレス付けろって
618斉藤:05/02/16 13:49:33
( ゚o゚)ハッ なるほど!

デリゲートのハンドラとして受けてるのか!

>>616>>614様 ありっとっしたー
619デフォルトの名無しさん:05/02/16 15:30:25
GDI+遅っ!
620デフォルトの名無しさん:05/02/16 15:56:34
try
{
    while(true)
    {
        System.Web.Mail.SmtpMail.Send(mm);
    }
}
catch(System.Threading.ThreadStateException ez)
{
    Console.Writeline("処理が中止されました。");
    Console.Writeline(ez.ToString());
}
catch(Exception ex)
{
    Console.Writeline("送信中にエラーが発生致しました。");
    Console.Writeline(ex.Message);
}

こういう無限にメールを送る処理を別スレッドでやらせていて、
送信中にスレッドをAbortさせて終了させようとすると、
なぜかSystem.Threading.ThreadStateExceptionを捕らえられない・・・・
メール送信のスレッドを止めるとメールを送信する方のエラーが先に起きちゃうからかな??

お助け下さいませ。・゚・(ノ∀`)・゚・。
621デフォルトの名無しさん:05/02/16 16:06:02
質問です。
プロジェクトをビルドするときには問題はないのに、実行すると
InitializeComponent()の中で以下のような例外がでてしまいます。
心当たりといえば昨日ソリューションエクスプローラの中で
ドラッグアンドドロップしてfrmMain.csのファイルを移動させましたが、
デザイナを表示させたとき、アイコンなどはきちんと表示されるので
resxファイルの場所が間違っているということはないと思います。

'System.Resources.MissingManifestResourceException' のハンドルされていない例外が mscorlib.dll で発生しました。

追加情報 : 指定されたカルチャ (またはニュートラル カルチャ) に必要なリソースがアセンブリに見つかりません。"frmMain.resources" が、アセンブリ "BlogWalker" に正しく埋め込まれているか、またはリンクされているかを確認してください。
baseName: frmMain locationInfo: RSS.frmMain resource file name: frmMain.resources assembly: BlogWalker, Version=1.8.1873.28742, Culture=neutral, PublicKeyToken=null
622デフォルトの名無しさん:05/02/16 16:15:00
>>620
なんか怪しいソフトだなぁw
まぁこのスレの住民はそういうの好きだから安心汁

キミの予想通り、恐らくSystem.Web.Mail.SmtpMail.Send(mm); の処理をしている最中にスレッドを止めようとすると
まず、スレッドのステータスがAbortRequestedになって、その後にAbortされる。
System.Threading.ThreadStateExceptionはスレッドがAbortRequestedぢゃなくて、完全にAbortされないと
反応しないから、恐らくAbortRequestedの段階でSystem.Web.Mail.SmtpMail.Send(mm); がエラーを起こしている
と思われ・・・


とは云っても対処法は・・・俺には解らぬ。
詳しい方、後はよろ
623デフォルトの名無しさん:05/02/16 17:04:55
2chブラウザのレス番リンクのポップアップのような
親子関係を保持したポップアップはどうやって実装しているんでしょうか?
孫から子に戻ったとき、子だけ残して孫を消していたりとてもスムーズです
624デフォルトの名無しさん:05/02/16 17:22:20
>>623
言ってることからは具体的なものがよくわからないんだけど
Control(とかFormとか)のParentを指定しておいて、
子から親に戻ってきたときに親が子コントロールを消してあげれば。
625デフォルトの名無しさん:05/02/16 17:58:01
>>620
Mail 名前空間使った事無いから知らないけど
…… ThreadAbortException の間違い?
626デフォルトの名無しさん:05/02/16 18:46:28
>>621
ソリューションエクスプローラでfrmMain.csを例えば"FormClasses"フォルダに
入れたとするなら、リソースへの参照は "FormClasses.frmMain.resources"に
変更する必要があるような気がするけど。
627デフォルトの名無しさん:05/02/16 18:58:48
>>626
リソースへの参照はどうやって変更すればいいんですか?
628620:05/02/16 19:16:24
>>625
申し訳ない!書き間違いです。

try
{
    while(true)
    {
        System.Web.Mail.SmtpMail.Send(mm);
    }
}
catch(System.Threading.ThreadAbortException ez)
{
    Cons("処理が中止されました。");
    Cons(ez.ToString());
}
catch(Exception ex)
{
    Cons("送信中にエラーが発生致しました。");
    Cons(ex.Message);
}
でした。
>>622さんの云うとおり、やっぱり無理なんでしょうか?
629620:05/02/16 19:19:15
更にミス!なんでConsole.WriteLineが・・・
正しくは

try 

    while(true) 
    { 
        System.Web.Mail.SmtpMail.Send(mm); 
    } 

catch(System.Threading.ThreadAbortException ez) 

    Console.Writeline("処理が中止されました。"); 
    Console.Writeline(ez.Message); 

catch(Exception ex) 

    Console.Writeline("送信中にエラーが発生致しました。"); 
    Console.Writeline(ex.Message); 
630デフォルトの名無しさん:05/02/16 19:35:54
631625:05/02/16 20:16:01
>>628
627 も指摘しているけど、"処理が中止されました。" が表示されているのかいないのか、そこのとこをもうちっと詳しく
632621:05/02/16 21:04:45
すいません。
プロジェクトに明示的にresxファイルを追加したら動くようになりました。
少し後味が悪いんですが、他に解決法はないですか?
633620:05/02/16 23:18:30
>>631
いえ、処理が中止されましたって表示されずに、
 System.Web.Mail.SmtpMail.Sendの方のエラーを吐いています、
ですので
送信中にエラーが発生致しました
と表示されています。

634620:05/02/16 23:21:13
>>630
うわぁ!
今読んでますけど、非常に参考になります。
有り難う御座います。
635620:05/02/16 23:37:53
ただ、吐いているエラーが
ThreadAbortExceptionではなくて
System.Web.Mail.SmtpMail.Sendの吐くエラーなのがどうも腑に落ちないのです・・・
636デフォルトの名無しさん:05/02/17 01:00:45
637デフォルトの名無しさん:05/02/17 01:09:42
638デフォルトの名無しさん:05/02/17 02:10:27
スクロールが必要な領域の、グローバル座標はどのようにしたら取得できるの
でしょうか?印刷コントロールを作成しているのですが、表示の必要がない
オブジェクトの描画を省略したいと思います。、グローバル座標が
が解らないため現在どこからどこまでが表示すべきかの判別をどのように
行えばよいのか解りません。
639デフォルトの名無しさん:05/02/17 05:16:05
>>638
何を言いたいのかよくわからないけど、
スクロールとかは設計者の勝ってだっぺ。
ワールド座標は常に見えてる部分が基本だっぺ。
640デフォルトの名無しさん:05/02/17 08:20:15
>>636-637
宣伝乙
641デフォルトの名無しさん:05/02/17 13:54:43
DLLの中身を解析するメソッドとかってあるんでしょうか。
642デフォルトの名無しさん:05/02/17 14:07:05
MSIL Disassembler
643デフォルトの名無しさん:05/02/17 14:18:38
いや、ツールとかじゃなくて、コード上で。
例えばツリービューにそのDLLが持つクラスを表現するとかの方法です。
644デフォルトの名無しさん:05/02/17 14:31:08
Assembly.GetTypes() で型を全部取得して、ツリービューに表示
645デフォルトの名無しさん:05/02/17 16:39:01
>>644
Thxです。
インテリセンスで出る説明文等の表示が欲しくて、Xmlとか覗いてるんですが、これって入れ子になってるわけでもなく、上から順番にメンバ並べてるだけですよね・・・?
Xmlの意味あるんでしょうかこれ。
menbersの中に全部memberとしてプロパティからメソッドまで、まったいらで入ってるんですが。
646デフォルトの名無しさん:05/02/17 20:05:59
MainFormから飛び出して表示できるPanelを作るとき、ぱっと思いつくのは以下のコードですが、
もっといい方法(本来そのために用意されているクラス)などがありましたら教えてください。

Form frm = new Form();
frm.FormBorderStyle = FormBorderStyle.None;
frm.ShowInTaskbar = false;
frm.TopMost = true;
frm.Show();
647デフォルトの名無しさん:05/02/17 20:25:20
とりあえずTopMost = trueは違うだろ。
Owner = thisか、Show(this)か。
648デフォルトの名無しさん:05/02/17 23:23:44
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=13400&forum=7

ってどうやんの?

C# 2003でWindows アプリケーションのプロジェクトを
作ってまってます。
649デフォルトの名無しさん:05/02/18 00:12:15

C#でスタンドアロン可能なソフトを作ることって不可能なんですか?
今までVB6.0だったので(ランタイムは必要でしたが)自分で作ったプログラムが
友人のPCでは動かないということが起きており結構困っています。
650デフォルトの名無しさん:05/02/18 00:24:33
友人に文句を言ってください
651デフォルトの名無しさん:05/02/18 00:32:02
.NETランタイムが必要なだけじゃん。
652デフォルトの名無しさん:05/02/18 03:18:51
Visual C# .NET Standard を買おうか考えているのですが
コントロールライブラリが作れないと書いてあってしょんぼりしてます

・Windows コントロール/Web コントロール プロジェクトの作成
http://www.microsoft.com/japan/msdn/vstudio/productinfo/featurelist.asp

Standard だとユーザーコントロールが作れないって事ですか?
VisualC++は作れるみたいなので悩み中です

再利用しやすいユーザーコントロールを作りたいのですが
これは Professional を買えと言うMSの陰謀ですか?
653デフォルトの名無しさん:05/02/18 07:14:49
>648
答え書いてあるじゃん
654デフォルトの名無しさん:05/02/18 09:50:13
>>652
子供の名前を使ってtheSpokeを買う




と言ってみるテスト
655デフォルトの名無しさん:05/02/18 09:52:38
C#と直接関係ないんでアレなんだすが、
VS,NETのIDEで作業してるときに、
クラスにインターフェースを継承させると、
自動的にインタフェースのメンバが付加されますよね?
それはいいんですけど、同時に#regionも付加されてしまうのが
わたし的にはウゼーんで、この機能をできれば無効に
したいのですが、そんな設定出来ますかしらん。
656デフォルトの名無しさん:05/02/18 09:56:56
>>652
何度も既出で少しごにょごにょすれば可だったと思う。
657デフォルトの名無しさん:05/02/18 10:08:07
>>656
いや、この場合RADで作成できないと言うのがネックだろ?
クラスライブラリの作成はStandardでもできるということらしいだし。

私は殆ど使わないのでどうでも良い機能だが。
658デフォルトの名無しさん:05/02/18 10:23:47
テンプレートがないといってるだけなので同じくProからテンプレートもってくれば使えると思われ。
デザイナがないかもしれないのではっきりとは言えないが。

どちらにせよ一から手で書く場合は作れるはず。
手間はそんなに変わらないと思うがなぁ・・・
659649:05/02/18 14:29:35
.net frameworkがインストールされていないPCで起動されたら
「.net frameworkをインストールしてください」
とかいうメッセージボックスをC#で出すことは可能ですか??

もし無理ならC++で起動プログラムを書いて、
.net frameworkがインストールされているかC++で調べて、もしもインストールされているようなら
C++の起動プログラムからC#で書かれた本体を起動するっていう方法にしたいのですが・・・
すれ違いですが、C++で.net framewrokがインストールされているか調べる方法ってありますでしょうか?
660デフォルトの名無しさん:05/02/18 14:38:24
661デフォルトの名無しさん:05/02/18 14:44:35
>>659
.NET Framework がインストールされているかどうかの確認方法
http://www.ailight.jp/blog/sha256/archive/2005/01/12/3667.aspx
662デフォルトの名無しさん:05/02/18 15:27:46
>>660-661
Thx!
663デフォルトの名無しさん:05/02/18 16:34:42
コンソールウィンドウを表示させないようにする方法ってあります?
ぐぐってもでてこないヽ(`Д´)ノウワァァァン
664デフォルトの名無しさん:05/02/18 17:14:08
csc /t:winexe xxx.cs
665デフォルトの名無しさん:05/02/18 18:36:30
>>659
ネイティブコードから.NETのVersionを調べるのは、CorBindToRuntimeExと
GetCORVersionを呼び出してみるという方法もありますが、
.NETのまったく入ってない環境ではどうなるかは試せてないです。
エラーコードか補足できる例外が戻ってきてれば使えると思います。
666デフォルトの名無しさん:05/02/18 19:53:41
test1クラスからtest2クラスのインスタンスを作成、
test2内のメソッドからtest1にあるフォームを新たに作成するメソッドをコールバックで呼ぶとモーダルダイアログにならない。

test1のフォームを新たに作成する関数
{
Form2 form = new Form2();
form.ShowDialog(this);
}

こんな感じなのだけど、この場合thisはtest2を指すのということでOK?
test1上のモーダルダイアログにしたい場合は、test2にtest1のインスタンスを渡してやらないダメってこと?

667デフォルトの名無しさん:05/02/18 20:08:17
>>666
文章がグダグダでひたすら把握しにくいな。
test1にあるフォームって何だ? test1の内部にネストクラスとしてForm2を定義してるのか?

> こんな感じなのだけど、この場合thisはtest2を指すのということでOK?

そりゃtest2の中で定義されてるメソッドではthisはtest2のインスタンスだろ。

> test1上のモーダルダイアログにしたい場合は、test2にtest1のインスタンスを渡してやらないダメってこと?

そう言う事になるな。
668デフォルトの名無しさん:05/02/18 20:29:05
>>666
すでに一行目から意味が分からないんだが・・・
669デフォルトの名無しさん:05/02/18 20:53:05
C#で簡単なサーバを作っているのですが、ソケット1本に対して1つのスレッドを
立てる形で実装しているのですが現状1700~1800本同時につなぐと
OutOfMemoryで接続が出来なくなります。
スレッド毎で使うメモリを増やすとつなげられる本数が減るのでプロセスで確保してる
メモリの問題かなと思うのですが、この使用できるメモリを増やす方法は
無いのでしょうか。
マシンとしては搭載メモリはまだかなり余裕があります。
タスクマネージャで見ると1プロセス50~60MBくらい食っているようです。
何かポインタでもいいので情報がある方がいらっしゃいましたら教えてください。
670デフォルトの名無しさん:05/02/18 21:05:32
質問です。
スレッドA・・・メインのスレッド
スレッドB・・・一通り処理をした後終了(自殺)する
の2つのスレッドがあります。
スレッドBから同時にフォームを何個か表示する必要があるんですが、
Show()で表示するとスレッドBが終了した瞬間に消えてしまいますし、
ShowDialog()だとそのフォームが閉じるまで処理が戻ってこないので
複数同時に表示することができません。
どうかお知恵をかしていただけませんか?
671デフォルトの名無しさん:05/02/18 21:19:22
>>670
BeginInvoke使ってUIスレッドでShow()を実行させれば?

>>669
……1700?
672デフォルトの名無しさん:05/02/18 21:41:26
>>671
スレッドBからフォームを表示するのであれば、Invokeする必要は無いのでは?

>>670
流れをもう少し詳細に書いてみてください、消すタイミングが謎です。
673デフォルトの名無しさん:05/02/18 21:54:25
>.666
>test1のフォームを新たに作成する関数

これが test1 クラスのメンバなら、その関数内での
this は test1 クラスのインスタンス。
674デフォルトの名無しさん:05/02/18 21:57:09
>>669
その設計は少々マズイと思いますが、
とりあえずThreadPoolの方を使うとどうなりますか?
675デフォルトの名無しさん:05/02/18 22:00:13
>>670
>>671の言うようにBeginInvokeでメインスレッドに通知してそっちで表示しても良いし、
物事が良くわかっていて、かつスレッドB側で表示したいのなら、自殺前にスレッドB
側でApplication.Run()してあげれば良かったと思う。
この場合フォームが全部閉じられたら自前でApplication.Exitするようにする必要が
あったような無かったような・・・
676デフォルトの名無しさん:05/02/18 22:17:40
>>672
スレッドBは複数回の一連の時間のかかる処理を繰り返します。
で、その一連の処理が一度終わるごとに新しいフォームを数秒間表示して結果を表示したいんです。

1.スレッドA(メインのFormのスレッド)

2.ボタンを押す

3.スレッドB開始

4.時間のかかる処理

5.結果を新しいフォームに表示→続きがある場合は4.へ

6.スレッド終了

という流れなんですが、
スレッドが終了すると表示する秒数が経過する前に消えてしまいます。
677デフォルトの名無しさん:05/02/18 22:33:24
>>676
単純にスレッド終了時にSleepで適当な秒数まったらOKでは?
678デフォルトの名無しさん:05/02/18 22:38:42
UIを持つスレッドをSleepさせるのはお薦めしない。
679デフォルトの名無しさん:05/02/18 22:40:13
>>677
すでにApplication.Run()でUI完了を待てと結論が出てるわけだが。
680デフォルトの名無しさん:05/02/18 22:43:36
>>679
意味不明なまでに必死だな、何者だよお前?
681デフォルトの名無しさん:05/02/18 22:44:34
>>677
すいません。大事なことを書き忘れてました。

1.スレッドA(メインのFormのスレッド)

2.ボタンを押す

3.スレッドB開始

4.時間のかかる処理

5.イベントを発生させてスレッドAに通知
↓↓↓
↓↓└→続きがある場合は4.へ
↓↓
↓└→→続きがなければスレッドB終了

6.スレッドAでイベント受信

7.結果を新しいフォームに表示

でした。
複雑ですが、よろしくおねがいします。
682デフォルトの名無しさん:05/02/18 22:49:59
7.結果を新しいフォームに表示
このフォームはどれですか?
メインのFormに表示するなら、メインにInvokeを使って通知する必要があります。
Bのスレッドで表示するなら、全てが終わった所でShowDialogでOKな気がします。
もし、そのFormが複数あるなら、複数のウインドウ全てが閉じるのを待つコードをスレッドの最後に入れることになります。
683デフォルトの名無しさん:05/02/18 22:55:08
>>682
全く別のフォームです。
6.で一回一回新しいフォーム(のインスタンスを作成して)表示したいんです。
684デフォルトの名無しさん:05/02/18 22:58:36
>>683
6の段階という事は、処理は全て終わった後になると思うので、1回だけだと思いますが(^^;
5の最後ですよね。
それなら、単純に生成したウインドウをArrayListか何かに登録させておいて、
全部完了までスレッドの最後にまてば良いかと思いますが。
685デフォルトの名無しさん:05/02/18 22:59:40
5.6.の解釈が間違ってるよ。
イベントを受け取るのはオブジェクト(Form)であってスレッド(スレッドA)ではない。
スレッドBが通知したイベントのハンドラを実行するのはやっぱりスレッドB。
//そのためにInvoke/BeginInvokeが存在するわけで。

だから6.でイベントハンドラにてShowDialogで問題なし。
686デフォルトの名無しさん:05/02/18 23:01:10
>>685 お前はエスパーか(藁
687デフォルトの名無しさん:05/02/18 23:16:25
>>685
そういうことですか!
ありがとうございました。

>>686
エスパーなのかもしれませんねw
ほんとに私の疑問に思っていたことの通りです。

もうひとつ質問なんですが、
例えば>>681の6.はスレッドBなんですよね?
ということはここから直接Formを操作するのはまずいってことですよね。
>>685氏のいうようにInvokeを使うべきというのは聞いたことがあるんですが、
実際にはどう使えばいいんですか?
また、直接操作するのは何がまずいんですか?
688デフォルトの名無しさん:05/02/18 23:49:11
BitmapをStreamに保存したり、Streamから作成する際、
Streamの途中から読み出したり、書き込んだりする方法ってないの?
Bitmap用にStreamを別に作成したり、2つのStreamの間でコピーするために
byte[]も用意しなければならなかったりして、面倒なんだけど…。
689デフォルトの名無しさん:05/02/19 00:04:32
>>687
ttp://dobon.net/vb/melma/dotnet25.txt

>>688
取りあえずPositionを事前にいじってみたらどうだと言ってみる。
何がしたいのか掴めないが。
690688:05/02/19 00:36:11
>>689
やりたいことは、1つのファイルの中に複数の画像データを保存すること。
Bitmapクラスでは、通常の「画像ファイル」への読み書き以外に、
Streamへの読み書きができるが、Positionが0から読み書きしてしまって
不便に感じている。
Positionを意図的に変えてやっても駄目。
いい方法ないかなと思って。
取り敢えずは、ファイル読み書き用のFileStreamに加えて、
Bitmapのデータを仲介させるMemoryStream、
並びに、これら2つのStreamを仲介させるbyte[]を使っているが、
コードが冗長になる上に、
実行時のパフォーマンスも低下させている。

当然あってもいいメソッドだと思うのだが…。
691デフォルトの名無しさん:05/02/19 00:42:53
System.Windows.Forms.Controlから継承したクラスを作ってGrpachicsを描画
したいのですが、画面より大きなサイズの描画領域のときにスクロールバー
を出したいのですが、スクロールバークラスのインスタンスをもつだけでよいの
でしょうか?
692デフォルトの名無しさん:05/02/19 00:50:40
>>691
僕の好みはSystem.Windows.Forms.UserControlのAutoScrollプロパティーをtrueにして
中にパネルとかを放り込んで、そこに書くのが好みかな。
693デフォルトの名無しさん:05/02/19 01:20:57
あの、すいません。
吹き出しの形したバルーンヘルプを出すにはどうすれば良いんですか?
694デフォルトの名無しさん:05/02/19 01:40:39
>>690
いや、あんまり普通じゃない。
Image.Saveは画像ファイルを作るのが目的なわけで、画像2つ分のファイルデータを並べたらそれはもう画像ファイルでなくなるから。
//tiffなら複数画像を収めるSaveAddメソッドがあるけどね。
//あと、リソースにしたいというなら別の解法があるけど。

試してはないけど、Streamを継承した、指定範囲だけを返す(操作できるようにした)ストリームバッファクラスを作ってみるとか。
695688:05/02/19 02:29:17
>>694
やりたいのは汎用の画像ファイルの読み書きではなくて、
画像データを内包した独自のフォーマットのファイル。
無圧縮のRGBのラスタデータでは無駄にファイルサイズが大きくなるので、
ラスタデータをPNGなりJPEGなりの圧縮された形で独自のファイルの中に取り込みたかったのである。
Streamクラス調べた方がいいのかな。
ということで、レスありがとう。
696デフォルトの名無しさん:05/02/19 03:37:35
文字列が空かチェックするとき、 string.Empty と
比較するより Length == 0 のほうがいいんでしょうか?
697652 :05/02/19 03:49:26
>>656
サンクス!過去ログ調べてみるよ

>>657
まあそんなに使わないんだろうけど
やっぱりコントロール作れると便利だしね
ライブラリに出来ればもっと(・∀・)イイ!!

>>658
あんがとー
テンプレート確保しればいいのか
698デフォルトの名無しさん:05/02/19 03:55:22
>>696
str == ""
これが一番自然だと思うがどうか。
699デフォルトの名無しさん:05/02/19 08:07:49
ぬるぽは空なのか?
700デフォルトの名無しさん:05/02/19 11:12:43
null
701デフォルトの名無しさん:05/02/19 12:00:31
class Form1
{
static void Main
{
Hoge obj = new Hoge();
obj.show(this);
}
}

class Hoge
{
public void show(Form1 fm1)
{
Form2 fm = new Form2();
fm.ShowDialog(fm1);
fm.Dispose();
}
}

大まかにはこんな感じのアプリを作ってみたが、Form2がモーダルにならない。どうしたものか。
702デフォルトの名無しさん:05/02/19 12:08:24
大まかすぎてコードが間違ってるが。
703デフォルトの名無しさん:05/02/19 13:48:14
ソフトウェアの自動アップデート機能を付けたいと思っています。
一応、単純なDLで十分なので
http://dobon.net/vb/dotnet/internet/downloadfile.html
こちらにある方法で実装してみました。

ただ、ダウンロードが完了したサイズはSystem.IO.FileInfoから毎秒ごとに取得できるのですが、
ダウンロードするファイルのサイズの取得方法がイマイチ解りません。
5MBほどのファイルなので、プログレスバーで進行状況を表示しないと
流石に不便かと思いまして・・・

どうか宜しくお願い致します。
704デフォルトの名無しさん:05/02/19 14:09:20
HttpWebResponse.ContentLength
HttpWebResponse.GetResponseStream
705デフォルトの名無しさん:05/02/19 14:18:46
あ、やっぱHttpWebRequestぢゃないと無理でしたか・・・
706デフォルトの名無しさん:05/02/19 14:20:50
もとい、HttpWebResponseでしたね
707デフォルトの名無しさん:05/02/19 14:42:33
>>689
よくわかりました。
本当にありがとうございました。

//Invokeを使うように修正したら心なしかレスポンスが良くなった感じがします。
708デフォルトの名無しさん:05/02/19 15:24:20
HttpWebRequestで10msecぐらいで連投とかすると(もちろんNewしてオブジェクト
生成している)
GetRequestStreamがnullになるんだな。どうすりゃいいべ?
709デフォルトの名無しさん:05/02/19 15:59:15
//Invokeを使うように修正したら心なしかレスポンスが良くなった感じがします。
うそーん(笑)
710デフォルトの名無しさん:05/02/19 16:07:24
だれかC#でSMTPサーバー作ってぇぇぇ!!
C#のSMTPサーバーが全然ないから参考にするものがないヽ(`Д´)ノウワァァァン
711デフォルトの名無しさん:05/02/19 16:10:51
>>710
やることは C++ 製の鯖でも Delphi 製の鯖でも etc.............. でも変わんないよ
コードの丸写しになるから C# のサンプル探すの止めたほうが
712703:05/02/19 16:37:40
>>703で質問した者です。
>>704さんの云うように
http://dobon.net/vb/dotnet/internet/webrequestsavefile.html
こちらの方法でプログラムを作ったのですが、動作のほうはするのですが
異常なくらいDLの速度が遅くなってしまいました。
タイマーで毎秒ごとにファイルサイズなどを確認している為だと思って、
その機能を消したのですが、単純なファイルのDLにしても毎秒20KBくらいしかでません。
System.Net.WebClientのDownloadFileを使うと普通に毎秒300KBくらいは出るのですが・・・

これは仕方がないことなのでしょうか?
713デフォルトの名無しさん:05/02/19 16:41:28
>>711

http://cdrtest.hp.infoseek.co.jp/cgi-bin/snup/src/VisualVision0048.txt

Perlではこんな感じになるんですが、C#に移植できませんでしょうか・・・
このスレの住民の方々の力量なら余裕なのでしょうが、
Socketとかも熟知していない人間なので・・・
714デフォルトの名無しさん:05/02/19 16:43:45
そりゃやり方がまずいだけ。

……って、なんでバイト単位で読み書きしてるんだ >dobonのサンプル
byte配列のバッファを使ったRead/Writeに書き直せば随分変わるはず。
バッファサイズは4kbyteくらいがいいぞ。
715デフォルトの名無しさん:05/02/19 16:44:34
>>712
遅い原因は、ReadByte を使っている事
Read を使ってまとまった量のデータを取得した方が早いよ
5MB 程度ならば、5kB ずつ取得すれば良いのでは?

それから、ダウンロード済みのサイズは取得した量から大まかに測れるから、それの方が良いかと
716デフォルトの名無しさん:05/02/19 16:49:35
>>713
perl よく分からんが、NET Framework には Net::SMTP モジュールに該当するのが無かったような気がする
(System.Web.Mail が使えるかもしれんが)

この際だから、SMTP プロトコル周辺も含めて勉強してみては?
717デフォルトの名無しさん:05/02/19 17:10:25
DOBONは オ㍗ル
718デフォルトの名無しさん:05/02/19 17:13:23
>>716
System.Web.Mailは流石に無理だろw

Perl最強説ヘ(゚∀゚ヘ)アヒャ(嘘
719716:05/02/19 17:21:43
>>718
本当だ。調べてみたら全然使えなかったすまぬ
720デフォルトの名無しさん:05/02/19 17:35:29
MouseMoveイベントを使わずにアプリケーション上のマウス座標が欲しいのですが
Point p = new Point(Cursor.Position.X - this.Location.X,
                   Cursor.Position.Y - this.Location.Y);
だとどうしても右下へずれてしまうようです。
うまくいく方法はありませんか?
721デフォルトの名無しさん:05/02/19 17:37:38
>>720
境界線なんかを考慮しないといけないんじゃないかな
722デフォルトの名無しさん:05/02/19 17:38:08
Point p = new Point(this.Location.X - Cursor.Position.X,
                   this.Location.Y - Cursor.Position.Y);

こうだった・・・。つまりクライアント領域の0,0を求めたいのです
723デフォルトの名無しさん:05/02/19 17:42:37
PointToClient
724デフォルトの名無しさん:05/02/19 17:47:02
>>721
>>723
ありがとう。めっさ素敵メソッドです。
725666:05/02/19 18:38:54
>>667
>>668

意味不明で申し訳ない。書き直してみた。
メインフォーム上から作成したスレッド上で新たにフォームを作りたい。
そのフォームはメインフォームのモーダルダイアログにしたいが、ただShowDialogするだけでは表示はするがモーダルになってくれない、ってこと。

メインフォームを表示しているスレッドと新たに作成したスレッドが別物なので、単純にShowDialogしただけではダメってことは何となくわかるのだが、
どうやって目的を果たせばよいのかが分からない。
726デフォルトの名無しさん:05/02/19 18:46:00
>>696
空文字のチェックは a.Length == 0 が一番速い。
null や同一インスタンスの場合は String.Equals(a, b) が一番速い。
別インスタンスの文字列の比較は a.Equals(b) が一番速い。
a == b は一番遅い。
727デフォルトの名無しさん:05/02/19 18:48:20
>>725
>>670-690辺りのと殆ど同じだなオイ。
メインフォームのInvoke使って、メインフォームのUIスレッド上でShowDialogすればいい。

>>726
そんなのがボトルネックになることなんてまずないと思うんだが。
ボトルネックにならない限り、str.Length == 0なんて直感的でないコーディングはどうかと思う。
728デフォルトの名無しさん:05/02/19 18:52:25
あんま関係ない話だけれども,Cで int a=123, b=456, c; の a, b を入れ替えるのには
a ^= b; b^=a; a ^=b; よりも c = a; a = b; b = c; の方が速かったよ
CPU は Pentium III
729デフォルトの名無しさん:05/02/19 18:52:50
>>726
String.Empty.Equals(a) ってのはどうだろうか
730デフォルトの名無しさん:05/02/19 18:54:54
>>728
あたりまえだw
731デフォルトの名無しさん:05/02/19 19:01:50
>>727
確かに。100万回繰り返してもたいした差がないな。
でもLength == 0ってそんなに非直感的かなぁ。
732デフォルトの名無しさん:05/02/19 19:28:28
>>731
気にしすぎだろ、どっちでも十分直観的、これが直感的でないというなら言う奴が池沼だよ。
733デフォルトの名無しさん:05/02/19 19:36:10
WindowsアプリケーションでListViewを使っています。
□←アイコン
x ←文字列 で
□xxxxxxx
□xxxxxxx
□xxxxxxx
□xxxxxxx
というようにある行だけをインデントさせたいんだけど
どうやればいいのでしょうか?
734デフォルトの名無しさん:05/02/19 19:38:27
>>733
インデントというか逆インデントというか
735デフォルトの名無しさん:05/02/19 19:38:48
あれ?うまくいかなかった。
[ ]←空白とみて下さい。
□xxxxxxxxxx
[ ]□xxxxxxxxxx
[ ]□xxxxxxxxxx
□xxxxxxxxxx
736デフォルトの名無しさん:05/02/19 19:44:46
>>735
ListViewItem には該当プロパティは無かった
独自に描画すれば何とかなるかもしれないけど、TreeView に切り替えた方がいいかもしれん
線なし・田なし、クリック時に縮小を禁止にすれば、それらしくなるんじゃないか?

それから、半角スペースは &  な
737デフォルトの名無しさん:05/02/19 19:45:33
う、&nbsp; だった
738デフォルトの名無しさん:05/02/19 19:51:19
>>736
アドバイスどうもです。
実際には
□xxxxxx AAA BBB CCC
という風にあとに列が続くんだけどそれも
TreeViewで実現可能ですかね?
739デフォルトの名無しさん:05/02/19 19:54:45
>>738
そいつは無理だわ

オーナードローで何とかすべし
740725:05/02/19 20:00:52
>>727
サンクス。Invokeを使ったところ問題なく動作した。確かに同じだった。
741デフォルトの名無しさん:05/02/19 20:02:50
>>739
オーナードローって自分でオーバーライドして作りこむってことですよね?
なんとかがんばってみます。ありがとうございました。
742669:05/02/19 20:16:03
>>674
ThreadPoolは使った事なかったのですが試しにやってみたところ
今の作りだと1プロセスの上限25というのに引っかかっちゃうみたいで
逆に接続数が減る形になってしまいました。
目標値としては2000人同時接続のサーバとして考えていたのですが
この規模になってくると確かに設計をしなおさないといけないようですね
743デフォルトの名無しさん:05/02/19 20:20:53
>>742
それだけの量を捌くのならば、鯖を複数台にした方が簡単かと思う
あと、どんな事をやりたいかによって変わるけど、接続後即切断とか
744デフォルトの名無しさん:05/02/19 20:21:18
スレッド1個だけにソケットでSelectして、メッセージ判断して
ガリガリ受信して計算すればいいんじゃね?
ネットワークゲームとかはそうやってやってるよ。スレッド2000個とか
恐ろしいことはしないですよ。マスタリングTCP/IPとか海外の.NETのネットワーク
プログラミング系の本にネタのってるから見てみぃや
745長文失礼:05/02/19 22:04:27
自分のPCで動作するSMTPサーバーを用いてメールを送信することができないか試行錯誤しています。
SMTPやTCPの勉強も兼ねて敢えてTcpClientにしようと思います
Telnetと同じように送りたいのですが、初心者故にどうもうまくいきません。
プログラムが起動されると自動的にSMTPサーバーに接続してListenerを別スレッドで開始します。
    tcpcl = new TcpClient();
    tcpcl.Connect("localhost", 25);
    strm = tcpcl.GetStream();
    trdListener = new System.Threading.Thread(new System.Threading.ThreadStart(Listen));
    trdListener.Start();
そのListenerのスレッドというのは
    String strmtxt;
    int blen;
    while(true)
    {
        while(true) 
        {
            byte[] bread = new byte[4096];
            blen = strm.Read(bread, 0, bread.Length);
            strmtxt = Encoding.ASCII.GetString(bread, 0, blen);
            if (blen < bread.Length)
            {
                break;
            }
        }
        Console.WriteLine(strmtxt);
    }
っとやってみたのですが・・・
746長文失礼:05/02/19 22:06:12
SMTPサーバーに送るのは
    byte[] bsend;
    bsend = Encoding.ASCII.GetBytes(txtSend.Text + "\n\n");
    strm.Write(bsend, 0, bsend.Length);
    strm.Flush();
というようにやっています。
こっちの方は間違いないと思うのですが・・・
747デフォルトの名無しさん:05/02/19 23:26:21
お前まだいたのか
748長文失礼:05/02/19 23:33:59
??
749デフォルトの名無しさん:05/02/19 23:39:40
気付いてない
750デフォルトの名無しさん:05/02/20 00:14:20
自分もSMTPを極めたいと思っています。
Googleとか面倒なので誰か手っ取り早く教えてください。
751デフォルトの名無しさん:05/02/20 01:55:25
stmp厨は多分ヘルプ代わりにここ使ってるんだと思われ・・・
752デフォルトの名無しさん:05/02/20 04:06:45
http://www.amazon.com/exec/obidos/tg/detail/-/1555583156/ref=ase_httpnetwoprog-20/002-0718551-0188000?v=glance&s=books
翻訳してスレに転載したらウケるかな?
1日20ページくらいならわりと楽にイケるけど。
753デフォルトの名無しさん:05/02/20 04:16:03
>>752
見たいとは思うけど著作権侵害。
やめておいた方が無難。
754デフォルトの名無しさん:05/02/20 07:22:06
<html><body>Hello</body></html>

↑こういうHTML文書をWebブラウザで開いたときに表示されるであろうイメージを印刷するにはどうしたらよいですか?
Processクラスで外部IE起動するのは無しの方向で。
755デフォルトの名無しさん:05/02/20 07:46:11
>>754
デバイスコンテキスト取得してBitmapに保存する。
P/Invoke使えばできましょう。
756デフォルトの名無しさん:05/02/20 12:49:15
>>755
外部起動は無しだって書いてあるジャン
757デフォルトの名無しさん:05/02/20 14:21:05
P/Invokeって外部起動なんだ
758デフォルトの名無しさん:05/02/20 16:26:47
ピンボケ
759デフォルトの名無しさん:05/02/20 17:42:13
EM_POSFROMCHARと同じことをC#で作るならみんなどうする?
760デフォルトの名無しさん:05/02/20 18:06:25
C#は関係ないと思うんだが。
761デフォルトの名無しさん:05/02/20 19:23:45
>>755
なんのDCを取得するのだ?
762デフォルトの名無しさん:05/02/20 23:07:50
Graphics.DrawStringを使った場合に文字列が画面に収まりきらない場合
どのようにスクロール処理をするのでしょうか?
Graphics.DrawImageであれば範囲描画ができるのですがどのように考えれば
いいのかGraphics.DrawStringの場合わかりません。
763デフォルトの名無しさん:05/02/20 23:10:45
SharpDevelop で,MAPI 使ったアプリケーション作れる?
764デフォルトの名無しさん:05/02/20 23:11:45
Graphics.Clip かな?

GetGraphics で取得した Graphics には最初から設定されているだろうから
別に気にしなくても良いかもしれないけど
765デフォルトの名無しさん:05/02/21 00:59:49
Formが元々内包しているScrollBarがの位置が変化した時のイベントがないような
気がするのですがみなさんはどのようにしているのでしょうか?
OnVScrollが見当たらないような気がします。
766デフォルトの名無しさん:05/02/21 06:48:45
気がする?
767デフォルトの名無しさん:05/02/21 07:05:40
>>762
MeasureStringであらかじめ大きさを調べておくとかどうかな
768デフォルトの名無しさん:05/02/21 07:12:59
>>765
.NET2.0でScrollableControlにScrollイベントが追加されるのでそれまでは涙をのんでWM_VSCROLL & WM_HSCROLL。
769デフォルトの名無しさん:05/02/21 21:25:39
DataGridでXMLの8000件(500KB)のデータを読み込むと表示まで40秒くらいかかるんですが
時間を短縮するコツみたいなものありますか?
770デフォルトの名無しさん:05/02/21 21:37:34
>>769
コード見てみないとな
771デフォルトの名無しさん:05/02/21 21:58:49
ASP.NETでソリューションを複数のプロジェクトから構成する時、
お互いのWeb.configを参照するような方法は無いのでしょうか?

相手側のプロジェクトを[参照の追加]で参照設に入れて、
相手側のWebコンフィグ読み込みクラスを呼びだしてみたのですが、
上手く読み出せません。
IConfigurationSectionHandlerを継承する方じゃなくて、
単純なConfigurationSettings.AppSettingsを使ってます。
772デフォルトの名無しさん:05/02/21 22:06:05
>>771
自分のweb.configの情報を公開するプロパティを作ればいいんじゃね。
773デフォルトの名無しさん:05/02/21 22:18:15
Code Projectが遅いのは仕様ですか?
774デフォルトの名無しさん:05/02/21 22:28:49
VS.NET2005の正式リリースって8月くらいかな?
775771:05/02/21 22:34:16
>>772

Web.config読み出すときに、下のようなコード使うんですが、
System.Configuration.ConfigurationSettings.AppSettings[キー]

これを公開するためのクラスを作って関数呼んでも、
値が取れないんです・・・

Web.configを読み込む関数から自作すれば、あるいはなのかも・・・
でも、Web.configってキャッシュとか良きに計らってくれるんですよね・・・
だから、関数自作するって言うのも・・・

正直、よくわかりません。
776デフォルトの名無しさん:05/02/21 23:19:05
ListViewでスタイルの設定がDetailのときの
ColumnHeaderのHeightをとる方法って誰かわかりませんか?
コンポーネントのヘッダ部分だけ使いたいんですけど
777デフォルトの名無しさん:05/02/21 23:38:49


おぉ神よ!罪深き我にC#を用いてパソコンのボリュームを変更する方法を享受して下さい!


っとふざけた言い方になってしまいましたが・・・どうかお願い致します。
778デフォルトの名無しさん:05/02/21 23:56:39
>>776
直接取れる方法はなかったと思う。
強引に行けばLVM_GETHEADERでハンドルとってGetWindowRect()やれば取れる筈。

ただ、ヘッダだけ使いたいのならヘッダーコントロールを作るべき。
779デフォルトの名無しさん:05/02/22 00:36:47
早いレスどもです。
ListViewが独自コンポーネントで流用して さっくり仕上げたかったんですけどね

>LVM_GETHEADERでハンドルとって
ちょっと、きれいじゃないみたいですね・・・

多少関連Ref 列ヘッダの順番を得る方法
http://backno.mag2.com/reader/BackBody?id=200411230600000000104516000
780デフォルトの名無しさん:05/02/22 00:36:49
>>777
「享受」してくださいって言われても・・・
781デフォルトの名無しさん:05/02/22 00:42:29
質問です。
ソフトで画像を作り出して、送信ボタンを押すと
同じフォルダにbanner.jpgというファイルを作り、それをSystem.Web.Mailで送信しようと思っています。
作った画像を保存するところまではできるのですが、どうも正常にメールを送信できないのです。
画像を添付するところを外すと正常にメール送信できますので、恐らく、banner.jpgというファイル名で保存したあとに
アクセス権みたいなものが残ってしまっていて、巧く添付できないのだと思っています。
一応、画像の保存は
    bmp.Save("banner.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
という方法で行い、直後に
    bmp.Dispose();
とやって開放してあげているのですが・・・
やはり、プログラム自体を再起動しないと無理なのでしょうか?
782デフォルトの名無しさん:05/02/22 00:43:36
>>777
そんなことするくらいなら、ユーザーにメッセージボックスで「ボリュームを大きくして下さい」とか
「ボリュームを小さくして下さい」なんて出した方がてっとりばやいさぁ!オイオイ
783デフォルトの名無しさん:05/02/22 00:48:03
>>781
FileStreamだかなんだかを開いて、そこにSaveしたあとCloseすると良いよ。
784デフォルトの名無しさん:05/02/22 00:52:56
>>781
正常に送信できないってのは具体的にどうなるの?
//Saveメソッドはファイルをクローズするところまできっちり面倒みてくれるよ?
785781:05/02/22 00:57:34
private Bitmap bmp = null;
~略~


bmp.Save(@"banner.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
bmp.Dispose();

System.Web.Mail.MailMessage mm = new System.Web.Mail.MailMessage();
System.Web.Mail.MailAttachment attachment;

//送信者
mm.From = "";
//送信先
mm.To = "";
//題名
mm.Subject = "掲載申請";
//本文
mm.Body = time.ToString();
//JISコードに変換する
mm.BodyEncoding = System.Text.Encoding.GetEncoding(50220);
//SMTPサーバーを指定する
System.Web.Mail.SmtpMail.SmtpServer = "";
//添付ファイルに追加
attachment = new System.Web.Mail.MailAttachment("banner.jpg");
mm.Attachments.Add(attachment);
//送信する
System.Web.Mail.SmtpMail.Send(mm);

というようなソースです。
786デフォルトの名無しさん:05/02/22 00:58:03
>>777
なんでわざわざふざけるの?

まあこの辺でも見ときな。
ttp://www.terra.dti.ne.jp/~vivas/delphi/mixerapi.html
787781:05/02/22 01:00:33
具体的に出るエラーは

CDO.Messageオブジェクトにアクセスできませんでした。

というものです。添付ファイルを全く別のファイルにすると正常に送信できますので…
788デフォルトの名無しさん:05/02/22 01:06:14
>>787
信用されてないようなのでもう一度書くけど(w
「FileStreamだかなんだかを開いて、そこにSaveしたあとCloseすると良いよ。」

こういう感じ↓
FileStream out_stream = new FileStream( out_file_name, FileMode.Create, FileAccess.Write);
out_bitmap.Save( out_stream, System.Drawing.Imaging.ImageFormat.Jpeg );
out_bitmap.Dispose();
out_stream.Close();
789781:05/02/22 01:23:11
>>788
あ!失礼しました!本当に申し訳ない・・・
早速試してみますね。
790781:05/02/22 01:36:28
やはり>>769さんのいう方法も試したのですが、結果は同様でした。
以前は、保存するためだけのソフトを別に動かして
保存ソフトを起動→保存→保存ソフトを終了→メールで送信
という無理矢理な方法をしていたんですが、やはり無理矢理なので。。。

試しに保存の方をメール送信とは別スレッドにしてみますね。
試行錯誤せねば・・・
791781:05/02/22 01:47:56
あ、申し訳ないというかなんというか・・・
単純にThread.Sleepで500ms眠らせたらOKでした。
おぉぉ!っと思い、200msにしてもOK、50msにしてもOK、
試しにThread.Sleepを外してみましたが、こんどはエラーが起きませんでした・・・・

一体なんだったんでしょう(涙)

本当に皆様、お騒がせ致しました。
792デフォルトの名無しさん:05/02/22 01:48:51
>>791
で。それで本当にバグ取れたと思ってんの?
793デフォルトの名無しさん:05/02/22 05:55:26
頼むから人命に関わるプログラムの開発にだけは関わらないようにしてくれ
794デフォルトの名無しさん:05/02/22 16:20:01
超同意
795デフォルトの名無しさん:05/02/22 19:57:43
単純に500mgの薬を投与したらOKでした。
おぉぉ!っと思い、200mgにしてもOK、50mgにしてもOK、
試しに投与を中止してみましたが、こんどは症状が起きませんでした・・・・

一体なんだったんでしょう(涙)
796デフォルトの名無しさん:05/02/22 20:26:15
>>795
想像妊娠
797デフォルトの名無しさん:05/02/22 20:27:45
Jpeg変換てのは同期処理じゃなかったけ。
798779:05/02/23 00:32:48
ListViewのヘッダコントロールを作ろうと思ったのですが。
FlowLayoutでButtonとSplitter並べていけば終わるのではと思ったのですが
FlowLayoutはないのでしょうか?
コントロールの上に、Unit := (Left (| Unit)?)
「Left := Button、|:= Splitter」 Dock.LeftとDock.Fillの入れ子にしていく
と線形リストにするのも変な気がするし、どうしようかなぁ。と思っています
いいお知恵はないでしょうか?
799デフォルトの名無しさん:05/02/23 01:02:40
>ListViewのヘッダコントロールを作ろうと思ったのですが。
SysHeader32クラスでコントロールを作れば一発
800デフォルトの名無しさん:05/02/23 11:44:21
WAVからMP3へ変換するには外部のDLLとか使わないといけないでしょうか?
使うとしたら商用OK&フリーのDLLとかありますか?
801デフォルトの名無しさん:05/02/23 12:13:57
>>798
Dock.Left で並べていけばよかったような気がする。
802デフォルトの名無しさん:05/02/23 16:23:48
803781:05/02/23 19:41:40
>>800
簡単な再生だけならWindowsMediaPlayerを追加するのが一番ラクダと思う。
804デフォルトの名無しさん:05/02/23 19:53:09
pictureboxを30個ぐらい並べて全てのpictureBoxのvisibleプロパティを
一斉に切り替えて表示/非表示を切り替えるWindowsフォームを作って
いるんですけど、visibleプロパティをfalseにした際、puctureBoxが一斉
に消えず、コードの上にある順にぞろぞろと消えていきます。
trueの場合は一斉に消えるんだけど。
  一斉に同時に消すにはどんな技を使えばいいか知ってる香具師いませんか?
 
805デフォルトの名無しさん:05/02/23 19:54:59
保存(S)
    ̄
こういうショートカットキーをボタンに設定するにはどうしたらいいのですか?
806デフォルトの名無しさん:05/02/23 19:56:49
保存(&S)
807デフォルトの名無しさん:05/02/23 20:07:07
>>804

「panel」使うとどう?
808デフォルトの名無しさん:05/02/23 20:38:45
>>804
FormのSuspendLayoutとResumeLayoutならどうか。
809デフォルトの名無しさん:05/02/23 21:39:51
CSV クラスを探していますがなかなかいいものが見付かりません。

要望としては、

・ダブルクォーテーション内のカンマを意識してくれる
・項目の数を指定しなくても適宜読み込んでくれる

このくらいでいいのですが…。何かよい CSV クラスを御存知であれば
URL を教えて頂けないでしょうか?

よろしくお願いします。
810デフォルトの名無しさん:05/02/23 21:46:54
>>809
何を見つけてどう不満だったのかね。
811デフォルトの名無しさん:05/02/23 21:53:52
参照設定されているバージョンよりも古いものをロードさせることって出来ませんか?
新しいものをロードさせる例は大量に見つかったのですが……
812809:05/02/23 22:02:23
>> 810

CSV の項目数をあらかじめ指定しなければならなかったり、
ダブルクォーテーションの中のカンマを無視して .split(",") 的な
パースしかしてくれなかったり、という事です。

具体的に何を見つけたかってのは、それを公開している方に申しわけないので
あえて書かないようがよいかと思いました…。

813デフォルトの名無しさん:05/02/23 22:06:45
自分で書けよそんな簡単なもん
814最凶VB厨房:05/02/23 22:09:01
れげっくす
815809:05/02/23 22:09:38
>> 813
がんばって書いたんですけど、速度がめっちゃくちゃ遅かったんですよ…。
ですので、コードを参考にしたくて何かよいコードはないかなと探してみたん
ですが、要望の事を行なえるコードがみあたらなかったもので…。

816最凶VB厨房:05/02/23 22:16:34
じょーたぃまっしん
817デフォルトの名無しさん:05/02/23 22:17:53
↑マジこわい
真性?
818最凶VB厨房:05/02/23 22:25:09
すとりんぶいぅでぁ
コワガリスキーってだれや?
はい、まさがです。
819デフォルトの名無しさん:05/02/23 23:35:11
>>815
StringBuilderを使ってますか?
これを使ってないことが文字列操作が遅い原因になってるケースが多いです。
820804:05/02/23 23:43:45
>>808 >>807
レスありがとうございます。
今、自宅で環境がないので、明日試してみます。
821779:05/02/24 00:26:14
ありがとうございます。>>799,801
FlowLayout普通にできたんですね。

SysHeader32を使うとXpでのExploreにおいての詳細表示のヘッダみたいなのが簡単にできるのかな
ヘッダコントロールで実現したいことは
スプリッタが動いているときにイベントが取れることと、
Columnの順番の取得(Reorderが終わったらイベント発行とかも)なんですけど。
・ ListViewを継承し、WinProcオーバーライドしてイベントをディスパッチ (それって、できるのか?)
・ 独自にButtonとSplitなどからがんばって作る (Exploreみたいにかっこよく作るのは大変そう)
・ SysHeader32を使ってがんばる (難しそう)

どれがいいのだろうか。。どうか、詳しい人お勧めを教えて下さい
822C♯しようかな:05/02/24 04:04:39
なんで改行は\\じゃなく\\\\なの?
823デフォルトの名無しさん:05/02/24 04:09:14
string s1 = @"一行目\r\n二行目\r\n";
string s2 = "一行目\\r\\n二行目\\r\\n";

エスケープの話じゃない?
824デフォルトの名無しさん:05/02/24 06:27:42
>>809
""内のカンマ許可、\,でカンマをエスケープして
csvファイルの1行を分割

Regex csvRegex = new Regex("[^,\"\\\\]*(?:(?:\\\\.|\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\")[^,\"]*)*,?", RegexOptions.Compiled);

private string[] SplitValues(string line) {
  MatchCollection mc = csvRegex.Matches(line);
  string[] values = new string[mc.Count - 1];
  for (int i = 0; i < mc.Count - 1; i++) {
    values[i] = mc[i].Value.TrimEnd(',');
  }
  return values;
}
825デフォルトの名無しさん:05/02/24 08:09:16
つかC#使ってみたけど、なんで中身がカラのプログラムがメモリを20MBも消費してるん??

使い物にならんだろ・・・
826デフォルトの名無しさん:05/02/24 08:12:20
じゃあ使わないでください
827デフォルトの名無しさん:05/02/24 10:29:33
まずカラのプログラム自体に意味がないし使い物にならんだろ
828デフォルトの名無しさん:05/02/24 11:14:54
ネイティブコードじゃないんだからさ・・・
829デフォルトの名無しさん:05/02/24 11:25:02
趣味でやるなら好きなもの選びんさい。
それから参考までに。

【C++】マイナーGUIツールキット
http://pc5.2ch.net/test/read.cgi/tech/1065627704/

【GUI】wxWidgets(旧wxWindows) その2【サイザー】
http://pc5.2ch.net/test/read.cgi/tech/1097524712/

[KDE/QT]QTについての疑問を教えあうスレ
http://pc5.2ch.net/test/read.cgi/tech/1047703594/
830デフォルトの名無しさん:05/02/24 17:24:54
超図解C#ルールブックってのに
>配列を返すプロパティは使用しない
>配列を返すプロパティは内部配列のコピーを返します。このためパフォーマンス上問題があります
って書いてあるんだけど、ほんと?
public IntPtr Ptr{get;}
public int[] Array{get;}
public int[] GetArray();
どれもint.MaxValue回繰り返して20秒程度で同じだったんだけど。
ReferenceEquals(target.m_testArray,target.Array)
もtrue返すし。
831デフォルトの名無しさん:05/02/24 17:38:34
>>830
それはクラスの設計上、
内部配列を返すプロパティは好ましくないので(値を外部から直接操作できるから)
通常はコピーを返す、って話じゃないのか。
832デフォルトの名無しさん:05/02/24 18:06:45
private class RootClass
{
private ArrayList fieldArray = new ArrayList();
public void Add(string fieldName
{
Item i = new Item(fieldName);
this.fieldArray.Add(i);
}

public struct Item
{
public Item(string fieldName)
{
this.FieldName = fieldName;
}
public string FieldName;
}
}

こんな感じのクラスを作り、((Item)fieldArray[i]).FieldName を
クラスの外で得たい場合はどうやればいいでしょうか?

RootClass rootItem = new RootClass();
rootItem.Add("a");
rootItem.Add("b");
rootItem.Add("c");

としたあとに rootItem[i].FieldName のように値の取得を行ないたいのですが
どのように書けばいいのかさっぱり…。
833デフォルトの名無しさん:05/02/24 18:13:40
>>832
> rootItem[i].FieldName

となるとインデクサだな。
インデクサはプロパティの一種で、
class A {
   public int this[int index] {
      get {return index;} //これは意味がないが
   }
}
みたいに記述すると
A a = new A();
Console.WriteLine(a[5]);
と使えるようになる。
834デフォルトの名無しさん:05/02/24 19:14:18
ArrayListにつっこんである構造体をアンボクシングで取りだしたモノの
値を修正してもArrayList そのものに入っている値は変化しないのですが
これは構造体の値を変更したらその構造体を再度ArrayListにつっこみ
なおすって事が必要なのでしょうか?

struct test { public int a; }

ArrayList ary = new ArrayList();
test t = new test();
t.a = 100;


ary.Add(t)

Test t1 = (Test)ary[0];
t1.a = 10000;

↑ではだめ。

Test t2 = (Test)ary[0];
t2.a = 20000;
ary[0] = t2;

835デフォルトの名無しさん:05/02/24 19:24:30
>>834
まあそれは正しいが、それは本当に構造体にすべきなのかってのは常に考えとかないとダメだぞ。
836830:05/02/24 19:45:40
>831
そういう意味なら納得だけど、
その本の例ではメンバの配列を直接返してるプロパティは悪くて、
メンバの配列を直接返してる関数はOKと書いてた
837デフォルトの名無しさん:05/02/24 21:28:55
ホームページの一部のテーブルだけを表示するプログラムを作っています。
たぶん、HttpWebRequestでページ丸ごとダウンロードして、
正規表現で<table>...</table>を切り出して、axWebBrowserに渡せばできると思うんですけど、
どうも、axWebBrowser.Documentプロパティーには代入できないみたいです。
こういう場合どうやってaxWebBrowserのデータを渡せばいいのでしょうか?
838デフォルトの名無しさん:05/02/24 21:51:57
>>837
about:blankにNavigateしてDocument.Writeで書き込む。
839デフォルトの名無しさん:05/02/25 02:13:02
>>838
できました。ありがとうございます。
IHTMLDocument2にキャストすることに気づかないで延々と悩んでしまっていました。
840デフォルトの名無しさん:05/02/25 09:43:10
抽象クラスでインターフェイスを統一させて、処理別に
クラスを呼び分けてます。
処理別だけど、共通して使いたい関数を作成するには
どうしたらいいんですか。
共通関数だけをまとめたクラスを作って、
使いたい場所で参照する、という形が一般的なんでしょうか
841デフォルトの名無しさん:05/02/25 10:39:32
>>840
ん?
抽象クラスなら実装を持つメソッドも定義できるけど?
842デフォルトの名無しさん:05/02/25 11:30:31
>>841
ありがとうございます。
抽象クラスに共通関数を書くのが、一般的なんでしょうか
843デフォルトの名無しさん:05/02/25 11:41:17
>>842
基底クラスで持つに相応しいメソッドなら基底クラスが持てばいい。
そうでないなら相応しいクラスに置いてそれを使えばいい。
844デフォルトの名無しさん:05/02/25 13:27:23
>>843
そうですか。ありがとうございます。
845デフォルトの名無しさん:05/02/25 23:11:55
#include
の代わりに継承使うのはいくないとおもう。
846デフォルトの名無しさん:05/02/26 04:25:13
リストボックスにコンテキストメニューを設定した場合、
右クリックでマウスポインタ直下を自動的に選択してくれないんだね。
左クリック(アイテムの選択)→右クリックをする必要がある。
どうにかならないかな?
847デフォルトの名無しさん:05/02/26 05:35:50
>>846
MouseDownイベントでコードから選択。
848デフォルトの名無しさん:05/02/26 07:06:36
テンポラリファイルの場所
http://www.atmarkit.co.jp/fdotnet/dotnettips/230tempdir/tempdir.html

「これらの環境変数は、通常Windowsのインストール時に自動的にセットアップされる。
もし、これら3つの環境変数がどれも設定されていなければ、
一時フォルダはWindowsディレクトリ(通常は「C:\Windows」)となる。」

C:\Windows\Temp じゃなかったのか!?
849デフォルトの名無しさん:05/02/26 07:51:05
850デフォルトの名無しさん:05/02/26 07:57:13
なにぃ?じゃ、環境変数設定してないと、
C:\Windows 以下にごみばら撒かれる可能性ありってことか。

とはいえ、通常 Administrator 権限で一般ユーザのプログラムが動いている
Windowsなら、何でもありだけどな。
851デフォルトの名無しさん:05/02/26 08:12:42
Visual Studioで時々、プロパティのインテリセンスがバグるんですけど。

例えば、クラスAでstring Propertyというプロパティがあって
他のクラスからみると補完の項目リストがPropertyじゃなくてget_Propertyってなるんですけど
どなたか知りませんか?対処法とか
852デフォルトの名無しさん:05/02/26 10:37:57
Visual Studio のインテリセンスで、列挙型(enum) が表示されないんですが
何か方法があるんでしょうか?

例えば public enum EnumFields.... とある classX にて、
そのクラスを参照している別のクラスで classX. とピリオドまで入力しても
その列挙型が表示されてきません。

ただし、インテリセンスに表示されないだけで、手で列挙のフィールドを
入力してやるとコンパイルは正常に通ります。

インテリセンスに表示されないととっても不便なのですが
何か方法があれば教えてください。
853デフォルトの名無しさん:05/02/26 12:19:41
DataGridクラスのスクロールバーを常時出現させる方法はないでしょうか?
困ったことに、DataGridを継承すればスクロールバーのプロパティメソッド
自体はあるのですが、ShowやVisibleを有効にしても出現しない困ったチャン
なのです。
854デフォルトの名無しさん:05/02/26 12:59:30
>>851
>>852
せめてVSのバージョンくらいは明記すべきだと思うが。
855デフォルトの名無しさん:05/02/26 16:18:09
TreeNodeはFullPathプロパティでフルパスで取得できますが、
その逆にフルパスからTreeNodeを取得することはできますか?
856デフォルトの名無しさん:05/02/26 16:36:32
フルパスをPathSeparator

Splitして調べていく方法しか知りません。
857デフォルトの名無しさん:05/02/26 16:37:04
(twintailで書くとたまに改行おかしくなるなあ)
858デフォルトの名無しさん:05/02/26 16:41:59
なにせ同じ階層に同じラベルのノードが存在しうるわけだからな。
859デフォルトの名無しさん:05/02/26 16:43:58
あるクラス(A)の持つ読み取り専用のデータ(B)をクラスとして公開すると
参照先で(B)が持つ(C)の内容を変更される可能性がある。
class A{
 private B dataB;
 public B DataB{ get{ return dataB; } }
}
class B{
 private C dataC;
 public C DataC{
 get{ return dataC; }
 set{ dataC = value; }
 }
}
クラス(B)のメンバであるクラス(C)も読み取り専用すればいいのだろうが、
そうするとクラス(A)でも変更できない。
解決策として、クラス(B)を構造体にして、
外部にはインスタンスをコピーしたものを公開する、という方法は
構造体の使い方として間違っている?
メンバをコピーするメソッドを書かなくていいし、
データが軽ければ複製の負荷もわずかだろうし。
860デフォルトの名無しさん:05/02/26 17:57:03
>> 854
すみません。
852 ですが、Visual Studio 2003 です。
アドバイスよろしくお願いします。
861デフォルトの名無しさん:05/02/26 18:01:30
>>860
良くあること。気にしない気にしない。
862デフォルトの名無しさん:05/02/26 18:07:22
簡単なUDPファイル転送ソフトをプログラムしております。
string fileURLは"C:\sample.jpg"などの送信するファイルの場所、
string filenameは"sample.jpg"などのように送信するファイル自体のファイル名です。
ReadFile()はバイナリファイルを読み込みバイト配列を返すメソッドです。

System.Net.Sockets.UdpClient udp = new System.Net.Sockets.UdpClient(自分のポート);
byte[] sendBytes = enc.GetBytes(ファイル名 + "?" + Convert.ToBase64String(ReadFile(fileURL), 0,ReadFile(fileURL).Length));
udp.Send(sendBytes, sendBytes.Length, 相手のIPアドレス, 相手のポート);

ファイルをバイナリで読み込み、Base64に変換後、ファイル名を添付して再びバイナリに変換して送信しています。
この方法だと、軽いファイル(数十KBくらい?)なら問題なく送信できるのですが、
重いファイルはバッファが一杯になってしまい、送信できません。
パケットに分けて送信するのでしょうが、イマイチ方法が思いつかなく・・・

宜しくお願い致します。
863デフォルトの名無しさん:05/02/26 18:11:45
>>852
854じゃないけど2003もってるので試してみた。現象現れず。

(TestA.cs)
namespace test
{
    public class TestA
    {
        public enum TestAEnum{maso, miso, muso, meso, moso};
        public TestAEnum m;
        (略)
    }
}

(Form1.cs)
namespace test
{
    public class Form1 : System.Windows.Forms.Form
    {
        (略)
        private void Form1_Load(object sender, System.EventArgs e)
        {
            TestA a = new TestA();
            a.m = TestA.TestAEnum.maso; //出たYO
        }
    }
}
864デフォルトの名無しさん:05/02/26 18:14:04
>>862
送信できません、ていうのはどういう現象が起こる?
何かエラーがでるってこと?
865デフォルトの名無しさん:05/02/26 18:16:27
つかファイルをUDPってのはどうよ。
866862:05/02/26 18:17:43
>>864
そうです。今、スクリーンショットを撮ってきます。
867862:05/02/26 18:20:26
http://visualvision.hp.infoseek.co.jp/cgi-bin/snup/snuplog/VisualVision0052.gif
こういうエラーです。

恐らく、10KBづつくらいに区切って送信すれば良いのでしょうけど、
その方法が思いつかなく・・・

素直にTCPを使えばよいのかもしれないのですが(汗;
868862:05/02/26 18:22:45
>>865
最初はTCPにするはずだったのですが、某有名なファイル共有ソフトもTCPからUDPに切り替えるとのことだったので、
試しにUDPで作ってみようとチャレンジしてみました。

TCPのファイル転送ソフトは@markITなどに参考となるプログラムがあるので…
869デフォルトの名無しさん:05/02/26 18:24:55
ダウソ厨か
死ねよ
870862:05/02/26 18:30:02
いや、単に仕組みに興味があっただけですよ、
871デフォルトの名無しさん:05/02/26 18:35:00
いいやお前からは犯罪の匂いがする。去れ
872862:05/02/26 18:37:32
犯罪って・・・
そもそも、UDPでファイル送信すらできない人間に大それたソフト作れるはずがないでしょうっとw
単に、UDPでファイルを送るだけなのに・・・

素直にTCP使うかなぁ
873デフォルトの名無しさん:05/02/26 18:40:49
作れない
ぢゃなくて
作りたいけど実力ぢゃ無理
ってことだろ?w

System.Net.Sockets.UdpClient udp = new System.Net.Sockets.UdpClient(自分のポート); 
byte[] sendBytes = enc.GetBytes(ファイル名 + "?" + Convert.ToBase64String(ReadFile(fileURL), 0,ReadFile(fileURL).Length)); 
udp.Send(sendBytes, sendBytes.Length, 相手のIPアドレス, 相手のポート); 

………
ループさせて分割しながら送信すればいいのに・・・
それが無理ならTCP使いなさい。そっちの方が良いぞ。

それにUDPなんて使う香具師いるのかと・・・
届く順番が入れ替わるかもしれんし、面倒きわまりないぞ。
874デフォルトの名無しさん:05/02/26 19:08:52
>>852
クラスライブラリのプロジェクトを作ってDLLを作成、xmlドキュメントも出力しておく。
そのDLLを参照する別のプロジェクトを開いているときに、DLLとxmlを更新するとインテリセンスは全く効かなくなる。
xmlを出力してないならDLLを入れ替えてもインテリセンスが効くが、当然コメントの表示はない。
ま、インテリセンスに表示されないだけでコンパイルとかは普通にできるから気にするな。
気になるならVisualStudioを立ち上げ直すが、参照設定を削除して設定し直すかあたりをすれば直るし。

それか、エディタの設定のパラメータヒントやインテリセンスを切っているとか?
パラメータヒントはオフにすることは多いけど、インテリセンスを切る必要はあんまりなさそうだけど。
875デフォルトの名無しさん:05/02/26 19:22:04
>873
それは(自分じゃ)作れないと等価だろう
876862:05/02/26 19:37:14
>>873
その分割して送信する方法を具体的にお願いできませんでしょうか??
877デフォルトの名無しさん:05/02/26 19:45:11
>>876
普通に一部を取る→送信って繰り返すだけぢゃないの?
詳しくないから分からないけど・・・
878デフォルトの名無しさん:05/02/26 19:47:42
ていうかほんとTCPにしとけってばさ。
879デフォルトの名無しさん:05/02/26 19:53:20
なんでわざわざUDP?
確実に相手にデータが届く保証ないのに。
880デフォルトの名無しさん:05/02/26 19:54:46
>>879
まて、UDP ってそこまで信頼性低かったっけ!?
881デフォルトの名無しさん:05/02/26 19:55:59
低いよ
882デフォルトの名無しさん:05/02/26 19:58:07
ping の応答率かそれ以下くらいじゃないかな
883デフォルトの名無しさん:05/02/26 20:01:01
UDPの方が柔軟性はあるから、TCPだとやりづらいことはUDPで良いと思うけど、
TCPが使えるならTCPが一番だと思うぞ、
>>862さんみたいな場合はまだ初心者のようだから(違ったらスマソ)なおさらTCPの方が良いと思われ。
某P2PソフトってShareでしょ?あの作者は糞だよ、ォ㍗ル

まぁUDPは早いけどねぇ、敢えてスピード重視でソフトを作るならUDPも悪くないと思うぞ。
884デフォルトの名無しさん:05/02/26 20:01:48


     お 前 ら は T C P 信 者 か … 


885デフォルトの名無しさん:05/02/26 20:04:56
>>884
ロスしても構わないデータ、あるいはリカバリの手間がかからないデータならUDPでいい。
でもファイルみたいな、それなりに大きくて、ロスを許すわけにはいかず、
整合性のチェックも難しい、なんてデータをUDPでやる気はおきんよ。
886デフォルトの名無しさん:05/02/26 20:12:43
うむ、昔、WinMXが流行っていたころやっていたが、たしかあのソフトもファイル交換はTCP、チャットはUDPって分けてたような・・・
887デフォルトの名無しさん:05/02/26 20:33:07
フォームの閉じるボタンが押されたときにタスクトレイアイコン化するように書いているんですが、
Form1_Closing()の中で
Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{

//タスクトレイアイコン化する処理

e.Cancel = true;
}

にしているんですが、
ttp://homepage3.nifty.com/midori_no_bike/CS/reference.html
ここをみるとe.Cancel=true;にしてはだめだと書いてありました。
どうやれば代替できますか?
888デフォルトの名無しさん:05/02/26 20:42:00
>>887
WM_CLOSEメッセージに応答する
889デフォルトの名無しさん:05/02/26 20:46:20
>>888
どうも
890デフォルトの名無しさん:05/02/26 20:53:06
むしろWM_QUERYENDSESSIONじゃないか?
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfmicrosoftwin32systemeventsclasssessionendingtopic.asp
WM_CLOSEだとアプリの終了とシャットダウンとを区別できないような。
891デフォルトの名無しさん:05/02/26 21:03:32
>>886
そう言えば確かポートを2つ空けていたな。
同じポートでTCPとUDPの両方同時通信ってやっぱ無理なのかなぁ
892854:05/02/26 21:24:06
>> 863
ありがとうございます。同じ事をしてみましたら、出ました。
あれ?と思い自分のプロジェクトを開いてみたらやはりインテリセンスに
出ません。

で、その列挙が定義してある DLL を参照する小さなプロジェクトを
作ってみましたがインテリセンスに出ます。

むー…。表示されない原因がわからない…。
893デフォルトの名無しさん:05/02/26 21:46:37
適材適所だろ
「TCP信者」とかアホかと・・・
894862:05/02/26 22:03:00
皆さんのご指摘通り、今度はTCPでファイルを送受信しようとしたのですが、
TCPを使ってもやはり重いファイルは送信できません。
http://cdrtest.hp.infoseek.co.jp/cgi-bin/snup/src/VisualVision0051.gif
このようなエラーです。

送信側ではファイルを開いてBase64でエンコード、これにファイル名と区切り文字として「?」を加えて一つのファイルにします。
つまり

            ファイル名+"?"+Base64でエンコード済みの送信ファイルデータ

という形式になるなります。これをバイト配列にしてストリームに乗せてあげてるのですが、
どうも受信側で逆処理、つまりバイト配列からデコードして、これをファイル名とBase64のデーターに分けます。
そしてBase64にエンコードされたデーターをデコードするときに上のエラーがでるんです。

やはり長さが原因だと思うのですが・・・
895デフォルトの名無しさん:05/02/26 22:08:52
>>894
C#みたいな便利な超高級言語から入るとこういう頭悪いことに
なるんだろうね
896デフォルトの名無しさん:05/02/26 22:21:23
とりあえずダウソ厨は板違い
897デフォルトの名無しさん:05/02/26 22:24:36
自作コントロールを作ってるのですが、
マウスクリックしている最中も
MouseHoverイベントを発生させるにはどーすればよいんでしょう?
898デフォルトの名無しさん:05/02/26 22:53:45
>>892
中間ファイルとか.suoファイルを一度消してみれば?
899デフォルトの名無しさん:05/02/27 00:38:48
ふと気になったんですが、WM_QUERYENDSESSIONとか
WM_CLOSEメッセージとかってEnumになってないのでしょうか?
みなさん、自分でWindows.hからコピペで作ってますか?
900862:05/02/27 00:39:38
すれ違いではないと思うんですが・・・
それにダウソ厨ではありませんよ、
901デフォルトの名無しさん:05/02/27 00:46:33
>>894
君のコーディングレベルが低いだけ。
902デフォルトの名無しさん:05/02/27 00:49:04
コーディングレベルというか、コンピュータそのものの理解が
ゼロなんだろう
903デフォルトの名無しさん:05/02/27 02:30:55
>>899
Enumにはなってなかったと思われます。
必要な分だけコピペなんじゃないかな。

>>900
とりあえずTCPとUDPの利点欠点を調べるところから
はじめてみたほうがいいんじゃなかろうか。
あとBase64がどんな変換方式なのか、とかも。
それでも動かないときにまた聞いてみれ。
904デフォルトの名無しさん:05/02/27 02:47:03
一定時間ごとにアプリの特定機能を実行させたい場合はどうしたらいいですか?
(計算ソフトを使ってて、30分毎に乱数を生成する必要があるんですが、「乱数生成ボタン」を自動的に押したい)
905デフォルトの名無しさん:05/02/27 02:51:07
>>904
直接コードをさわれない他のアプリに対してってこと?
906904:05/02/27 03:04:12
>>905
そうです。
907デフォルトの名無しさん:05/02/27 03:14:43
そのアプリの実装によって方法が変わる。
「乱数生成ボタン」が普通のWindowsが用意しているボタンの場合
ボタンのIDを調べて親ウィンドウにWM_COMMANDメッセージを送る。

SendMessage( 親ウィンドウハンドル, WM_COMMAND,
    ボタンID, ボタンウィンドウハンドル );
908デフォルトの名無しさん:05/02/27 03:18:01
>>906
.NETの範疇からは2/3くらいはみ出るが。
FindWindow/FindWindowExでボタンのウィンドウハンドルを見つけて、
PostMessageでBM_CLICKを送ってやる。
909904:05/02/27 05:38:49
すいません・・・ソフト自体に自動実行のオプションがありました・・・orz
910デフォルトの名無しさん:05/02/27 06:34:13
ああん
よく聞こえねえなあ
911デフォルトの名無しさん:05/02/27 14:04:45
まあ、正直TCP、UDP関係の本一冊ほしいんだけど、
C#だと簡単な本しか邦書だとみつからん・・
マニュアルとかわらんことしかかいてないもんなあ。
912デフォルトの名無しさん:05/02/27 14:05:26
あーあー
ぜんぜん聞こえない
913デフォルトの名無しさん:05/02/27 14:53:17
そもそもC#の邦書は初心者向けTIPSばっかり
ちゃんとしたことが知りたければ洋書読む気力が要る
914デフォルトの名無しさん:05/02/27 15:30:30
.NET Remotingを勉強しようと思いまして
http://www.unisys.co.jp/club/net_view/20030303.html に書いてあったコードを試したのですが、
同じプログラムからMyServerとMyClientを実行させるとうまくいかないんですけど
(MyServerを裏スレッドで実行した後で、MyClientを実行するようにした)
エラー「追加情報 : チャネル tcp は既に登録されています。」とでてしまいます。
なぜでしょうか、知ってる人いませんか

exeで2つ同時起動で、片方 Server実行、片方 MyClient実行ならばうまくいくのですが

915デフォルトの名無しさん:05/02/27 15:49:33
MyServerの裏スレッド実行よりも前にMyClientが実行されてるんじゃないの?
916デフォルトの名無しさん:05/02/27 15:50:45
>>911
高度なことは、ほかの言語の本で読めばいいんじゃね?
917デフォルトの名無しさん:05/02/27 15:52:26
具体的にはFormつくって
ボタンを二つ
1つにはServerStart、1つにはClientStartとしているので
それはないはずなんですが。。
で、二つ起動して、片方ServerStartをクリック、片方ClientStartをクリック
だとうまくいくんです。うーん。。
918デフォルトの名無しさん:05/02/27 16:03:58
ソース出せ
919デフォルトの名無しさん:05/02/27 16:50:56
急いでいるので過去ログも読まないまま失礼します。

C#で、テキストファイルを解析してその結果を画面に戻す処理で、読んだテキストファイルの中身が文字化けしてしまいます。
以下はテスト用に作ったソースです。

読み込んだテキスト文字列の内容(readBuff)によって、表示内容(ddt)を書き換えたいだけですが、以下のソースで、どこを変更すればいいでしょうか?

//表示用DataTableの作成
DataTable ddt = new DataTable("testdt");
ddt.Columns.Add(new DataColumn("name","".GetType()));
ddt.Columns.Add(new DataColumn("result","".GetType()));

//テキストファイル解析
string readBuff = "";

System.IO.StreamReader sr;
sr = new StreamReader( this.filename.PostedFile.FileName );

sr.BaseStream.Seek(0,SeekOrigin.Begin);
while( sr.Peek() > -1 )
{
    readBuff =(new ut)sr.ReadLine();
    if ( readBuff.IndexOf("ちゃねらー") != 0 )
    {
        ddt.Rows.Add(new string[]{ "ちゃねらーだった",readBuff } );
    }
    else
    {
        ddt.Rows.Add(new string[]{ "ちゃねらーじゃなかった",readBuff } );
    }
}
sr.Close();
920デフォルトの名無しさん:05/02/27 16:56:50
すみません。

×    readBuff =(new ut)sr.ReadLine();
○    readBuff =sr.ReadLine();

です。
921914:05/02/27 17:34:28
ちょっと長いですけど。>>918
//@class MyServer
//スレッド実行部分
private static void run(){
    TcpChannel channel = new TcpChannel(16383);
    ChannelServices.RegisterChannel(channel);
    RemotingConfiguration.RegisterWellKnownServiceType(
        typeof(MyRemoteObject),
        "MyRemoteObject",
        WellKnownObjectMode.SingleCall);

    Console.WriteLine("Listening for requests. Press Enter to exit...");
    Console.ReadLine();
}

//@class MyClient
//登録されたリモートオブジェクト呼び出し部分
public void Execute(){
    TcpChannel channel = new TcpChannel();
    ChannelServices.RegisterChannel(channel);
        MyRemoteObject remoteObject = (MyRemoteObject)Activator.GetObject(
        typeof(MyRemoteObject),
        "tcp://localhost:16383/MyRemoteObject");

    if(remoteObject != null)
        Console.WriteLine( remoteObject.ToString());
}
//class MyRemoteObject : MarshalByRefObject .....

>>919
エンコーディングではないですか?
つpublic StreamReader(Stream stream, Encoding encoding)
922デフォルトの名無しさん:05/02/27 17:39:37
乱数ならぬ乱文字列を生成する方法で良いと思われる方法はありますでしょうか?
今考えているのは乱数を発生して、暗号化すれば乱文字列として扱えると思うので・・・
C#はソースを見られてしまう為に出来ましたらソースを見られても大丈夫な文字列をランダムに生成したいのです。

どうかお願いします。
923デフォルトの名無しさん:05/02/27 17:45:18
乱数を暗号化することによって作成される文字列は
元の乱数よりも精度の劣る乱文字列になるんじゃないかな
暗号化という何らかの規則に基づいて変換されるわけなんだから
924デフォルトの名無しさん:05/02/27 17:46:57
>>922
> ソースを見られても大丈夫な文字列

ってのがよくわからんが。
シード値を指定せずに(引数無しで)作ったRandomインスタンスをどこかで使えば、基本的に再現不能になるんじゃないか。
925デフォルトの名無しさん:05/02/27 17:54:02
>>922
void get_random_string(char *buf, int len) {
 int a,b;
 while (len > 0) {
  a = rand();
  b = len < sizeof(int) ? len : sizeof(int);
  memcpy(buf, &n, b);
  buf += b; len -= b;
 }
}
926デフォルトの名無しさん:05/02/27 18:04:01
>>921
同じアプリケーションドメイン内でRegisterChannelを2回やっちゃダメ。
927デフォルトの名無しさん:05/02/27 18:17:47
>>921

919です。
初心者で申し訳ありません。エンコードは、何を設定したらうまくいくでしょうか?
デフォルトはUnicodeになっているようです。
UTF-8でも文字化けします。
928デフォルトの名無しさん:05/02/27 18:33:02
>>926
はげしくThanxです。
直りました。
ClientサイドではUriで指定されてるからRegisterChannelしなくてもわかるのか。。
仕組み今一わかってないみたいです。ご迷惑おかけしましたm(_ _)m

>>927
漏れに聞かれてもなぁ^^;
書かれたEncodingじゃないのかな。WindowsならS-JISとか
原因違ったらスマソ
929デフォルトの名無しさん:05/02/27 18:39:09
>>927
普通はShift_jisだな。
Encoding.GetEncoding("Shift_jis")とかEncoding.GetEncoding(932)とかOSの言語を日本語にしてるならEncoding.Defaultとか。

>>928
> ClientサイドではUriで指定されてるからRegisterChannelしなくてもわかるのか。。
Uriがどうこうじゃなくて、リモーティングはアプリケーションドメイン単位だから。
「このAppDomainはこのChennel使います」って宣言みたいなもんだと思えば。
930デフォルトの名無しさん:05/02/27 19:48:25
printdocument とか、printersettingsとかといった
印刷関係のソース等を細かく公開しているHPはございませんか?
教えてください。

というか、
private void prndoc_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics g = e.Graphics;
Image image = Image.FromFile(fileinfo[number].FullName);
Rectangle rect = new Rectangle();
// myrect(image, rect);
g.DrawImage(image, 0,0, 667, 970);

// g.DrawImage(image, rect.X, rect.Y, rect.Width, rect.Height);
if (++number < _listFilenames.Items.Count)
e.HasMorePages = true;
else
e.HasMorePages = false;
}
ものすごく動作がとろいです。
Microfoft PhotoEditorで印刷するよりも
ものすごくとろいです。なぜでしょうか。
931デフォルトの名無しさん:05/02/27 19:52:34
>>929

919です。
いけました!!
ありがとうございました。
932デフォルトの名無しさん:05/02/27 19:55:22
C#でDOSコマンド使いたい場合は?
VCなんかではSystem("cd")
でオケだったけど。。。
933デフォルトの名無しさん:05/02/27 20:10:12
>>932
System.Diagnostics.Process.Start("C:\\WINDOWS\\system32\\cmd.exe",arg);
934デフォルトの名無しさん:05/02/27 20:32:21
>>933
Thx!!!!
935デフォルトの名無しさん:05/02/27 22:28:45
VSのデザイナで、ボタン等に表示する絵を設定したとき、
それは実行ファイルにリソース(?)として埋め込まれるんでしょうか。

自動的にリソースファイルができるのかな、と思ってたんだけど、
それらしいものも見当たらない・・・。
936デフォルトの名無しさん:05/02/27 22:36:24
ソースに反映されてるよ。
937デフォルトの名無しさん:05/02/27 22:36:58
>>935
プロパティウィンドウのImageプロパティに設定した場合って事だよね。
hoge.csに対するhoge.resxファイルに埋め込まれるよ。
普段は#regionで隠されてる自動生成コードの該当コントロール部分を見てみればどういう風にリソースを呼んでるか分かるだろう。
938デフォルトの名無しさん:05/02/27 22:43:12
あちゃ、イメージファイルの事か、>>936は間違いです。
939デフォルトの名無しさん:05/02/28 02:00:04
CLIの資料てないですか?
仕様書とか
940デフォルトの名無しさん:05/02/28 02:13:18
ECMA-335
941デフォルトの名無しさん:05/02/28 02:47:00
何故にECMA?
JavaScriptと何か関係が?
942デフォルトの名無しさん:05/02/28 02:49:31
>>941
CLIの仕様もECMA標準になってますが
943デフォルトの名無しさん:05/02/28 02:53:22
>>941
ワラタ
944デフォルトの名無しさん:05/02/28 03:04:28
ん、ANSIみたいなもん?>ECMA
945デフォルトの名無しさん:05/02/28 03:15:35
ECMAはヨーロッパの標準化団体の名称。
946デフォルトの名無しさん:05/02/28 03:17:31
947デフォルトの名無しさん:05/02/28 03:22:37
ちなみに
ISOなら、C#→ISO 23270、CLI→ISO 23271だぞ。
ECMAなら、C#→ECMA-334、CLI→ECMS-335
まぁISOに登録されたって事は、JISになるのは時間の問題さね。
948デフォルトの名無しさん:05/02/28 03:28:16
番号まで覚えている奴きもい
949デフォルトの名無しさん:05/02/28 03:31:44
>>947
MSの中の人によるとJISになるらすぃよ。
950デフォルトの名無しさん:05/02/28 04:23:13
CLIの日本語の資料ないの?
951デフォルトの名無しさん:05/02/28 07:07:20
Datagridがソートされたのを知らせる方法はないでしょうか?
またソートされたとき内蔵してるDatatable(DataSet)を同じようにソートするにはどうしたらいいでしょう
952デフォルトの名無しさん:05/02/28 21:22:12
画像の指定範囲を切り取って保存するのはどうやったらいいですか?
たとえば、SXGA(1280*1024)サイズの画像の、200*200座標から350*350座標の部分を切り取るとか。
953デフォルトの名無しさん:05/02/28 21:27:28
サイズ指定でBitmap作ってGraphics.FromImageしてDrawImageしてSave。
954デフォルトの名無しさん:05/02/28 22:07:53
処理に負荷がかかる処理だと、(応答なし)となってしまいすが、
これはスレッドを使えばこの表示は出なくなるのでしょうか?

スレッドは関係ない場合(応答なし)の表示を出なくするには
どのようにすればよいでしょうか?
955デフォルトの名無しさん:05/02/28 22:10:32
>>954
非同期処理とかスレッド関連のドキュメントを読み漁ると吉
要はイベント処理スレッドを可能な限り早くスレッドループに戻してあげればいい
956デフォルトの名無しさん:05/02/28 22:11:43
>>955
スレッドループじゃなくてメッセージループでしたすまぬ
957デフォルトの名無しさん:05/02/28 23:15:54
タスクトレイに常駐アイコンを持つソフトを作っています(言い方が変??)
今まではメッセージボックスでユーザーに状況などを表示していたんですが、
やはりメッセージボックスは目障りだとのことで、WindowsMessengaerのように
タスクトレイの↑からポコって表示させたいと思っています。

ただ、タスクトレイの↑の場所というのはどのように取得すべきでしょうか?
画面の解像度、Windowsのテーマによっても違ってきてしまいますので・・・
958デフォルトの名無しさん:05/02/28 23:24:52
>>957
VBPowerPack でぐぐってみ
NotificationWindow っていうズバリなコンポーネントがあるから
959デフォルトの名無しさん:05/02/28 23:41:13
早速、有り難う御座いました。凄いモノがあるのですね・・・Googleで調べ損ねていました。

もう一つ質問なのですが、NotifyIconでタスクトレイにアイコンを作るとアプリケーションを終了後もアイコンが残ってしまいます。
アイコンの上にマウスを持って行くと消えるのですが・・・
960デフォルトの名無しさん:05/02/28 23:45:30
>>959
それが既定の動作。
Application.ApplicationExitイベント当たりでVisible=falseにする。
961デフォルトの名無しさん:05/02/28 23:58:09
追加です、早速NotificationWindowを使ってみました。
凄いですね、本当に便利です。
今までメッセージボックスで行っていた作業を全てこっちにしてしまおうかと・・・

アプリケーション終了後もアイコンが残ってしまう件ですが、
終了前にDisposeさせてもやはり無理でした。
引き続き宜しくお願い致します。
962デフォルトの名無しさん:05/03/01 00:03:20
>>960
あ!入れ違いになってしまいました。
さっそく試してみますね。
963デフォルトの名無しさん:05/03/01 00:52:02
Datagridがソートされたのを知らせる方法はないでしょうか?
またソートされたとき内蔵してるDatatable(DataSet)を同じようにソートするにはどうしたらいいでしょう
964デフォルトの名無しさん:05/03/01 00:53:46
DataGridやListBOXで改行なしで100kbのデータとか
入力されたときのエラー処理はみんなどうしてるのですか?
表示しようとするとGDI+エラー出るし、編集は重くて耐えられない
(Ahtlon64FXでも)何かいい知恵ください。
965デフォルトの名無しさん:05/03/01 01:53:44
>>963
> Datagridがソートされたのを知らせる方法はないでしょうか?

表示してるDataTableのDefaultViewのListChangedイベント。

> またソートされたとき内蔵してるDatatable(DataSet)を同じようにソートするにはどうしたらいいでしょう

DataTableはもとより行の並びに意味はないのでその質問はナンセンス。
表示されている行の並びを取得するなら
ttp://dobon.net/vb/dotnet/datagrid/currentrow.html

>>964
どうやったらそんな事態になるんだ? コントロールの選択を誤ってるとしか思えないが。
その列は非表示にしといて、別に用意したTextBoxに連結させるとかさ。

どうしても表示しなくちゃなんないのなら、
入力文字列のLengthがある程度大きくなったらSubstringすればいいんじゃない?
元文字列は列をキーにしたハッシュテーブルに格納するとか。
いずれ編集を直接行うわけにはいかないでしょ。ユーザからしても。
966名無しさん♯:05/03/01 07:43:40
次スレ立てますた。( ゚д゚)ノ
http://pc5.2ch.net/test/read.cgi/tech/1109630502/l50
967デフォルトの名無しさん:05/03/01 10:10:48

前から疑問に思ってたんすけど、>>960みたいなアプリケーションを終了するときのイベントって
どうやって記述するんでしょう?
VBをやっていたときはコンボボックスから普通に選択すれば勝手に入力してくれたんですが、
C#だと全然わかりませぬ・・・
968デフォルトの名無しさん:05/03/01 10:20:46
>>967

云いたいことがよくわからんのだが、
Application.Exit()
ぢゃだめなの?
969デフォルトの名無しさん:05/03/01 10:23:29
イベントぐらい自分の手で書けるようにしておけ。
970デフォルトの名無しさん:05/03/01 14:16:12
その書き方をきぼん
971デフォルトの名無しさん:05/03/01 14:20:40
969の口調をまねるなら、

それくらい自分で調べられるようにしておけ。
972デフォルトの名無しさん:05/03/01 14:33:58
>>970
Application.ApplicationExit +=
と書いてTabキー2回。
973デフォルトの名無しさん:05/03/01 15:18:18
>>972
激しくThx!
974デフォルトの名無しさん:05/03/01 16:18:53


リストビューの指定した位置にアイテムを追加する方法ってありますでしょうか?
Items.Addを使うとリストビューの末尾に追加されてしまうのです・・・
Insertを使うにしても、InsertできるのはStringなのでSubItemまでString[]で追加することができません。
Insertで追加したあとに、そのアイテムのサブアイテムを指定すると無論、存在すらしていないのでエラーを吐きます。

リストビューの指定したインデックスにアイテムをAddする方法をご存じの方がいましたら宜しくお願い致します。
975デフォルトの名無しさん
>>974
Insert(int, ListViewItem)すればいいじゃないか。