2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

ふらっとC#,C♯,C#(初心者用) Part55

1 :デフォルトの名無しさん:2010/02/04(木) 22:02:43
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

ふらっとC#,C♯,C#(初心者用) Part54
http://pc12.2ch.net/test/read.cgi/tech/1264236247/

関連スレ
C#, C♯, C#相談室 Part55(実質56)
http://pc12.2ch.net/test/read.cgi/tech/1260111240/

WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech/1261879110/

2 :デフォルトの名無しさん:2010/02/04(木) 22:08:52
ログ残しのために移動

A4 - ISO 216 用紙サイズ(210mm×297mm)
これと
[PaperSize A4 Kind=A4 Height=1169 Width=827]
これの関係は
1169/100*2.54=29.6926cm
ということなので
{X=13.33333,Y=11.66667,Width=800,Height=1137.667}
これのX=13.33333も
13.33333/100*2.54=0.338666582cm

まあ5mmじゃなく3mm程度ずれてる計算?
プリンターが古かったりすると多少ずれるかもしれないし

3 :デフォルトの名無しさん:2010/02/04(木) 22:26:18
>>1
ありがとうございました。
久しぶりにスレ立てしたらこのざま・・・

>>2
ありがとうございます。
全ての謎がとけました。^^

4 :デフォルトの名無しさん:2010/02/05(金) 00:10:40
PrintPreviewControl の AutoScrollOffset
ってどういうときに設定するの?msdn読んでも分かりません。

5 :デフォルトの名無しさん:2010/02/05(金) 00:17:21
AutoScroll有効にしたScrollableControlの子になったときに使われる
のでまあ気にする必要なし
基底のControlが持ってるのを引き継いでるだけ

6 :デフォルトの名無しさん:2010/02/05(金) 00:34:52
指定ディレクトリにサブディレクトリが存在するかどうか調べる方法はありませんか?
Directory(Info).GetDirectories だとエントリが多いと時間がかかるので、なるべくO(1)に近いものがいいんですが

7 :デフォルトの名無しさん:2010/02/05(金) 00:46:40
ないね

8 :デフォルトの名無しさん:2010/02/05(金) 00:47:40
標準ライブラリには存在しない
Win32APIのFindFirstFile/FindNextFileとか

9 :デフォルトの名無しさん:2010/02/05(金) 00:49:54
ないお

10 :デフォルトの名無しさん:2010/02/05(金) 00:56:26
>>7-9
レスありがとうございます
FindFirstFileEx も少し試してみたんですが、ディレクトリのみ取得するオプションは未実装でした。
結局ディレクトリとファイルを同時に列挙することになるので、ファイルのみが大量にある
ディレクトリだと逆に遅くなりそうな気もしますが、もう少し調べてみます。

11 :デフォルトの名無しさん:2010/02/05(金) 01:00:24
>指定ディレクトリにサブディレクトリが存在するか
ただ調べるだけなの?

12 :デフォルトの名無しさん:2010/02/05(金) 01:02:28
「逆に遅くなる」ことはないよ
GetFilesもGetDirectoriesも内部じゃFindFirstFile使ってるんだから
まあ実装の上手い下手の差は出るかもだが

13 :デフォルトの名無しさん:2010/02/05(金) 01:03:44
( ^ω^)

14 :デフォルトの名無しさん:2010/02/05(金) 01:04:52
そもそもNTFSとかのファイルシステム上O(1)とかって可能なのか?

15 :デフォルトの名無しさん:2010/02/05(金) 01:07:25
近くってんだからなるべく少なくでええんじゃないか

16 :デフォルトの名無しさん:2010/02/05(金) 01:11:43
B+木でO(1)達成できたらすげーよ
チューリング賞取れるよ

17 :デフォルトの名無しさん:2010/02/05(金) 01:14:39
メモリ上にフォルダ階層のキャッシュとか置く機能はないの?

18 :デフォルトの名無しさん:2010/02/05(金) 01:18:56
実現可能な範囲で一番早いのはやはりFindFirstFile系列でディレクトリ見つけたらリターンだろ
ディレクトリとファイルはファイルシステム上のオブジェクトとしては区別されてない
ディレクトリは”ディレクトリ属性を持っていて下層ディレクトリへのリンクをデータに持ってるファイル”だから
どちらかだけを列挙っていうのはできない

19 :デフォルトの名無しさん:2010/02/05(金) 01:48:00
>>14
ディレクトリがファイル/ディレクトリを含むかどうかのフラグを持つファイルシステムを作ればO(1)

20 :デフォルトの名無しさん:2010/02/05(金) 10:17:09
ファイル名の前に@を書くのはどうしてなんでしょうか?
いつも書いていませんが、なんとかなっていますは。

string program = @"C:\Program Files\Internet Explorer\IEXPLORE.EXE";

21 :デフォルトの名無しさん:2010/02/05(金) 10:19:43
\の意味が変わるから

22 :デフォルトの名無しさん:2010/02/05(金) 10:25:35
>>20
お前Cもやったことないのか?
初心者は帰れ

23 :デフォルトの名無しさん:2010/02/05(金) 10:32:51
>>20
文字列をあらわす ""の中の文字の扱いが若干変わるのが@の有無なんですよね

verbatim文字列(ページの最後の方)
http://www.atmarkit.co.jp/fdotnet/csharptips/010string/010string.html

24 :デフォルトの名無しさん:2010/02/05(金) 10:33:31
初心者用のスレなのに(笑


25 :20:2010/02/05(金) 10:37:20
なるほど。
確かに\\を2つ書いてませんね。
ちなみに初心者ではありませんよ。
Windows2.0の時代からSDKつかって苦労してプログラム作っていますからね。
いや、でもC#は1月目の初心者です。
生意気言ってゴメンナサイ( ・ω・)y─┛〜〜

26 :デフォルトの名無しさん:2010/02/05(金) 10:37:43
日本語では公式には逐語的文字列という
古い記事だから仕方ないか

27 :23:2010/02/05(金) 10:38:55
>Windows2.0の時代からSDKつかって苦労してプログラム作っていますからね。
>いや、でもC#は1月目の初心者です。
>生意気言ってゴメンナサイ( ・ω・)y─┛〜〜
一言多いw

顔見えないので若い初心者です〜ぽく振舞っておけばいいのに

28 :デフォルトの名無しさん:2010/02/05(金) 10:40:36
ファイルのパスくらいならどちらでもいいが、正規表現は@がないとつらい。

29 :デフォルトの名無しさん:2010/02/05(金) 10:42:22
便利なんだけど"を""に置換しないといけないのがうざい
"をそのまま使えるように@"〜"@とかクォーテーションを変えてほしかった

30 :デフォルトの名無しさん:2010/02/05(金) 10:43:34
>>28
確かにw
正規表現をソースに埋めるのはめんどくさいよね

>>29
まあこの手の回避策はどうしてもねえ

31 :デフォルトの名無しさん:2010/02/05(金) 11:10:05
フォームにテキストボックスを配置して、そこに入力された文字列が
ピクチャーボックスに連動して表示されるように

private void textbox1_TextChanged(object sender, EventArgs e)
{
  //PictureBox1のGraphicsオブジェクトを取得
  Graphics g = picturebox1.CreateGraphics();
  //フォントオブジェクトの作成
  Font fnt = new Font("MS UI Gothic", textbox1.Font.Size);
  //文字列を位置(0,0)、青色で表示
  System.Windows.Forms.TextRenderer.DrawText(g, textbox1.Text.Trim(), fnt, new Point(0, 0), textbox1.ForeColor);
  //リソースを開放する
  fnt.Dispose();
  g.Dispose();
}

とサイトを参考に作ってみたのですが、このままではテキストボックス
の文字を消した時が上手く反映させることができませんでした。

書き込む直前に.imageをnullでクリアすることで、その都度テキストを
新規に書き込めるかと考えたのですが、この方法だとピクチャーボッ
クスが最後空白になってしまいました。

他にも何か方法はあるのでしょうか?

32 :デフォルトの名無しさん:2010/02/05(金) 11:23:22
textboxにフォーカスがある間はタイマーを起動して一定周期で
そのロジック呼び出すとか?

もっと負荷の少なそうなのありそうだけど思いつかん

33 :デフォルトの名無しさん:2010/02/05(金) 11:27:49
picturebox1は背景にイメージを使ってるの?
そうでなければ塗りつぶせばいいはず。
g.Clear(pictureBox1.BackColor);

34 :デフォルトの名無しさん:2010/02/05(金) 11:36:11
Paintイベントに書いて
TextChangedではInvalidateするだけにする

35 :デフォルトの名無しさん:2010/02/05(金) 11:44:31
>>32>>33
レスありがとうございました。
>g.Clear(pictureBox1.BackColor);
こちらの方法で上手く動作させることができました。

>picturebox1は背景にイメージを使ってるの?
ピクチャーボックスに文字を入れるにはどうするかを調べて、サイト
を参考にしてたため、背景をどうするか等を考えていませんでした。

36 :デフォルトの名無しさん:2010/02/05(金) 11:44:53
private void textbox1_TextChanged(object sender, EventArgs e)
{
  //PictureBox1のGraphicsオブジェクトを取得
  Graphics g = picturebox1.CreateGraphics();

  //バックカラーで塗りつぶすImageがあった場合は考慮してない
SolidBrush b = new SolidBrush(pictureBox1.BackColor);
g.FillRectangle(b, pictureBox1.ClientRectangle);

  //フォントオブジェクトの作成
  Font fnt = new Font("MS UI Gothic", textbox1.Font.Size);
  //文字列を位置(0,0)、青色で表示
  System.Windows.Forms.TextRenderer.DrawText(g, textbox1.Text.Trim(), fnt, new Point(0, 0), textbox1.ForeColor);
  //リソースを開放する
  fnt.Dispose();
  g.Dispose();
}

37 :デフォルトの名無しさん:2010/02/05(金) 11:45:07
さて一服しようぜ( ・ω・)y─┛〜〜

38 :デフォルトの名無しさん:2010/02/05(金) 11:50:18
g.Clear(BackColor);

39 :デフォルトの名無しさん:2010/02/05(金) 11:52:12
( ・ω・)y─┛〜〜.Clear(BackColor);

おかしいなあぼーんされない

40 :デフォルトの名無しさん:2010/02/05(金) 11:53:38
textbox1と出力するIDEがあるのか
VC#2008EEだとtextBox1なんだが

41 :デフォルトの名無しさん:2010/02/05(金) 12:00:04
Paintイベントにも何か書かないと、他のウインドウの後ろにしたときに消えてしまうな。
もしかしてAeroだと消えないのかな?


42 :デフォルトの名無しさん:2010/02/05(金) 12:20:13
Aeroでも消えるよ
Paintイベントに描画処理書いて、textBox1_TextChangedで再描画させればおk

43 :デフォルトの名無しさん:2010/02/05(金) 12:25:33
>>42で?( ・ω・)y─┛〜〜

44 :デフォルトの名無しさん:2010/02/05(金) 14:12:23
ソフトを立ち上げた時、前回に終了した時に開いていたメニューの再現をさせたいんですけど、どうしたらよいんでしょう。
メニューをクリックした時にToolStripMenuItemのインスタンスを覚えさせておけば再現できることがわかりましたが、どうやって保存したらよいのかわかりません。

45 :デフォルトの名無しさん:2010/02/05(金) 14:19:26
>>44
XMLでもいいし昔ながらのiniファイルに書き出した文字列でもいいし
そういう形で保存しておいて、起動の際にそれを読み直してコントロールの設定を行う

46 :デフォルトの名無しさん:2010/02/05(金) 14:26:26
>>44
「XML 直列化 」でググれ
インスタンスの値をまるごとXMLで読み書きできるのがある。

47 :デフォルトの名無しさん:2010/02/05(金) 14:30:12
>>46
シリアライズそのものは簡単なんだけど既存のコントロールってこれにかけられないよね?
http://dobon.net/vb/dotnet/file/xmlserializer.html

48 :デフォルトの名無しさん:2010/02/05(金) 14:35:41
コントロールはやったことないわ・・・すまん。
できなければ必要なプロパティだけをクラス化して、
それを読み書きすればいいと思う。


49 :デフォルトの名無しさん:2010/02/05(金) 15:32:32


50 :デフォルトの名無しさん:2010/02/05(金) 15:43:53
20年選手で文字リテラルすっとばしてて何の疑問ももたないアホはひさしぶりに見た

51 :デフォルトの名無しさん:2010/02/05(金) 15:47:06
ピクチャーボックス上にあるテキストボックスの背景を透過にする方
法はあるでしょうか?

.backcolor=Color.Transparentとすればピクチャーボックス等は透過
にできるのですが、ControlStyles.SupportsTransparentBackColorス
タイルを適用しなくてはならないとありました。
テキストボックスではTransparentをサポートしていないとエラーが出
たので適用していないとわかったのですが、適用する方法がわからず
にいます。

52 :デフォルトの名無しさん:2010/02/05(金) 15:47:51
「サポートしていない」の意味は分かるかな?

53 :デフォルトの名無しさん:2010/02/05(金) 15:50:13
オーナードローできるならそこでARGB指定で透過色で塗りつぶすとかできなかったっけ?

54 :デフォルトの名無しさん:2010/02/05(金) 15:52:05
Paintすらないのなw

55 :デフォルトの名無しさん:2010/02/05(金) 15:55:20
ビジュアル的にうんぬんしたいならWPFに移行しちゃえよ

56 :デフォルトの名無しさん:2010/02/05(金) 16:15:37
>>52
.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
となっていないので、そのエラーが出たのかと思ってしまいました。
もともとダメという事だったんですね。

>>33さんに教えていただいた方法でテキストの文字列をピクチャーに
きれいに反映させる方法ができたのですが、それを>>51の方法で透過
にしたんです。
しかし子のピクチャーボックスを動かすと黒く塗りつぶされてしまう
という現象が起きました。

g.Clear(pictureBox1.BackColor);
の部分にColor.Transparentを入れたかったのですが、.Clearは色しか
受け付けてくれなくて悩んでいたんです。
そこでピクチャーではなくテキストを使えば解決できるかと思ったの
ですが

57 :デフォルトの名無しさん:2010/02/05(金) 16:31:10
http://blogs.wankuma.com/umebayashi/archive/2007/02/15/62360.aspx
ここの方法でバックカラーにアルファ付きを使えたんだが(たぶん大丈夫)
でもそのさらに後ろに何か居てそいつが描画してるのでうまくいかなかった

58 :デフォルトの名無しさん:2010/02/05(金) 16:45:27
親のピクチャーボックスには画像を表示させてるの?
その画像はImageプロパティに設定させているの?
BackGroundImageプロパティに設定している場合
BackGroundImageLayoutは何に設定しているの?

59 :デフォルトの名無しさん:2010/02/05(金) 16:48:31
親のピクチャーボックスには画像を表示させてるの?
その画像はImageプロパティに設定させているの?
BackGroundImageプロパティに設定している場合
BackGroundImageLayoutは何に設定しているの?

60 :デフォルトの名無しさん:2010/02/05(金) 16:57:08
>>57
ありがとうございます。読んでみます。

>>58
ArrayList files = new ArrayList();
と変数を宣言しておいて、ここに画像ファイルのパスが入るように
なっています。

これを
親ピクチャー.Image = Image.FromFile(files[0].ToString());
のようにして親に移しています。

61 :デフォルトの名無しさん:2010/02/05(金) 17:04:25
>>55
やだやだやだ〜

62 :デフォルトの名無しさん:2010/02/05(金) 17:18:25
ソフトは見た目が9割だからな( ・ω・)y─┛〜〜

63 :デフォルトの名無しさん:2010/02/05(金) 17:23:45
こんにちは。
xmltext
<result>
<words>
<word>クワガタ</word>
<word>オオクワガタ</word>
<word>メダロット</word>
<word>ミヤマクワガタ</word>
<word>ヒラタクワガタ</word>
<word>ノコギリクワガタ</word>
<word>パラワン島</word>
<word>ルイスツノヒョウタンクワガタ</word>
</words>
</result>




64 :デフォルトの名無しさん:2010/02/05(金) 17:25:10
List<string> lists = new List<string>();
<?xml version="1.0" encoding="UTF-8" ?>
XDocument xdoc = XDocument.Parse(xmltext);
var query = from result in xdoc.Root.Elements()
select result.Element("word").Value;

foreach (var q in query) {
lists.Add(q);
}

とすると、
クワガタ
オオクワガタ
メダロット
ミヤマクワガタ
ヒラタクワガタ
ノコギリクワガタ
パラワン島
ルイスツノヒョウタンクワガタ
をlistsに入れられると思ったのですが、クワガタしかはいりません。
どこがまずいでしょう?
ご指摘お願いします。


65 :デフォルトの名無しさん:2010/02/05(金) 17:39:08
> var query = from result in xdoc.Root.Elements()
> select result.Element("word").Value;
xdoc.Rootがresult要素でそのElementsはwords要素
words要素を列挙してその中のword要素を取り出すんだからクワガタだけだろ
word要素を列挙してないんだから

66 :デフォルトの名無しさん:2010/02/05(金) 17:39:54
foreach (var q in xdoc.selectNodes("/results/words/word")) {
lists.add(q.value);
}

67 :デフォルトの名無しさん:2010/02/05(金) 17:41:58
xdoc.Root.Elements()ってなんだかわかってる?

68 :デフォルトの名無しさん:2010/02/05(金) 17:51:12
前スレで専ブラの話が出てたけど
書き込むときってどうやるの?

69 :デフォルトの名無しさん:2010/02/05(金) 17:55:11
cgiにリクエスト投げるだけだろ
てか、スレチだからここで聞くな

70 :デフォルトの名無しさん:2010/02/05(金) 17:55:19
ググレカス

71 :デフォルトの名無しさん:2010/02/05(金) 18:21:50
>>60
画像を親ピクチャーのImageではなくBackGroundImageに設定する。親ピクチャーボックスをparentPBとすると

別解その2
Point mPos = Point.Empty;
Rectangle vtb = new Rectangle(0, 0, 100, 20); // 仮想テキストボックス
private void parentPB_MouseDown(object sender, MouseEventArgs e)
{
if (!vtb.Contains(e.Location)) return;
mPos = e.Location;
mPos.Offset(-vtb.Location.X, -vtb.Location.Y);
Point p = this.PointToScreen(parentPB.Location);
p.Offset(e.Location.X - vtb.Location.X, e.Location.Y - vtb.Location.Y);
Cursor.Clip = new Rectangle(p, new Size(parentPB.Width - vtb.Width, parentPB.Height - vtb.Height));
}
private void parentPB_MouseMove(object sender, MouseEventArgs e)
{
if (mPos == Point.Empty) return;
vtb.X = e.X - mPos.X;
vtb.Y = e.Y - mPos.Y;
parentPB.Invalidate();
}
private void parentPB_MouseUp(object sender, MouseEventArgs e)
{
Cursor.Clip = Rectangle.Empty;
mPos = Point.Empty;
}
private void parentPB_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawRectangle(Pens.Yellow, Rectangle.Round(vtb));
e.Graphics.DrawString(textBox1.Text, textBox1.Font, new SolidBrush(textBox1.ForeColor), vtb.Location);
}

72 :デフォルトの名無しさん:2010/02/05(金) 18:23:07
なんかすでにこのスレのレベルじゃないところの話になってるな
中級スレあったっけ?

73 :デフォルトの名無しさん:2010/02/05(金) 18:24:22
>>68
http://cc3.org/p2Writer/
こういうものがあってだな

Windows + .Net Framework 2.0
ということらしいんだわ

ソースの配布はされてないけどな・・・・そういうことや

74 :71:2010/02/05(金) 18:27:05
修正
e.Graphics.DrawRectangle(Pens.Yellow, Rectangle.Round(vtb));

e.Graphics.DrawRectangle(Pens.Yellow, vtb);

75 :デフォルトの名無しさん:2010/02/05(金) 19:14:51
WPFで質問があります。
Imageを配置してサムネイル画像を表示しました。
その画像をダブルクリック(あるいはクリック)したら、実画像を開きたいと思います。
Process.Start("Paint", filename);
ダブルクリックのイベントハンドラって、どう書けばよいですか?
Imageのプロパティを見ても、MouseDown,Enter,Leave,Left(Right)ButtonDown,LeftButtonUp,Move,Up,Wheelがあるだけで、クリックのイベントが見当たりません。
ご教示ください。

76 :デフォルトの名無しさん:2010/02/05(金) 19:18:13
MouseButtonEventArgsにはClickCountプロパティがある

77 :デフォルトの名無しさん:2010/02/05(金) 19:23:43
>>65
早速ありがとうございます。
列挙するにはどうしたらよいですか?
foreach (var q in query) {
lists.Add(q);
}
で列挙できたと思っていたのです。

>>67
xdoc.Root.Elements()には、デバッグモードで見ると、
xmltextがそのまま入ってるので、それだと思ってました。

>>66
早速入れてみましたが、エラーになってしまいました。
foreach (var q in xdoc.selectNodes("/result/words/word")) {

'System.Xml.Linq.XDocument' に 'selectNodes' の定義が含まれておらず、型 'System.Xml.Linq.XDocument' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。


78 :デフォルトの名無しさん:2010/02/05(金) 19:24:49
GroupBoxの形って四角形で固定ですか?
自由に変形させることはできませんか?

79 :デフォルトの名無しさん:2010/02/05(金) 19:26:00
>>75
こちらへ
WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech/1261879110/

80 :デフォルトの名無しさん:2010/02/05(金) 19:29:45
>>77
> 列挙するにはどうしたらよいですか?
from a in b

foreach (var a in b)
と同じ意味
だから
from result in xdoc.Root.Elements()

foreach (var result in xdoc.Root.Elements())
と同じで、さて何回ループ回る?

81 :デフォルトの名無しさん:2010/02/05(金) 19:42:12
>>77はC#の要素を除いたら普通に頭が悪いだけの発言だな

82 :デフォルトの名無しさん:2010/02/05(金) 20:02:13
>>75
<ContentControl MouseDoubleClick="ContentControl_MouseDoubleClick">
    <Image Source="mikumiku.jpg"/>
</ContentControl>


83 :デフォルトの名無しさん:2010/02/05(金) 20:36:15
>>80
xdoc.Root.Elements()には、デバッグモードで見ると、
xmltextがそのまま入ってます。
ということは1回ですか?
これをタグ別にわけるには、どのようにしたら?


84 :デフォルトの名無しさん:2010/02/05(金) 20:41:52
75です。
>>79
WPFの掲示板は初心者の質問を受けつけてくれないのです。
それでこちらで質問しました。
>>82
xamlのimageに入れて試してみました。
'ContentControl_MouseDoubleClick' の定義が含まれていません、
というエラーとなったのですが、
なにか前もってすることがありますか?
よろしくお願いします。


85 :デフォルトの名無しさん:2010/02/05(金) 20:48:42
>>84
文字通りイベント用の関数を作ってないんだろ。
その部分は消して、プロパティウインドウからイベントを選びなおす。


86 :デフォルトの名無しさん:2010/02/05(金) 20:50:27
>>83
まずLINQじゃなくてforeachで普通に表現してみ

87 :デフォルトの名無しさん:2010/02/05(金) 21:03:40
>>86
foreachでxmlをどうわけたら?
string[] lines = xmltext.Replace("<word>","").Replace("</word>","").Split('\n');
とかですか?
それならできます。
foreach (string line in lines) {
lists.Add(line);
}


88 :デフォルトの名無しさん:2010/02/05(金) 21:08:26
……。
foreach (var element in xdoc.Root.Elements()) {
    // この中のコードを書いてみろってこと
}

89 :デフォルトの名無しさん:2010/02/05(金) 22:14:30
DataTable.WriteXML で、テーブルに数値型の列があったとして、
XML ファイルの該当箇所を 16 進数表記で出力するコトって出来ますか?

90 :デフォルトの名無しさん:2010/02/05(金) 22:30:14
WriteXmlじゃ無理だな

91 :デフォルトの名無しさん:2010/02/05(金) 22:48:01
>>86
xdoc.Root.Elementsをわける方法がわからないですが、
次のとおりで、項目ごとには分けられます。
string[] lines = element.Replace("<word>","").Replace("</word","").Replace(" ","").Split('>');
foreach (string line in lines) {
lists.Add(line);
}


92 :デフォルトの名無しさん:2010/02/05(金) 22:49:50
でもこれではLINQはぜんぜん使っていないし、知りたいのはLINQなのですが…。


93 :デフォルトの名無しさん:2010/02/05(金) 22:59:09
まず>>88ができなければLINQでできるようにはなりません
横着しないでやれ

94 :デフォルトの名無しさん:2010/02/05(金) 23:01:02
…低脳にLINQを使わせるな。

95 :デフォルトの名無しさん:2010/02/05(金) 23:08:25
その前にXMLから理解すべきでは

96 :デフォルトの名無しさん:2010/02/05(金) 23:09:07
首吊って死ぬのが先かな。

97 :デフォルトの名無しさん:2010/02/05(金) 23:11:01
それ以前に、言われた通りにしないのなら質問しなくてよろしい

98 :デフォルトの名無しさん:2010/02/05(金) 23:12:45
>>85
ありがとうございます。
まず、xamlでContentControl MouseDoubleClickをコメントアウトしました。
Imageのプロパティを見ましたが、ContentControlの項目は見つかりません。
なんのイベントを選べばよいですか?


99 :デフォルトの名無しさん:2010/02/05(金) 23:17:17
選ぶのはMouseDoubleClickだよ

100 :デフォルトの名無しさん:2010/02/05(金) 23:20:01
うっほうっほ

101 :デフォルトの名無しさん:2010/02/05(金) 23:22:55
>>99
ねぇよ
嘘つきばっかだな

102 :デフォルトの名無しさん:2010/02/05(金) 23:28:11
ContentControlのだよ? Imageの親にした

103 :デフォルトの名無しさん:2010/02/05(金) 23:31:36
思うに、Windowに直接Image貼ってるんだろう?

104 :デフォルトの名無しさん:2010/02/05(金) 23:40:05
>>90
そっか、残念。ありがとうございました。

105 :デフォルトの名無しさん:2010/02/05(金) 23:45:07
テキストボックスの中にカーソルを表示させないようにするにはどうしたらよいのでしょうか?

106 :デフォルトの名無しさん:2010/02/05(金) 23:51:08
りいどおんりい

107 :デフォルトの名無しさん:2010/02/06(土) 00:35:36
>>102
75です。
ありました。できました。
ありがとうございます。


108 :デフォルトの名無しさん:2010/02/06(土) 00:38:43
>>93、97
横着せずにいうとおり91のとおりやってると思いますけど。
で、91でLINQなしでできてしまったです。
それがちがうのなら、方法を教えてください。

で、あらためてLINQだとどう書くんでしょう?


109 :デフォルトの名無しさん:2010/02/06(土) 00:42:18
>>91でいくらできても意味は無いのよ。
正しく理解するってのが大事なんだから。

教えません。

110 :デフォルトの名無しさん:2010/02/06(土) 00:43:06
>>108
そうか〜できてしまったか^^
良かったね
一生そうやってろ

111 :デフォルトの名無しさん:2010/02/06(土) 00:43:09
キミの仕事だか趣味だかのプログラムが完成しなくてもおれたちにはどうでもいいことなので
自分で努力してください

112 :デフォルトの名無しさん:2010/02/06(土) 00:45:39
>>109
正しく理解するヒントくらいください。
>>110
そうやってたくないから聞いてるんですけど。


113 :デフォルトの名無しさん:2010/02/06(土) 00:47:02
ヒントが>>88だろ
もう死ねよ

114 :デフォルトの名無しさん:2010/02/06(土) 00:48:12
…構ってちゃんをいつまでも相手してなくてよろしい(`・ω・´)

115 :デフォルトの名無しさん:2010/02/06(土) 00:50:35
>>113
だから、88の回答は91で、
それでできちゃったのではLINQを使う点では間違えているわけだから、
どう間違えているのかって訊いてるんですけど。


116 :デフォルトの名無しさん:2010/02/06(土) 00:52:57
始まりはどこからなの?

117 :デフォルトの名無しさん:2010/02/06(土) 00:54:33
>>116
63

118 :デフォルトの名無しさん:2010/02/06(土) 00:55:42
>>115
foreach (string line in lines) {

じゃなくて

foreach (var element in xdoc.Root.Elements()) {

で書き始めろって言ってんだよ
会話が成り立たない(´・ω・`)

119 :デフォルトの名無しさん:2010/02/06(土) 00:57:07
>>118
お前も何マジになってんだ。
こういうのはニヤニヤしてればいいんだよ。

120 :デフォルトの名無しさん:2010/02/06(土) 00:58:07
>>64
名前欄に64って書いとけ

121 :デフォルトの名無しさん:2010/02/06(土) 01:00:18
>>120
そしてそっこうでDispose()が呼び出される。

122 :116:2010/02/06(土) 01:00:50
>>117
サンクス

まあ質問者も回答者もどっちもどっちだな

質問者は問題解決の探索の仕方がまずいし
回答者も無駄にあおりすぎ

123 :デフォルトの名無しさん:2010/02/06(土) 01:03:12
XMLは手だしてないのでしらんけど似たような解析がいるHTMLから考えると
よくわからなければtextbox貼り付けて片っ端からToString()すればいいのに
とか思うんだけどな

124 :64:2010/02/06(土) 01:03:18
>>118
なるほど。そういうことでしたか。

XDocument xdoc = XDocument.Parse(html);
foreach (var element in xdoc.Root.Elements()) {
string[] lines = element.Replace("<word>","").Replace("</word","").Replace(" ","").Split('>');
foreach (string line in lines) lists.Add(line);
}
と書きました。

ただし、これだと、
xdoc.Root.Elements()とhtmlは、同じものが入っているのと、そのElementをわける方法がわからないので、
string[] lines = html.Replace("<word>","").Replace("</word","").Replace(" ","").Split('>');
foreach (string line in lines) lists.Add(line);
}
と買い手目的は達成してしまいました。
それで、LINQの方法を聞いているわけです。
つまり、xdoc.Root.Elements()をわける方法がわからないのです。


125 :デフォルトの名無しさん:2010/02/06(土) 01:04:27
もう俺がLinq使った回答教えてやるよ。

var words = xmltext.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).
Where(n => n.Contains("<word>")).
Select(n => n.Replace("<word>", String.Empty).Replace("</word>", String.Empty));

こうね。
これでお開き。寝ろ。

126 :デフォルトの名無しさん:2010/02/06(土) 01:05:52
だから xdoc.Root.Elements()はなんなのか理解しろ
かんがえろ
要素1個しかないだろ?
だから1回しか実行されないんだよ?


127 :64:2010/02/06(土) 01:06:11
>>122
なるほど。たしかに探索の仕方はまずい気がします。
どうすればいいんでしょうね。


128 :64:2010/02/06(土) 01:07:19
>>126
要素が1個しかないのはわかりました。
で、wordにわける方法は?


129 :デフォルトの名無しさん:2010/02/06(土) 01:07:56
>>128
教えませんよフフン

130 :デフォルトの名無しさん:2010/02/06(土) 01:08:06
>>128
デバッガでプログラムを止めて考えろ。
DOM系のプログラミングはこれに限る。

131 :デフォルトの名無しさん:2010/02/06(土) 01:08:31
釣りかも知れんがタフだなあ…。

132 :デフォルトの名無しさん:2010/02/06(土) 01:10:53
>>127
まあHTMLの方はとりあえずHTML化すれば外部ツールが
作ったHTMLの構造とかを出してくれるのでわかりやすかったけどな

133 :デフォルトの名無しさん:2010/02/06(土) 01:11:01
XElement.Elements()で取得できるのはXElementなんだからさらにXElementElements()すればいいだけよ。
XDocument.RootもXElementだからね。

134 :デフォルトの名無しさん:2010/02/06(土) 01:12:35
ふ、ふん!
あなたに言ったんじゃないわよ! もう寝なさいよ!

135 :デフォルトの名無しさん:2010/02/06(土) 01:13:07
var使ってるからElements()で何が帰ってきてるかも分かってないと思うよ彼

136 :デフォルトの名無しさん:2010/02/06(土) 01:13:26
>>133を受けて
ttp://msdn.microsoft.com/ja-jp/library/bb348975.aspx
の例を見て考えよう

137 :デフォルトの名無しさん:2010/02/06(土) 01:14:14
お前ら釣られすぎ

138 :デフォルトの名無しさん:2010/02/06(土) 01:23:43
msdnにほとんど答えが載ってるからもう来ないだろ…

139 :デフォルトの名無しさん:2010/02/06(土) 01:27:48
xmlを
<result>
<words><word>クワガタ</word></words>
<words><word>オオクワガタ</word></words>
<words><word>メダロット</word></words>
<words><word>ミヤマクワガタ</word></words>
<words><word>ヒラタクワガタ</word></words>
<words><word>ノコギリクワガタ</word></words>
<words><word>パラワン島</word></words>
<words><word>ルイスツノヒョウタンクワガタ</word></words>
</result>
にして、
var query = XElement.Load("XMLFile1.xml").Descendants("words");
foreach (var item in query)
Console.WriteLine(item.Element("word").Value);
で解決



140 :デフォルトの名無しさん:2010/02/06(土) 01:32:12
>>139
ヒントに見せかけた釣りですね

141 :64:2010/02/06(土) 02:44:50
>>129
なんか昭和のスパルタ教師の香りがするんだけど、
考えれば考えつくとかいったって、考えてとけてたら、こんなとこで聞いてないって。
しかも、自分の方法に迷いがないと思ってるばかときた。
考えろっていって、答えを教えないばかだよ。
1をよめっつーの。


142 :デフォルトの名無しさん:2010/02/06(土) 02:52:38
煽っても答えませんよ。

143 :デフォルトの名無しさん:2010/02/06(土) 02:53:55
理解力が足りないのまで俺らのせいにされても困るッスわ…

144 :デフォルトの名無しさん:2010/02/06(土) 02:57:42
小学生にC#は尚早だぜ。
HSPやってな。

145 :デフォルトの名無しさん:2010/02/06(土) 03:03:05
>>141
馬鹿に教えを請うってプライド大安売りですね

146 :デフォルトの名無しさん:2010/02/06(土) 03:08:40
>>141
教えてもらってから居丈高になった方がよくないか?
利根川さんもそう言っていたよ

147 :デフォルトの名無しさん:2010/02/06(土) 03:15:47
どうせ答えねえクセに白々しいんだよ。

148 :デフォルトの名無しさん:2010/02/06(土) 03:24:06
なんか昔のAPIスレを見ているようなデジャビュを感じる。

149 :デフォルトの名無しさん:2010/02/06(土) 03:26:18
>>148
あんまかわらんでしょ
結局他所が用意した機能だから

150 :デフォルトの名無しさん:2010/02/06(土) 03:47:58
>>149
ふーん。(´・ω・`)

151 :デフォルトの名無しさん:2010/02/06(土) 04:17:34
元々の>>64でresult.Element("word").Valueとか書いてるのに
それをforeachで書けって言われて>>124になるのかさっぱり分からん

152 :デフォルトの名無しさん:2010/02/06(土) 07:01:57
なんでこの程度のネタで一晩中引っ張れるんだ

153 :デフォルトの名無しさん:2010/02/06(土) 10:15:59
>>71
レスありがとうございました。テキストボックスをコードで作ってしまう
んですね。昨日の書き込みの後も、親ピクチャーの子をテキストボックス
にしたりピクチャーに戻したりを繰り返していました。

今はピクチャーに戻して

private void textbox1_TextChanged(object sender, EventArgs e)
{
  //PictureBox1のGraphicsオブジェクトを取得
  Graphics g = picturebox1.CreateGraphics();

  //g.Clear(pictureBox1.BackColor);
  g.Clear(Color.white);

  //フォントオブジェクトの作成
  Font fnt = new Font("MS UI Gothic", textbox1.Font.Size);
  //文字列を位置(0,0)、青色で表示
  System.Windows.Forms.TextRenderer.DrawText(g, textbox1.Text.Trim(), fnt, new Point(0, 0), textbox1.ForeColor);
  //リソースを開放する
  fnt.Dispose();
  g.Dispose();
}

として、g.Clear(Color.white);でごまかす形になりました。
いろいろ教えていただいたり、コードまで見せてもらえてとても助かって
います。

154 :デフォルトの名無しさん:2010/02/06(土) 12:10:03
質問者は名前欄にレス番いれたらいいんじゃないの?

155 :デフォルトの名無しさん:2010/02/06(土) 14:23:12
>>63
root["words"].ChildNodes

156 :デフォルトの名無しさん:2010/02/06(土) 14:30:40
あまいなw

157 :デフォルトの名無しさん:2010/02/06(土) 14:53:01
再帰ック

158 :デフォルトの名無しさん:2010/02/06(土) 15:17:34
まさか俺以外はコード書いて試してないのか?

159 :デフォルトの名無しさん:2010/02/06(土) 15:29:08
Who are you ?

160 :デフォルトの名無しさん:2010/02/06(土) 15:35:58
>>159
コード書いたあと煽ってた側なんだが…
お前らコンパイルできない偽ヒントばかりだすなよw

161 :デフォルトの名無しさん:2010/02/06(土) 15:49:46
e?

162 :デフォルトの名無しさん:2010/02/06(土) 16:09:57
Linqでxml触ったことなかったけどこれでいいのかな?

var query = from result in xdoc.Root.Element("words").Elements("word")
select result.Value;

彼流に合わせたんだけどresult.Valueは気に入らない

163 :デフォルトの名無しさん:2010/02/06(土) 16:57:36
<A href="javascript:for(i=0;i=77777;i=i+1){alert('   ・ω・   ');}" onMouseOver="for(i=0;i=77777;i=i+1){alert('   ・ω・   ');}"><h1><b>◆■◆■◆■◆■◆■◆■◆■◆■◆■◆■◆■◆■◆■◆</b></h1></A>

164 :デフォルトの名無しさん:2010/02/06(土) 17:13:56
<A href="javascript:for(i=0;i=77777;i=i+1){alert('   ・ω・   ');}" onMouseOver="for(i=0;i=77777;i=i+1){alert('   ・ω・   ');}">
<h1><b>◆■◆■◆■◆■◆■◆■◆■◆■◆■◆■◆■◆■◆■◆■◆■◆■◆■◆■◆■◆</b></h1></A>

165 :デフォルトの名無しさん:2010/02/06(土) 21:13:25
ファイルをドラッグ&ドロップして、そのファイル名を受け取りたいんだけど、リストボックスではうまく行くけど、
他のコントロールだとカーソルの形だけは変わるけど、ファイル名が受け取れません。
DataGridViewでやりたいんですが、これは仕様なんでしょうか?

166 :デフォルトの名無しさん:2010/02/06(土) 21:23:19
カーソルの形がどう変わるんだよ
AllowDropとDragEnter/DragOverとDragDropはどうやってんだよ

167 :デフォルトの名無しさん:2010/02/06(土) 21:38:39
初心者にはできない仕様です

168 :デフォルトの名無しさん:2010/02/06(土) 21:52:32
>>166
カーソルは十字に変更されるよ。
だからDragEnterは正常に機能している。
メッセージボックスを書いておくとちゃんと表示される。
そのイベントハンドラ内で、e.Effect = DragDropEffects.Copyをしている。

DragDropのイベントハンドラの方にはイベントさえ全然来ない。
AllowDrop=trueにしているけどね。

169 :デフォルトの名無しさん:2010/02/06(土) 21:56:17
で?

170 :デフォルトの名無しさん:2010/02/06(土) 22:19:05
>>165
テストコード書いて試したけど出来たよ?

171 :デフォルトの名無しさん:2010/02/06(土) 22:23:10
自己解決しました。

172 :デフォルトの名無しさん:2010/02/06(土) 22:25:48
>>165
プロパティWindowでDragDropイベントがちゃんとdataGridView1_DragDrop(例)に登録されてるか確認したか?

173 :デフォルトの名無しさん:2010/02/06(土) 22:26:44
>>172
は?

174 :デフォルトの名無しさん:2010/02/06(土) 22:27:47
>>171
お前は誰だ?

質問しといて自己解決の内容を書かないやつが一番たちが悪い

自己解決の内容かけ

175 :デフォルトの名無しさん:2010/02/06(土) 22:31:18
事故解決しました。

176 :デフォルトの名無しさん:2010/02/06(土) 22:31:42
事故解決しました。

177 :165:2010/02/06(土) 22:35:27
というか>>171は俺じゃないんだけどな。

>>172
もちろんイベントハンドラーは割り当てているよ。
デザイナーが吐いたコードを実際にみてaddされているし。
そもそもイベントが来ないのがおかしいな。

178 :デフォルトの名無しさん:2010/02/06(土) 22:36:19
なんでそんなにえらそうなの?

179 :デフォルトの名無しさん:2010/02/06(土) 22:37:05
>>171
しね
>>177
家では全く問題ない
もう1度まっさらな状態からTESTコード書いてみたら?

180 :デフォルトの名無しさん:2010/02/06(土) 22:40:40
俺も問題ないわ

181 :デフォルトの名無しさん:2010/02/06(土) 22:44:00
俺も

182 :デフォルトの名無しさん:2010/02/06(土) 22:44:48
↓俺も俺もとかいいから

183 :165:2010/02/06(土) 22:45:44
そうですか。
何か他のプロパティをセットしていると食い合わせがマズイのかな。
もう一度やってみますわ

184 :デフォルトの名無しさん:2010/02/06(土) 22:48:03
マウスホイールを回したときのイベントをMouseWheelイベント内に書こうと思ったら、
肝心のスクロールさせる命令を知りませんでした。
例えばホイールを半分回したら、画面を500インチスクロールさせるにはどう記述したらいいのでしょうか。

185 :デフォルトの名無しさん:2010/02/06(土) 22:52:32
500インチスクロールさせたら死んでしまうぞ!

186 :デフォルトの名無しさん:2010/02/06(土) 22:53:49
インチでですか
とりあえず画面のスケール取ってきてdot/inchを出して500インチ辺りのドットを出します

あとはAutoScrollPosition使ってください

187 :デフォルトの名無しさん:2010/02/06(土) 22:56:13
Windowsだと標準は96dpiか?
500*96だから…5万くらいか
1200のモニタ50枚

188 :デフォルトの名無しさん:2010/02/06(土) 23:35:28
>>186
ありがとうございます。
ホイールでスクロールさせたいのがPrintPreviewコントロールなので、AutoScrollPositionプロパティがないんです。
その場合どのような方法があるでしょうか。


189 :デフォルトの名無しさん:2010/02/06(土) 23:41:30
ScrollableControl継承したコンテナ(ContainerControlとかね)にPrintPreviewControl入れれば

190 :デフォルトの名無しさん:2010/02/07(日) 00:26:31
>>188
Win32API使え
あと、ここはAPIスレではないので(ry

191 :デフォルトの名無しさん:2010/02/07(日) 00:33:56
くっそー…
ノートブックに
@SQL Server 2008 Enteprise edition
ASQL Server 2008 SP1
BVS2008
CVS2008SP1
を上記の順番で入れようとしたら@のインストール時に
0x84B20001
というエラーが出てきて進めない。ググっても英語サイトばかり…。
これら4つをインストールする順番って何かあるものなの?

192 :デフォルトの名無しさん:2010/02/07(日) 00:39:53
VS2008スレへ池。そのときは3,4だけが入るかどうかは書いとけよ。

193 :デフォルトの名無しさん:2010/02/07(日) 00:41:00
Cでエラーならわかるが、@でエラーでてるのに順番もくそもないだろw
Enterpriseがくそノートに入るかどうか、機器要件みろ。
CPUは要チェックな。


194 :デフォルトの名無しさん:2010/02/07(日) 00:44:02
2005でも入ってるんじゃね?

195 :デフォルトの名無しさん:2010/02/07(日) 00:48:03
>>191
確かにそのエラーコードでググると、英語か中国語のページしか検索されないな。
何で日本語ページがないのか…不気味だ。

196 :デフォルトの名無しさん:2010/02/07(日) 00:49:23
>>195
SQLをリストアしたらいけるみたいに英語で書いてあるぜ。間違っていたらごめんだけど。
古いバージョンのを消せよ。俺は責任を持てないが。

197 :デフォルトの名無しさん:2010/02/07(日) 00:52:18
みなさんありがとうございます。
買ったばかりのノートなので2005は入っていません。
さっき、B、Cと終えたあとに@を試みたらだめでした。これからシステム要件を見てみます。38,000円で買ったノートブックにEnterpriseは無理かもしれないのか…
(>_<;)。


198 :デフォルトの名無しさん:2010/02/07(日) 00:53:13
値段は関係ないだろw

199 :デフォルトの名無しさん:2010/02/07(日) 00:54:16
ネットブックでごりごり書いてるが問題ないぜ
SQLは知らんけどw

200 :デフォルトの名無しさん:2010/02/07(日) 00:55:00
20kで買った糞ノートに同SQLぶち込んだが問題なし

201 :デフォルトの名無しさん:2010/02/07(日) 00:55:18
>>197
Bを入れたら標準的にSQL2005がインストールされるだろ?それは確認したか?

202 :デフォルトの名無しさん:2010/02/07(日) 01:00:43
>>201
確認してません…(>_<;)。

203 :デフォルトの名無しさん:2010/02/07(日) 01:04:48
Developerで充分だろ。ってか、スレ違いだからさっさと消えてなくなれ。

204 :デフォルトの名無しさん:2010/02/07(日) 01:05:32
VSとSQLサーバー、各SPのインストール順序が大事だと聞いたことがあるっちゃ。
SQL2008を入れようとしたらVS2008SP1がないから無理…みたいに怒られたことがあるっちゃ。

205 :デフォルトの名無しさん:2010/02/07(日) 01:07:35
スレちがいって言ってるだろうが。ハゲ頭が。

206 :デフォルトの名無しさん:2010/02/07(日) 01:43:56
http://msdn.microsoft.com/ja-jp/library/ms143506.aspx#EE32

207 :デフォルトの名無しさん:2010/02/07(日) 06:35:48
c#ばっかりやってて久々にVC++へ行くと糞に感じるね

なんでわざわざメンバ関数を別にしたりとかデフォでやってるんだろう
c#はよくできてるわ

208 :デフォルトの名無しさん:2010/02/07(日) 06:37:46
出た当時はそれで良かったのさ

209 :165:2010/02/07(日) 08:42:49
>>165だけど、原因がわかったので参考のために書いておくよ。
ドラッグイベントのハンドラーの中で、ファイル名を受け取るのに、

string[] filename = (string[])e.Data.GetData(DataFormats.FileDrop, false);

と書くべきを

string filename = (string)e.Data.GetData(DataFormats.FileDrop, false);

としていた。ドラッグは複数ファイル選択される場合もあるから、受け手は配列で受ける必要があるってことみたい。

210 :デフォルトの名無しさん:2010/02/07(日) 09:46:20
>>209
イベント来ないって言ってなかった?

あと、Listviewだって同じ問題起きると思うけど?

211 :デフォルトの名無しさん:2010/02/07(日) 09:51:45
>>210
この下の行にMessageBoxを書いていたんだが、なぜかそこに来ないんだよな。
だからイベントが来ていないと思っていたのさ。

212 :デフォルトの名無しさん:2010/02/07(日) 10:53:30
キャスト失敗してInvalidCastが出てDataGridViewが勝手にトラップして来てないと勘違いしたんだろ
くだらん

213 :デフォルトの名無しさん:2010/02/07(日) 11:07:44
百済へ行ってこい( ・ω・)y─┛〜〜

214 :デフォルトの名無しさん:2010/02/07(日) 11:09:36
例外なんて一番初めに疑うべきだろ…。

215 :デフォルトの名無しさん:2010/02/07(日) 11:12:11
はあ?( ・ω・)y─┛〜〜

216 :デフォルトの名無しさん:2010/02/07(日) 13:33:49
顔文字うぜーから死ね
自己主張したいならコテでもつけろカス

217 :デフォルトの名無しさん:2010/02/07(日) 13:35:44
(´・∀・`)

218 :デフォルトの名無しさん:2010/02/07(日) 13:49:56
(´ ∀`)σ)Д`)

219 :デフォルトの名無しさん:2010/02/07(日) 14:26:40
ウザクないよねー(*´・ω・)(・ω・`*)ネー

220 :デフォルトの名無しさん:2010/02/07(日) 15:33:43
コンストラクタに関して

public Samp(string filePath);
このようにファイル名を渡してその内容からプロパティに値を代入するようなコンストラクタは
使ってはいけませんか。つまりコンストラクタは直接プロパティの値を渡すように設計すべきで、
ファイルから値を代入してインスタンスを生成したい場合、
Samp smp = Samp.ReadFile(filename);のようにファイルから読み取ってインスタンスを返すような
静的メソッドでも作った方が良いでしょうか

221 :デフォルトの名無しさん:2010/02/07(日) 15:38:07
コンストラクターで例外でるとめんどくさいし、
後からLoadするか、staticなファクトリーメソッド使う方がいいかもねぇ。
まあ、百歩譲って、コンストラクター2個用意しとくか。

222 :デフォルトの名無しさん:2010/02/07(日) 15:42:55
C#ではまったく問題なし。
C++界隈にはコンストラクタで例外は避けるべきという都市伝説や
古代のノウハウがはびこっている。

223 :デフォルトの名無しさん:2010/02/07(日) 15:44:17
どちらでもいい。
どちらでも全く問題ない。

224 :デフォルトの名無しさん:2010/02/07(日) 15:47:27
読み込んだらすぐにファイルを閉じる場合→静的メソッド
開きっぱなしの場合→コンストラクタ
と区別すると直感的に分かりやすいと思う

225 :デフォルトの名無しさん:2010/02/07(日) 15:47:56
>>221
むしろコンストラクタで例外が出ると何に比べて何がどう面倒なのか知りたい

226 :デフォルトの名無しさん:2010/02/07(日) 15:58:34
親クラスが IDisposable なメンバー握ってるとかでも大丈夫なんだっけ?

227 :デフォルトの名無しさん:2010/02/07(日) 16:16:17
明示的にbase.Disposeは呼ばないとダメ
大丈夫かどうかはもともとそのクラスの実装の責任であって
静的メンバでもコンストラクタでも同じこと

228 :デフォルトの名無しさん:2010/02/07(日) 17:36:12
よく「印刷」を実行すると部数などの設定画面を表示し、それから印刷を実行する
アプリケーションがあると思うのですが、自分で同じこと(PageSetupDialogではない)をする場合、
自前でフォームを用意する必要がありますか?

229 :デフォルトの名無しさん:2010/02/07(日) 17:37:53
PrintDialogのこと?

230 :デフォルトの名無しさん:2010/02/07(日) 17:39:14
>>229
うわあああそれです。ありがとうございます!

231 :デフォルトの名無しさん:2010/02/07(日) 18:23:56
インストラクターが作れません

232 :デフォルトの名無しさん:2010/02/07(日) 20:16:41
DOS窓みたいにアプリのメッセージをForm上にダーーっと表示できるようにしたいけど、なにで作ればよいでしょうか。

233 :デフォルトの名無しさん:2010/02/07(日) 20:20:49
TextBoxに出力するTextWriterを実装してConsole.SetOut

234 :デフォルトの名無しさん:2010/02/07(日) 21:02:48
なるほど。ちょっと調べてみます

235 :デフォルトの名無しさん:2010/02/07(日) 22:33:06
で?

236 :デフォルトの名無しさん:2010/02/07(日) 22:44:04
何が「で?」だ馬鹿だろうお前

237 :デフォルトの名無しさん:2010/02/07(日) 23:01:47
いちいち茶々入れてるのは別の人でしょ
で?とか自己解決しましたとか

238 :デフォルトの名無しさん:2010/02/07(日) 23:11:13
>>236
その「馬鹿」に構うお前も、「馬鹿に構うお前」に構う俺も馬鹿なんだろうな

239 :デフォルトの名無しさん:2010/02/07(日) 23:12:32
>>1-238
ここまで俺の自演

240 :デフォルトの名無しさん:2010/02/08(月) 00:33:37
で?

241 :デフォルトの名無しさん:2010/02/08(月) 01:29:41
ん?

242 :デフォルトの名無しさん:2010/02/08(月) 01:42:17
で?

243 :デフォルトの名無しさん:2010/02/08(月) 01:52:36
ん?

244 :デフォルトの名無しさん:2010/02/08(月) 01:56:37
む?

245 :デフォルトの名無しさん:2010/02/08(月) 02:02:28
し?

246 :デフォルトの名無しさん:2010/02/08(月) 02:08:01
ゃ?

247 :デフォルトの名無しさん:2010/02/08(月) 02:40:34
ぶ?

248 :デフォルトの名無しさん:2010/02/08(月) 08:25:59
↓のようなコードを実行してもMarginBoundsの値が変更できません。
MarginBoundsの値を変更するにはどうすればいいでしょうか?
よろしくお願いします。

int sheetsize1 = 210;
int sheetsize2 = 297;

e.Graphics.PageUnit = GraphicsUnit.Millimeter;

e.PageSettings.Margins.Top = 20;
e.PageSettings.Margins.Left = 20;

e.PageSettings.Margins.Bottom = sheetsize2 - e.PageSettings.Margins.Top;
e.PageSettings.Margins.Right = sheetsize1 - e.PageSettings.Margins.Left;

MessageBox.Show("MarginBounds[Top,Bottom] = " + e.MarginBounds.Top.ToString() + "," + e.MarginBounds.Bottom.ToString(), "Program", MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show("MarginBounds[Left,Right] = " + e.MarginBounds.Left.ToString() + "," + e.MarginBounds.Right.ToString(), "Program", MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show("MarginBounds[Width,Height] = " + e.MarginBounds.Width.ToString() + "," + e.MarginBounds.Height.ToString(), "Program", MessageBoxButtons.OK, MessageBoxIcon.Information);

249 :デフォルトの名無しさん:2010/02/08(月) 08:27:22
Readonlyプロパティですから諦めましょう

250 :デフォルトの名無しさん:2010/02/08(月) 08:35:27
>>249
ということはMarginBoundsは固定値だから気にしなくていいということなんですね。
ありがとうございます。

251 :デフォルトの名無しさん:2010/02/08(月) 13:26:14


252 :デフォルトの名無しさん:2010/02/08(月) 14:11:40
C#プログラマ向けのC++本かサイトでお薦めありませんか?

変数とかそこらへんから読んでくのはしんどいし
かといって飛ばすとその中に結構肝心な点が書かれたりとかしてw・・・orz

253 :デフォルトの名無しさん:2010/02/08(月) 14:14:56
>>252
学問に王道なし

254 :デフォルトの名無しさん:2010/02/08(月) 14:15:28
C++は改定を控えているので本はお勧めしないとだけ

255 :デフォルトの名無しさん:2010/02/08(月) 14:19:53
DOBON.NET
http://dobon.net/vb/dotnet/index.html

++C++
http://ufcpp.net/study/index.html

緑のバイク
http://homepage3.nifty.com/midori_no_bike/CS/

ほかにもいっぱいあるけどね

256 :デフォルトの名無しさん:2010/02/08(月) 14:21:08
へー

257 :デフォルトの名無しさん:2010/02/08(月) 14:21:34
>>255
君は人の話を話半分に聞くタイプだね?

258 :デフォルトの名無しさん:2010/02/08(月) 14:21:50
ああぼけてた
C#->C++か

苦痛に感じそうなパターンだな
C++の構文糞だし

259 :デフォルトの名無しさん:2010/02/08(月) 14:23:40
>>257
昼飯終わってから眠くなる時間なんだよね〜
すまんすまん

260 :デフォルトの名無しさん:2010/02/08(月) 14:24:38
C#->C++というソース変換を機械的に行ってくれるツールはないもんかね?

261 :デフォルトの名無しさん:2010/02/08(月) 15:12:35
一応あるみたいだね
多分有償だろうけど

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=43877&forum=7
http://www.tangiblesoftwaresolutions.com/Product_Details/Instant_CPlusPlus_CSharp_Edition.html

262 :デフォルトの名無しさん:2010/02/08(月) 15:40:12
>>252
ことWindowsにおいては.NET Frameworkが動作している限りにおいて
C++でできることはほぼC#でもできるので、
C++で書かれたプログラムを以下にC#で利用するか、というところに絞って考えた方がいいと思う。
C言語、もしくはWINAPI互換で書かれた外部APIについては、DLLを直接参照してC#で利用することができる。
大抵のメジャーなライブラリはC言語形式のAPIセットがあるのでこれで十分。

C++のコードしかない場合はC++/CLIでラッパーライブラリを書くことになるが、これはかなりな茨の道。
.NET、C++双方の知識が必要になる上に、リソース管理が2重になるのでスゲー煩雑。

これもメジャーなものは.NET向けのラッパーライブラリや互換ライブラリがあるので
そのまま利用すればよい。

263 :デフォルトの名無しさん:2010/02/08(月) 17:58:25
picturebox1にpicturebox2のimageを貼り付けるにはどのようにしたら良
いでしょうか?

picturebox1の上に小さいサイズのpicturebox2を配置してあり、ボタンが
押されたら2のimageを場所もサイズもそのままに1に反映するようにした
いと考えています。

picturebox1のこの場所にこのサイズで貼り付けるという指定方法が解ら
ず悪戦苦闘です。

264 :デフォルトの名無しさん:2010/02/08(月) 18:08:27
picturebox1と同じサイズのbitmapを用意してpicturebox2のイメージのコピー作った後
bitmapをpicturebox1に割り当てるとか

265 :デフォルトの名無しさん:2010/02/08(月) 18:40:07
private void Form1_Load(object sender, EventArgs e)
{
//画像を当てはめ色を塗る
pictureBox1.Image = new Bitmap(
pictureBox1.ClientSize.Width,
pictureBox1.ClientSize.Height,
System.Drawing.Imaging.PixelFormat.Format24bppRgb);
Graphics g1 = Graphics.FromImage(pictureBox1.Image);
g1.FillRectangle(Brushes.AliceBlue, pictureBox1.ClientRectangle);
g1.Dispose();
pictureBox2.Image = new Bitmap(
pictureBox2.ClientSize.Width,
pictureBox2.ClientSize.Height,
System.Drawing.Imaging.PixelFormat.Format24bppRgb);
Graphics g2 = Graphics.FromImage(pictureBox2.Image);
g2.FillRectangle(Brushes.Aqua, pictureBox2.ClientRectangle);
g2.Dispose();
}
private void button1_Click(object sender, EventArgs e)
{
//コピー処理
Graphics g = Graphics.FromImage(pictureBox1.Image);
g.DrawImage(pictureBox2.Image,
pictureBox2.Location);
g.Dispose();
pictureBox2.Visible = false;//同じ位置とのことなので非表示にしてみる
}
private void pictureBox2_Click(object sender, EventArgs e)
{
//コピーが行われたことをわかりやすくするためにとりあえず
MessageBox.Show("pictureBox2がクリックされました");
}

266 :デフォルトの名無しさん:2010/02/08(月) 18:41:38
でも微妙にうまくいかねえw

267 :デフォルトの名無しさん:2010/02/08(月) 18:46:40
マルチラインでテキストを改行した時に、行と行のスペースを調整することは出来ますでしょうか?

268 :デフォルトの名無しさん:2010/02/08(月) 19:26:02
出来るかも

269 :デフォルトの名無しさん:2010/02/08(月) 19:49:03
画像うんぬんやりたいならWPFに移行しろよ

270 :デフォルトの名無しさん:2010/02/08(月) 23:38:00
レベル低い奴の相手をするほどヒマじゃない

271 :デフォルトの名無しさん:2010/02/08(月) 23:44:42
>>270
スレタイを音読3回。
君が要らない子だと分かったら、黙ってブラウザ閉じなさい

272 :デフォルトの名無しさん:2010/02/09(火) 00:16:07
画像をプログラムに埋め込むとロードが速くなったりしますか?

273 :デフォルトの名無しさん:2010/02/09(火) 00:47:37
ビットマップを自分で打たせるのか?

274 :デフォルトの名無しさん:2010/02/09(火) 01:58:53
Image.FromFileとかで外部にあるファイルを読み込むのと
http://dobon.net/vb/dotnet/programing/bitmapresource.html
これのように実行ファイルの中に入れてしまうのとではどっちが速いかという質問でございます

275 :デフォルトの名無しさん:2010/02/09(火) 02:09:00
おいなにをモタモタしてんだ?
テスト用のプログラムを書いて測ればわかる事だろ?
はやく作れよ

276 :デフォルトの名無しさん:2010/02/09(火) 02:20:10
埋め込んだら起動が遅くなるしなあ

その例ってのはリソースなんでツールバーのアイコン画像とかそんなのだよ

あと何をやろうとしてるの?

277 :デフォルトの名無しさん:2010/02/09(火) 02:51:53
>>276
何をやろうとしてるかは極秘です

278 :デフォルトの名無しさん:2010/02/09(火) 03:11:04
Class A
Class B : A

と2つのクラスがあったとします。

ここでたとえばデータフォルダ "C:\data" という情報を2つのクラスが共に共有しなければ
ならないとき、その情報をどう渡したらいいでしょうか?

いくつか方法を考えてみました。

a) Main()メソッドの中にデータフォルダの変数(string)を定義し、Class AやClass Bのコンストラクタ
  を呼び出すときにその変数を渡す。

b) グローバル変数としてデータフォルダの変数(string)を定義し、Class AやClass Bのメソッドに
  読み込ませる。

c) 外部ファイル(INIファイル)にデータフォルダの情報を保存しておき、Class AやClass Bのメソッドに
  この外部ファイルを読み込ませてデータフォルダの情報を取得させる。

a)〜c)どの方法がいいでしょうか?あるいはこれよりいい方法がありましたら教えてください。

279 :デフォルトの名無しさん:2010/02/09(火) 03:16:26
好きなように
正解はないよ

仕事でやる場合は力持った人の好みでルールが決まるだろうけど

280 :デフォルトの名無しさん:2010/02/09(火) 05:46:18
どうでもいいけどその条件でb案を採用する理由はねえな
書いてない条件があるってのが恒例だろうけど

281 :デフォルトの名無しさん:2010/02/09(火) 06:41:49
>>278
俺はいつもa法だな。おかげで引数イッパーイさ(´・ω・`)

282 :デフォルトの名無しさん:2010/02/09(火) 06:47:59
個人的なものしか作ってないけど
そういう設定を持つクラスをstaticで扱えるようにしてそこを参照してる
その設定自体は基本xmlにしてるけど、面倒くさいときはそのまま内部で書いてる


283 :デフォルトの名無しさん:2010/02/09(火) 07:50:15
>>282
かってに書けばー(´・ω・`)

284 :デフォルトの名無しさん:2010/02/09(火) 08:22:41
まあ、設計しだいよねぇ。

その string を参照するのが A, B だけなんだったらコンストラクターで渡すし、
「アプリ全体の設定」みたいなものだったらそれ用のクラス作って
public const もしくは public static readonly メンバーにするかもしれないし。


285 :デフォルトの名無しさん:2010/02/09(火) 08:34:27
settingsから読めばいいじゃない

286 :デフォルトの名無しさん:2010/02/09(火) 09:26:41
>>264>>265
レスありがとうございました。コードを参考にしながらいろいろ試して
みます。

287 :デフォルトの名無しさん:2010/02/09(火) 09:54:16
>>265
DrawImageの際にきっちりと矩形を設定しないとダメだぬぅ
(画像のDPIの値をみてうんぬんしているから位置だけ指定のときは2つの画像のDPIが違うとモヤっと描画されてしまう)
g.DrawImage(Image, Rectangle, Rectangle, GraphicsUnit.Pixel);

288 :デフォルトの名無しさん:2010/02/09(火) 12:44:14
このスレの重複スレ
C#, C♯, C#相談室 Part55
http://pc12.2ch.net/test/read.cgi/tech/1265283175/

をC#, C♯, C#相談室 Part57として再利用します
住民は被ってると思いますが一応報告

289 :デフォルトの名無しさん:2010/02/09(火) 12:51:21
>>288
誤爆乙

290 :デフォルトの名無しさん:2010/02/09(火) 14:02:35
>>289
勘違い乙

291 :デフォルトの名無しさん:2010/02/09(火) 14:12:43
>>290
でしゃばりキチは別のスレでオナヌーしてくれ

292 :デフォルトの名無しさん:2010/02/09(火) 14:34:56
>>290
新参者なんかな?
このスレはスレタイからわかるように初級者用C#スレッドで、
C#, C♯, C#相談室ではあまりにもくだらない、低レベルと思われる
ため質問する事をためらう人に対してできたスレッドで
2002年から初回スレ名「くだすれC#」として開始されたもの。

293 :デフォルトの名無しさん:2010/02/09(火) 14:55:05
> C#, C♯, C#相談室 Part55
> http://pc12.2ch.net/test/read.cgi/tech/1265283175/
がこのふらっと現スレPart55の立て損ない
(ふらっとのはずが相談室ってタイトルで立ててしまった)
という流れがあってだな

294 :デフォルトの名無しさん:2010/02/09(火) 14:58:37
>>293
そのスレッドは無視すればいいだけのことじゃね?

295 :デフォルトの名無しさん:2010/02/09(火) 15:47:28
ウェブブラウザコントロールについて教えてください。
下記のようにSayMove.site.jsを読み込んでflvのURLを取得して
alertで表示するところまではうまくいったのですが、取得したURLを
C#側に持ってくることができません。どのようにしても
持ってくればいいでしょうか?
HtmlDocument doc = web.Document;
if (doc == null) return;
HtmlElement jsElem = doc.CreateElement("SCRIPT");
jsElem.SetAttribute("language", @"JavaScript");
jsElem.SetAttribute("type", @"text/JavaScript");
jsElem.SetAttribute("src", @"e:\SayMove.site.js");
if (doc.Body == null) return;
doc.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, jsElem);
string scripts;
scripts = "alert(getVideoDetail(location.href)['videoUrl0']);";
web.Url = new Uri("javascript:" + Uri.EscapeDataString(scripts));


296 :デフォルトの名無しさん:2010/02/09(火) 15:54:18
>>295
逮捕されればいいと思うよ。

297 :デフォルトの名無しさん:2010/02/09(火) 16:39:35
ほんとに初心者で申し訳ないです...

Windowsアプリケーションを作成してるのですが、
tableLayoutPanelのCellの中に文字を挿入するのはどうすればいいのでしょうか?

298 :デフォルトの名無しさん:2010/02/09(火) 16:43:07
TableLayoutPanelは単にコントロールの配置を助けるもので、
文字を入れたい場合はTableLayoutPanelにLabelなどのコントロールを
配置して行うしかない。

299 :デフォルトの名無しさん:2010/02/09(火) 16:53:01
そうなんだ...orz
ありがとうございます!
エクセルのようなグリッドを作成することはできないのですか...?

300 :デフォルトの名無しさん:2010/02/09(火) 16:54:34
グリッドだったらDataGridViewコントロールがいい。

301 :295:2010/02/09(火) 16:57:46
できました。
失礼しました。


302 :デフォルトの名無しさん:2010/02/09(火) 17:08:08
DataGridViewコントロールを配置してみました。
やはり文字が挿入できないです...
そして列は増えるのに行が増えない...
どうすればいいでしょうか><

303 :デフォルトの名無しさん:2010/02/09(火) 17:09:25
DataGridViewコントロール使ってみました。
やはり文字が挿入できない...
そして、列は増えるのに行が増えません...
どうすればできますか?><

304 :デフォルトの名無しさん:2010/02/09(火) 17:10:42
もうちょっと自分でがんばれよw

305 :デフォルトの名無しさん:2010/02/09(火) 17:17:35
たしかにそうですよね...
C#のwindowsアプリケーションのコントロールについて詳しいサイトや書籍ありますか?
このまま頼りっきりになってしまうのは申し訳ないです

306 :デフォルトの名無しさん:2010/02/09(火) 17:18:11
>>305
http://dobon.net/vb/dotnet/index.html#datagridview

307 :デフォルトの名無しさん:2010/02/09(火) 17:19:10
とりあえず
ttp://dobon.net/vb/dotnet/index.html
ここをあさってみてわ

308 :デフォルトの名無しさん:2010/02/09(火) 17:22:57
ありがとうございます!
自分なりにやってみます!

309 :デフォルトの名無しさん:2010/02/09(火) 17:22:58
つーか「c# datagridview」でググレば最初に出てくるわけだが
それくらいやれよゆとり

310 :デフォルトの名無しさん:2010/02/09(火) 17:25:27
ググレカスでした...
すいません...

311 :デフォルトの名無しさん:2010/02/09(火) 17:32:41
腹減った...

312 :デフォルトの名無しさん:2010/02/09(火) 17:41:19
すみません。dllの関数にListやDictionaryは渡せるのでしょうか。
置き換えられる型が思い当たらないので、一言お願いします。

313 :デフォルトの名無しさん:2010/02/09(火) 17:46:27
>>312
DLLの関数って言ったって、色々あるだろ。
C言語?

314 :デフォルトの名無しさん:2010/02/09(火) 17:47:38
渡せるかどうかではなくその関数とやらが何を要求しているかだと思うのだが

315 :デフォルトの名無しさん:2010/02/09(火) 17:54:08
C#でDLL作れるのはわかってるけど逆アセンブルされたくないのでコアだけC++で書こうとしてるとエスパー

316 :デフォルトの名無しさん:2010/02/09(火) 17:57:18
Cのdllなら大抵配列でいい
さすがにdllの関数でハッシュテーブルの実体を引数に取るものは滅多に見かけないが
もしそんな頭のおかしいものを使うならちゃんとしたCの知識がないと無理だと思う

317 :312:2010/02/09(火) 19:40:14
すみません。出来るだけ簡略してお伝えできると思い、申し上げたのですが、
C#、VS2008でクラスライブラリを用いてWindows.Form,Dataを参照し、ジェネリックを使ったりと、
結果ビルドしたDLLを別プロジェクトでDllImportで読み込んだ末、
メソッドを呼び出し後、ジェネリックからマーシャリングできません(の様な例外)が出ました。

↓以下は私の誤認だと思いますが、
DLLは一緒くたにアンマネージドというものに変換され、
C#はそれを呼び出す時にマーシャリングという作業が必要で
その型に当てはめるための変換がいるため、ジェネリック型からは変換できない
と認知しておりました。

木構造のループ処理などができればと思っていたもので、TreeViewやら、
キーを持つDictionaryなどまとめて試行してみたという事です。
すみません。事後報告です。

318 :デフォルトの名無しさん:2010/02/09(火) 19:46:13
hashset<string>をchar**に入れようとしたならまだしもdictionary<,>をどんな関数に放り込もうとしたのか
まったく正気の沙汰とは思えない

319 :デフォルトの名無しさん:2010/02/09(火) 19:52:39
渡せるのはintとかstring(char*)とかそれらを含む構造体くらいじゃないの?
クラスとかだとうまく渡せるのかね?

320 :デフォルトの名無しさん:2010/02/09(火) 20:21:37
>>284
> 「アプリ全体の設定」みたいなものだったらそれ用のクラス作って
> public const もしくは public static readonly メンバーにするかもしれないし。

通知専用のクラスを新たに設定するという方法もありましたか。

a)、もしくはその方法でトライしてみようと思います。

321 :デフォルトの名無しさん:2010/02/09(火) 20:36:10
>>320
かってにトライすればー(´・ω・`)

322 :デフォルトの名無しさん:2010/02/09(火) 20:40:16
catch

323 :デフォルトの名無しさん:2010/02/09(火) 20:41:26
XmlDocument.Validate メソッドについて質問が有ります。
ValidationEventHandlerで、エラーが発生したノードを特定することは可能でしょうか?
ex.Messageからノード名は取得できますが、名称だけなため、同名のノードが存在すると特定ができません。
アドバイスをお願いします。

324 :デフォルトの名無しさん:2010/02/09(火) 20:43:41
finally{
トライ結果を書き込む;
}

325 :デフォルトの名無しさん:2010/02/10(水) 01:27:10
tes


326 :デフォルトの名無しさん:2010/02/10(水) 02:00:00
>>323
ValidationEventArgsのExceptionが多分XmlSchemaValidationExceptionにキャストできるはず

327 :デフォルトの名無しさん:2010/02/10(水) 03:44:09
まいった・・・

C#だとソース配ってるような物ってことでWTLに手を出したんだが
C#のあまりにも快適な開発環境と情報量の多さに慣れてしまってかなりシンドイw

よくわからなくてもドット打ったりしていけば中がどうなってるか
さぐれたc#がうらやましいw

328 :デフォルトの名無しさん:2010/02/10(水) 07:12:28
MFCなら快適なのに

329 :デフォルトの名無しさん:2010/02/10(水) 08:40:53
MFCなんてあまりに泥臭くてやってられないな。

330 :デフォルトの名無しさん:2010/02/10(水) 08:56:02
Javaなら快適なのに

331 :デフォルトの名無しさん:2010/02/10(水) 08:59:13
そしてC#に戻る

332 :デフォルトの名無しさん:2010/02/10(水) 09:01:20
ソースを見られるのがそんなに気になるものかな。
コメントのないソースなんて見れたもんじゃないだろ。
元のソースがあっても見たいとは思わないな。

333 :デフォルトの名無しさん:2010/02/10(水) 09:05:07
マシン語見てきた立場からするとあまりも.netはゆるすぎる
コメントの有無なんてどうってことはない

334 :デフォルトの名無しさん:2010/02/10(水) 09:19:14
時代はライセンス縛りなんで

335 :デフォルトの名無しさん:2010/02/10(水) 09:23:22
ソースが見えていることで著作者の権利が成立し得ないのならばGPLとかBSDLは何だって話になる。
お笑い種だ。
頭が30年前なんだろう。

336 :デフォルトの名無しさん:2010/02/10(水) 09:27:40
何回目だこの議論
初心者乙にも程があらあ

337 :デフォルトの名無しさん:2010/02/10(水) 09:28:11
別にいいんじゃね?
GPLにしたって違反してるやつがいたって粘着するにもいろいろ大変だし
あらかじめ対策しておくのもある意味普通だと思うけどね

338 :デフォルトの名無しさん:2010/02/10(水) 09:30:14
750 名前:デフォルトの名無しさん[sage] 投稿日:2009/07/21(火) 15:55:06
どの言語でも初心者が一番初めに気にする所だよな。
「ゲームは作れますか?」と「中身の暗号化できますか?」は。

少なくともそんなことを聞かなきゃ分からない内は全く関係のない話だ。


339 :デフォルトの名無しさん:2010/02/10(水) 09:30:48
748 名前:デフォルトの名無しさん[sage] 投稿日:2009/07/21(火) 15:48:12
今時はライセンスで縛るから丸見えでもどうでもいいのです
難読化くらいはしてるかもね

でも初心者には関係ないよ
お前のコードなんてわざわざ見る気にもならないからね

340 :デフォルトの名無しさん:2010/02/10(水) 09:31:52
64 名前:デフォルトの名無しさん[sage] 投稿日:2009/04/14(火) 16:37:56
つ 難読化 ・・が続く、いつもなながれだな。飽きないね。

65 名前:デフォルトの名無しさん[sage] 投稿日:2009/04/14(火) 16:59:37
そこまでして見たがる人間がどこまでいるのかと
自意識過剰なんじゃね?

341 :デフォルトの名無しさん:2010/02/10(水) 09:35:09
つか向いてないからC++に移って戻ってくるなよ。
質問ならともかく、自分で選んだ道のクセに愚痴を書き込みに来るな。

342 :デフォルトの名無しさん:2010/02/10(水) 09:36:27
初心者スレなんだしいいじゃないの

で、ライセンス縛りって具体的にどうやるの?

343 :デフォルトの名無しさん:2010/02/10(水) 09:36:32

( ゚д゚)…

( ゚д゚ )


344 :デフォルトの名無しさん:2010/02/10(水) 09:36:44
他人のソースを参考にしたorしたい人
自分の汚いソースが見られたくない人
俺の天才的アルゴリズムがただ見されるのは辛抱できない

これ以外にパターンあるのかな

345 :デフォルトの名無しさん:2010/02/10(水) 09:37:33
初心者スレと雑談スレとくだスレの区別はしろよw

346 :デフォルトの名無しさん:2010/02/10(水) 09:38:31
つってもココはもとくだスレだが。
参考 http://pc.2ch.net/tech/kako/1023/10237/1023766485.html

347 :デフォルトの名無しさん:2010/02/10(水) 09:38:51
>>343
こっちみんな
天才かどうかは知らんけど、なるべく需要がありそうだけど
競合がいないところへソフト出す場合は乱立避けるたに
わざわざヒント与える必要もないからねえ

348 :デフォルトの名無しさん:2010/02/10(水) 09:39:30
初心者がソースを見られたくないのは、
1)めちゃくちゃ汚いソースだから
2)どっかからぱくって来たソースだから

349 :デフォルトの名無しさん:2010/02/10(水) 09:39:56
ここのテンプレって凄く伝統的なんだな…。

350 :デフォルトの名無しさん:2010/02/10(水) 09:40:24
金取る場合は隠すが
フリーで出すならブラッシュアップしたほうがいいだろ

351 :デフォルトの名無しさん:2010/02/10(水) 09:42:57
blogにコードかいてたらわんくまに絡まれたことがあるんだけど
ああいうことにはならんの?

352 :デフォルトの名無しさん:2010/02/10(水) 09:44:17
>>351
なにそれw
俺のところのコードぱくったな!とか?

353 :デフォルトの名無しさん:2010/02/10(水) 09:44:42
>>348
パクる能もない。
パクって来ても使えないから。

前者のみ。

354 :デフォルトの名無しさん:2010/02/10(水) 09:47:34
ソースのあるフォルダまでexeに残すのはなんとかならんのか

355 :デフォルトの名無しさん:2010/02/10(水) 09:52:23
/debug:pdbony をはずす。

356 :デフォルトの名無しさん:2010/02/10(水) 09:56:24
pdbonly エルが抜けた。

プロジェクトービルドー詳細設定のデバッグ情報 pdb-only を none

357 :デフォルトの名無しさん:2010/02/10(水) 11:19:13
全然関係ないけど>>189ってうまく動くの?

358 :デフォルトの名無しさん:2010/02/10(水) 11:21:25
>>357
やってみればいいじゃん

359 :デフォルトの名無しさん:2010/02/10(水) 11:27:36
試さずに答えが知りたいんですよ

360 :デフォルトの名無しさん:2010/02/10(水) 11:31:31
c++じゃないんだしちょこっとコード書けば作れるだろうに

361 :デフォルトの名無しさん:2010/02/10(水) 11:57:39
Mainプログラムからスレッドを立ち上げて、そのスレッドからコンソールプログラムを子プロセスとして起動してるんですが、
コンソールプログラムが終了したかどうかをMainプログラムから知るにはどうしたら良いのでしょうか?

今は、グローバル変数でフラッグを作っておいて、スレッド内で子プロセスを監視して、終了したらフラッグをたてていますが、
直接、Mainプログラムから知りたいのです。
普通はどうしてるのでしょうか?

362 :デフォルトの名無しさん:2010/02/10(水) 11:59:54
invoke

363 :デフォルトの名無しさん:2010/02/10(水) 12:01:36
わざわざ待ちスレッドもたなくてもSendMessageで一発メッセージ送ってもらえば済みそうな悪寒

364 :デフォルトの名無しさん:2010/02/10(水) 12:03:32
>>362,363
具体的にどうやるのでしょうか?

365 :デフォルトの名無しさん:2010/02/10(水) 12:10:53
>スレッド内で子プロセスを監視して、終了したらフラッグをたてています

Main内でやれよ

366 :デフォルトの名無しさん:2010/02/10(水) 12:11:46
副スレッドがコンソールの終了を待っている間Mainは何してんだこれ

367 :デフォルトの名無しさん:2010/02/10(水) 12:14:59
Mainがフォームなのかコンソールなのかもよく分からん

368 :デフォルトの名無しさん:2010/02/10(水) 12:26:06
リーモーティングってのもあるみたい
http://msdn.microsoft.com/ja-jp/library/cc825640.aspx

SendMessage
http://www.geocities.jp/hatanero/sendmessage1.html

SendMessageだとコンソールアプリが処理終わって自分をたたむ前に
発行しておけばOSが読んでくれるので待ちスレッドとかいらない

369 :デフォルトの名無しさん:2010/02/10(水) 16:04:27
関数を引数にして渡すことは可能でしょうか?

370 :デフォルトの名無しさん:2010/02/10(水) 16:06:36
デリゲートで出来ると思われ

371 :デフォルトの名無しさん:2010/02/10(水) 16:35:27
ですな。

372 :デフォルトの名無しさん:2010/02/10(水) 17:23:50
すげーいまさらだが子クラスが親クラスの非公開メンバを参照できることを初めて知った
すげー便利だw

373 :デフォルトの名無しさん:2010/02/10(水) 17:45:31
参照できないでしょ

374 :デフォルトの名無しさん:2010/02/10(水) 17:55:34
372はクラス内クラスのことを言ってるんじゃね?

375 :デフォルトの名無しさん:2010/02/10(水) 18:03:58
なるほど
>>372
親クラス・子クラスの意味を確認せい
http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%A9%E3%82%B9_%28%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%29#.E7.B6.99.E6.89.BF_.28inheritance.E3.80.81extension.E3.80.81generalization.29


376 :デフォルトの名無しさん:2010/02/10(水) 18:09:19
内部クラスでインターフェイスを実装するときに必須だけど
Javaと違ってC#ではそういうことをする機会が少ないので滅多に使わないよね

377 :デフォルトの名無しさん:2010/02/10(水) 18:13:26
Stringとstring、Objectとobjectは何が違うの?

378 :デフォルトの名無しさん:2010/02/10(水) 18:14:52
クラスとメソッドの違いじゃないの?

379 :デフォルトの名無しさん:2010/02/10(水) 18:20:34
>>377
先頭大文字の方はCLRが定義しているクラス名 本来はSystem.Stringだけど普通using System;する
先頭小文字の方はC#の予約語 stringはSystem.Stringのエイリアス objectも同じ

380 :デフォルトの名無しさん:2010/02/10(水) 18:22:01
グーグルは大文字小文字無視で検索してくれるから
stringとstring とかでググレばいいのに

381 :デフォルトの名無しさん:2010/02/10(水) 18:24:12
どっちでも良いわけだな

382 :デフォルトの名無しさん:2010/02/10(水) 18:25:14
>>379
IDEで書いてればわかると思うんだよね
それって
IDE使ってないのかな?
予約語とかはブルー系だし、クラスとかは水色のちょっと黒が入ったようなのだし

383 :デフォルトの名無しさん:2010/02/10(水) 21:34:54
F#始めてからラムダ式が理解できるようになりました

ありがとうございます

384 :デフォルトの名無しさん:2010/02/11(木) 00:24:18
どういたしまして?

385 :デフォルトの名無しさん:2010/02/11(木) 12:06:31
日数の計算が簡単にできる方法を探しています。
例えば、2007年4月10から今日までの日数とか
分かりますか?

よろしくお願いします。



386 :デフォルトの名無しさん:2010/02/11(木) 12:18:19
var a = new DateTime(2007, 4, 10);
var b = DateTime.Now;
var days = (b - a).Days;

387 :デフォルトの名無しさん:2010/02/11(木) 12:19:08
>>385
これ使う
ttp://msdn.microsoft.com/ja-jp/library/system.timespan(VS.80).aspx

388 :デフォルトの名無しさん:2010/02/11(木) 13:02:27
2月11日雨
普段C++を使う俺がたまにC#を使うとそのかんたんさに驚く
ちょっとしたWinアプリがささとできる 
C++なんか文字列の分割すら自前でやらなきゃいかん

389 :デフォルトの名無しさん:2010/02/11(木) 13:08:58
まとめ
低脳はC#でも使っとけw

390 :デフォルトの名無しさん:2010/02/11(木) 13:19:44
料理する前にフライパン自作するようなもん

391 :デフォルトの名無しさん:2010/02/11(木) 13:34:56
フライパン作る時間と、自作フライパンのよさの比較の話だね。
いいとこ取りすればいいのに、

392 :デフォルトの名無しさん:2010/02/11(木) 13:39:54
悪くなることはあっても良くなることはまず無いだろ
カレーをルーから作るのとはわけが違う

393 :デフォルトの名無しさん:2010/02/11(木) 13:42:33
いや、どうしても1時間に200個のオムレツが作れるようにしたくて、
自作のオムレツ専用フライパンをつくってなんとかしたとか、そういう雰囲気で。
プログラム的に味は、変わらんと思うけど。

394 :デフォルトの名無しさん:2010/02/11(木) 14:18:11
>>389
頭のいいヤツは、選べるなら C# を使うと思う。

395 :デフォルトの名無しさん:2010/02/11(木) 14:46:56
同意
書きやすいし読みやすいから菜

396 :デフォルトの名無しさん:2010/02/11(木) 14:49:47
同意
解析しやすいしパクリやすいから名

397 :デフォルトの名無しさん:2010/02/11(木) 14:51:38
>>394
そんなあからさまな煽りに反応しちゃうから馬鹿にされるんだろw

398 :デフォルトの名無しさん:2010/02/11(木) 17:09:14
>>397
おまえ、なにを必死になってるんだ。w

399 :デフォルトの名無しさん:2010/02/11(木) 17:44:47
わざわざ必死とレスしちゃう>>398必死だな。w

400 :デフォルトの名無しさん:2010/02/11(木) 19:01:22
Ruby を使っているオレが、C# を覚えようとする場合のオヌヌメ本を教えて。
まずは、コマンドラインオプション、正規表現、標準入出力で、
フィルターソフトが書ければいい。
できれば、http の記述があると助かる。
いまは、部品をペタペタ貼るようなGUIはいらんです。

401 :デフォルトの名無しさん:2010/02/11(木) 19:03:17
オライリー

402 :デフォルトの名無しさん:2010/02/11(木) 19:08:13
ヘルプとサンプルプログラムで十分だろ。

403 :デフォルトの名無しさん:2010/02/11(木) 19:10:07
GUIがいらないならrubyでええやん

404 :デフォルトの名無しさん:2010/02/11(木) 19:22:28
ruby より C# の方が情報多くていいじゃん。

405 :デフォルトの名無しさん:2010/02/11(木) 19:23:35
はい、釣りね。
次の質問の方、どぞー。

406 :デフォルトの名無しさん:2010/02/11(木) 19:30:19
Ruby 1.8.6 を使っているんだけど、1.9 にするには、1.8.7 で警告表示を見て、
いろいろ書き換えなければならないんだよ。
Ruby 1.9.1 の歩き方
ttp://jp.rubyist.net/magazine/?0025-FirstStepRuby191
結構、メンドー。この労力を使うんだったら、C# を覚えちまった方がよさげ。
最近は、Windows ばかりで、Linux 使わないし、Ruby は Windows に冷たいし。
Visual C# Express Edition 本を立ち読みしたら、コマンドラインについて、
全く書いていない。

407 :デフォルトの名無しさん:2010/02/11(木) 19:47:32
読点の打ちかたがすげえムカツク

408 :デフォルトの名無しさん:2010/02/11(木) 19:50:04
アポロ副島と同じ病気持ちだね

409 :デフォルトの名無しさん:2010/02/11(木) 20:07:33
コマンドラインプログラムについて質問があります。
VisualC#2008でコマンドラインプログラムを作りたいと思っています。
単純なものはできるのですが、
たとえばftpみたいに、
プロンプトを独自のものに置き換えて表示して、
対話的にコマンドを実行して、
処理が終わったら、exitで終了するようなものを作る場合、
どのように既存のプロンプトを消したらよいのでしょう?


410 :デフォルトの名無しさん:2010/02/11(木) 20:10:38
それプロンプトで実装する必要あんのかなあ?
独自のプロンプトって要するにターミナルみたいなもんでしょ

411 :デフォルトの名無しさん:2010/02/11(木) 20:13:14
Read() とか ReadLine() すればいいだけ。

412 :デフォルトの名無しさん:2010/02/11(木) 20:26:13
プロンプトを独自のものに置き換えて表示してるわけではないとおもうけど

413 :デフォルトの名無しさん:2010/02/11(木) 20:35:44
>>409
「数字を入力してください」とか出すのと同じ理屈だよ

414 :デフォルトの名無しさん:2010/02/11(木) 21:06:53
>>409
C#に無関係の部分で知識が不足しているようだから、CUIについて理解してからまたおいで

415 :デフォルトの名無しさん:2010/02/11(木) 21:11:55
>>414
うん。わかった。

416 :デフォルトの名無しさん:2010/02/11(木) 21:15:10
新規プロジェクト作るときにConsoleアプリケーション選べば良いだけだろ


417 :デフォルトの名無しさん:2010/02/11(木) 22:01:52
>>416
え?

418 :デフォルトの名無しさん:2010/02/11(木) 22:05:21
>>417
なにそれこわい

419 :デフォルトの名無しさん:2010/02/11(木) 22:17:10
DataTable で、任意の位置に列を追加することは可能でしょうか?

たとえば col1 から col10 と言う名称で列を DataTable.Columns.Add で追加していたとして、
その後、新たに Columns[ 0 ] の位置に col0 を追加する。ってイメージなのですが。

これが出来ると、DataGrodView にそのままバインドすれば済むので楽かなーと。

420 :デフォルトの名無しさん:2010/02/11(木) 22:25:00
すいません。コメントの付け方で質問です

C#って、コメントを付けるときに
関数やクラスだったら
/// <summary>関数名</summary>
/// <param name="xx">なんちゃって変数</param>
見たいにXMLのタグでかけるじゃないですか

それで、namespaceにも同じように付けようとしら
XMLコメントが有効な言語要素の中にありません
というワーニングが出てしまいました
namespaceにもコメントを付けたいときはどうすればいいんでしょう

421 :デフォルトの名無しさん:2010/02/11(木) 22:25:16
ColumnsにAddしたあとSetOrdinal

422 :デフォルトの名無しさん:2010/02/11(木) 22:30:55
>>420
できない
名前空間には実体がない

423 :デフォルトの名無しさん:2010/02/11(木) 22:31:22
>>420
MSのFormのソースだとこんな感じだね
//------------------------------------------------------------------------------
// <copyright file="Form.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------------

/*
* Copyright (c) 1999, Microsoft Corporation. All Rights Reserved.
* Information Contained Herein is Proprietary and Confidential.
*/
namespace System.Windows.Forms {
using Microsoft.Win32;
<省略>
using System.Windows.Forms.VisualStyles;

424 :デフォルトの名無しさん:2010/02/11(木) 22:32:04
続き

/// <include file='doc\Form.uex' path='docs/doc[@for="Form"]/*' />
/// <devdoc>
/// <para>Represents a window or dialog box that makes up an application's user interface.</para>
/// </devdoc>
[
ComVisible(true),
ClassInterface(ClassInterfaceType.AutoDispatch),
ToolboxItemFilter("System.Windows.Forms.Control.TopLevel"),
ToolboxItem(false),
DesignTimeVisible(false),
Designer("System.Windows.Forms.Design.FormDocumentDesigner, " + AssemblyRef.SystemDesign, typeof(IRootDesigner)),
DesignerCategory("Form"),
DefaultEvent("Load"),
InitializationEvent("Load"),
]
public class Form : ContainerControl {

425 :デフォルトの名無しさん:2010/02/11(木) 22:34:33
>>422
うるさいです

426 :デフォルトの名無しさん:2010/02/11(木) 22:38:25
>>422-424
ありがとうございます。
出来無いっぽいですね
MS自体も何事もなく普通のコメントを記述してるみたいだし・・・

427 :デフォルトの名無しさん:2010/02/11(木) 22:44:32
名前空間は同じ名前空間がいくらでも出てくるからね
アセンブリ一つで完結できるならまだしも
複数のアセンブリに同じ名前空間を使えるわけで
そうなると何をその名前空間のドキュメントにするの? って話になる

428 :デフォルトの名無しさん:2010/02/11(木) 22:52:57
int[]
string[]

これらの従来の配列はジェネリックのList<T>を使って

List<int>
List<string>

と表すことも出来るようになった。従来の配列の機能は
ジェネリックのList<T>を使って全て再現することができるようになったわけだけど
これってすなわち従来の配列はもはや無用の長物に化したと言うこと?

それともジェネリックのList<T>にはできない芸当が従来の配列にはできたりする?

429 :デフォルトの名無しさん:2010/02/11(木) 22:55:46
>従来の配列はもはや無用の長物に化したと言うこと?
そんなことは無いと思います

430 :デフォルトの名無しさん:2010/02/11(木) 22:57:04
"ただの配列"が使いたいときもある。

431 :デフォルトの名無しさん:2010/02/11(木) 22:57:47
>>428
固定長と可変長じゃ用途も違うでしょ

そういやどっかに配列死ね主義者のサイトがあったなぁ

432 :デフォルトの名無しさん:2010/02/11(木) 23:02:30
そもそも配列がないとList<T>作れないし
構造体の配列では構造体のメンバに直接アクセスできるけどList<T>だとそうはいかなかったりするし
P/Invokeの受け渡しには配列しか使えないし
作ったりアクセスしたりする速度は配列の方が遥かに速いし

433 :デフォルトの名無しさん:2010/02/11(木) 23:10:09
>>421
thx
そのメソッド、全然気付かなかったです。。。
助かりました。

434 :デフォルトの名無しさん:2010/02/11(木) 23:13:40
関係ないけどなんでList<T>の容量って0の次は4なんだろう。もっと取ればいいのに。
4なんかほぼ確実にすぐオーバーして再確保することになると思うんだけど

435 :デフォルトの名無しさん:2010/02/11(木) 23:32:21
>>432
つまりint、stringといった値型の配列はList<T>に移行し、
構造体やクラスの配列は従来通りの配列を使うべし
というのがこのスレの総意ということでおk?

436 :デフォルトの名無しさん:2010/02/11(木) 23:33:33
>>435
List<string>でもかまわんでしょ
stringだと動的に増減できないんだし

437 :デフォルトの名無しさん:2010/02/11(木) 23:33:55
デフォのサイズなんか万人が納得する数字なんて決められないんだから
2以上の適当な数字でいいんでしょ。

「特に指定しない限り富豪モード」より「特に指定しない限り節約モード」の方が
好まれる傾向なんだろうから悪くない数字だと思うけど。

438 :デフォルトの名無しさん:2010/02/11(木) 23:43:22
すぐに普遍解を求めるのは悪い癖だな
状況に応じろ

439 :デフォルトの名無しさん:2010/02/11(木) 23:48:18
コンストラクタでサイズ指定できるじゃん

440 :デフォルトの名無しさん:2010/02/11(木) 23:50:04
Formのオパシティーで透明度が設定できるけど、文字まで色が薄くなってしまいます。
文字はそのままにするにはどうしたらよいでしょうか?

441 :デフォルトの名無しさん:2010/02/11(木) 23:51:38
>>440
タイムリーだねえ

C#, C♯, C#相談室 Part55
http://pc12.2ch.net/test/read.cgi/tech/1265283175/80-93

442 :デフォルトの名無しさん:2010/02/11(木) 23:51:53
>>440
C#相談室の80辺りから

443 :デフォルトの名無しさん:2010/02/12(金) 00:43:33
>>435
Listは一度使うとはまるな。
なぜListをC#で最初からデフォルト配列として採用しなかったのか理解に苦しむ。

444 :デフォルトの名無しさん:2010/02/12(金) 00:47:06
Pythonチックになるな

445 :デフォルトの名無しさん:2010/02/12(金) 00:51:54
>>443
配列の方が速度が出るケースが多いから。
C#は仕様の単純性と速度が比較に登れば速度が優先される、
実務を優先させたプログラミング言語だ。

446 :デフォルトの名無しさん:2010/02/12(金) 01:00:26
>>445
言語のとろさを許容できるほどマシンが成長したというかなんというか
C#ができたころだときついだろうな

447 :デフォルトの名無しさん:2010/02/12(金) 01:05:53
ネットワーク経由のパスワードつきの他のマシンに接続して、
そのマシンの共有フォルダにファイルを書くには、
どうすればいいでしょう?

パスワードがなければ、
File.Copy("original.txt",@"\\other\shareddocs\copy.txt", true);
でよいのですが…。
アドバイスよろしくです。


448 :デフォルトの名無しさん:2010/02/12(金) 01:10:32
>>447
そこはOSに任せるべきところ。

449 :デフォルトの名無しさん:2010/02/12(金) 01:13:39
>>446
PCがどんなに高速化しても、それは全ての分野でパフォーマンスの考慮を不要に
するほどの物ではありえないから、そういう考えはナンセンス。

450 :デフォルトの名無しさん:2010/02/12(金) 01:38:14
ナンセンスだね。

451 :デフォルトの名無しさん:2010/02/12(金) 03:15:19
2chのDATはいくつかの文字に関して置き換えをしています↓
http://info.2ch.net/wiki/index.php?monazilla%2Fdevelop%2Fdat#content_1_3

たとえば

< は &lt;
> は &gt;
" は &quot;

に置き換えられています。

これらの文字を相互変換したいわけですが
文字列を一括変換できるメソッドは無いでしょうか?

452 :デフォルトの名無しさん:2010/02/12(金) 03:18:17
>>426
もういないかもしれんが…Sandcastle 向けの話。

まず、ドキュメントコメント自体では namespace はサポートされている。
でも、C# は言語的にそれを生成できない、というのが前提。

なので、Sandcastle の場合、NamespaceDoc っていうクラス作って
それにつければそれを名前空間のコメントとして使用するようにしてある

ただこれは、正直美しくない(バイナリメタデータに残るしな)と思うので、
個人的に使っている方法は、NamespaceDoc.xml というファイルを作って
これを

<member name="N:MyNamespace">
 <summary>...</summary>
 ...
</member>

こんな感じにして、ビルドプロセスいじって XSLT あたり使ってマージ
している。ドキュメントコメントファイルの生成結果は結局のところ XML
なので適当にやればいいんですよ

453 :デフォルトの名無しさん:2010/02/12(金) 03:20:18
>>451
もうその辺になってくると
System.Text.RegularExpressions.Regex
を使うしかない

454 :デフォルトの名無しさん:2010/02/12(金) 03:25:49
まあこの辺は正規表現のプロもいるだろうから晒してみてもらうついでに上げる
変数とかは自分で調整してくれ

>>451のアンカー処理
wk = System.Text.RegularExpressions.Regex.Replace(wk,
@"(<a href=\x22)(\x2e\x2e\x2ftest\x2fread\x2ecgi\x2f)([\w]+\x2f\d{10}\x2f\d+\x22\x20target=\x22_blank\x22>)(>>)(\d+)(</a>)",
"$1A$5\">>>$5</a>");

レス内のURL処理
wk = System.Text.RegularExpressions.Regex.Replace(wk,
@"s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+",
"<a href=\"$&\">$&</a>");

BEアイコンの有効化
wk = System.Text.RegularExpressions.Regex.Replace(wk,
@"(s?sssp?)(://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)",
"<img src=\"http$2\"> <br>");

455 :デフォルトの名無しさん:2010/02/12(金) 03:26:52
ちなみにBEアイコンの処理はレス内URL処理の後にしないとおかしくなるので

456 :デフォルトの名無しさん:2010/02/12(金) 03:30:18
というか正規表現の文字なんて外部ファイルに書いておいて読み込んで処理する形にしておいて
スキン作ったりする人がいるように好きなようにやらせておけばいいんだけどね
専ブラとしてはサポート用タグの埋め込みさえやれば後はスクリプトなり正規表現なりで
余裕で対応できるし

457 :デフォルトの名無しさん:2010/02/12(金) 03:30:32
HttpUtility.HtmlEncode/HtmlDecode

458 :デフォルトの名無しさん:2010/02/12(金) 03:30:49
>>454
ありがとうございます。
専用関数は無いので自身で記述する必要があるわけですね。

459 :デフォルトの名無しさん:2010/02/12(金) 03:37:51
>>458
俺もあんまり詳しくないけど>>457のようにアンカーだけに限って言えばOKなのかもしれないけどね

datの中のアンカー部分は2chの鯖関連のアドレスが埋まってるので正規表現で自分のブラウザに
都合のいい形に直す必要があるかなあと思って俺は>>454のようにやってる

460 :デフォルトの名無しさん:2010/02/12(金) 05:05:13
ふーん

461 :デフォルトの名無しさん:2010/02/12(金) 06:50:45
>>447
WNetAddConnection() とかで接続する。

462 :デフォルトの名無しさん:2010/02/12(金) 08:47:53
HttpUtility使う場面で正規表現はないだろ…。

463 :デフォルトの名無しさん:2010/02/12(金) 08:57:20
>>462
2chのdatの中のアンカーの表現ってこんな感じなんだわ
<a href="../test/read.cgi/news/1265910841/58" target="_blank">>>58</a>

それ以外のところってレスの本文の中のAAとかなんでIEコンポーネント使うのであれば
わざわざエンコードを戻す必要がないというか

464 :デフォルトの名無しさん:2010/02/12(金) 08:58:26
>>58</a>
この部分は>をエンコードした状態ね

投稿したらだめだったw

465 :デフォルトの名無しさん:2010/02/12(金) 09:01:47
表示部分をtextboxとかHTMLを認識できない物にするならHttpUtilityで戻すとかかね?

466 :デフォルトの名無しさん:2010/02/12(金) 10:52:11
WinFormsで発生するイベントを、Spy++のような感じで外からトレースをかけるツールはないんでしょうか。

467 :デフォルトの名無しさん:2010/02/12(金) 11:05:08
UWSCみたいな感じ?

468 :デフォルトの名無しさん:2010/02/12(金) 11:14:52
>>466
Using .NET: Deliver The Power Of Spy++ To Windows Forms
ttp://msdn.microsoft.com/en-us/magazine/cc163617.aspx

使い込んでないから何が出来るかしらない

469 :デフォルトの名無しさん:2010/02/12(金) 12:22:34
メインフォームから子フォームをshowすると、ウインドウズの下のタスクバーに子フォームのアイコンが表示されるんですけど、これを非表示にするにはどうしたら良いのでしょうか?

470 :デフォルトの名無しさん:2010/02/12(金) 12:32:03
子のShowInTaskbarいじれ

471 :デフォルトの名無しさん:2010/02/12(金) 12:41:45
たしかに出なくなった。サンキュー照代!

472 :デフォルトの名無しさん:2010/02/12(金) 15:07:06
プログラムの中から、.netのバージョンを知るにはどうしたら良いのでしょうか?

473 :デフォルトの名無しさん:2010/02/12(金) 15:12:16
System.Environment.Versionがそうだが、
CLRのバージョンが帰ってくるので2.0/3.0/3.5の区別がつかない。
あとはSystem.Coreがあれば3.5とかで判断するかだな。

474 :デフォルトの名無しさん:2010/02/12(金) 15:19:08
レジストリー見ればいいんじゃない

475 :デフォルトの名無しさん:2010/02/12(金) 17:00:54
レジストリのどこですか?
と当然聞くわけでして・・・

476 :デフォルトの名無しさん:2010/02/12(金) 19:17:48
最近使ったファイルをメニューに追加したいんだけどもっとも簡単な方法はなんでしょうか?

477 :デフォルトの名無しさん:2010/02/12(金) 19:21:05
>>476
MenuItemなりを動的に作ってMenuに追加するだけと思うけど

478 :デフォルトの名無しさん:2010/02/12(金) 20:40:17
印刷機能をつけたんですけど、5分以上かかって「応答なし」になるんです。。。
こういう場合、DoEventsをつけたほうがいいんですよね?

479 :デフォルトの名無しさん:2010/02/12(金) 20:44:33
スレッド使った方が

480 :デフォルトの名無しさん:2010/02/12(金) 20:49:11
スレッド厨(笑)

481 :デフォルトの名無しさん:2010/02/12(金) 20:50:31
印刷終了を待つ必要があるの?
印刷処理なげて終わりでいいじゃん。

482 :デフォルトの名無しさん:2010/02/12(金) 20:54:52
>>481
dataGridViewの入力データを読み込みながら出力してたんですけど
一回メモリに読み込んで印刷処理を別スレッドにしてもいいかもですね。
ありがとうございます。^^

483 :デフォルトの名無しさん:2010/02/12(金) 21:02:35
DataGridViewから印刷という発想が間違ってる
バインド元から引っ張ってくればいいだろ

484 :デフォルトの名無しさん:2010/02/12(金) 21:10:23
>>483
データベースとして使ってなくて、特定のフォルダの中身をよみながら
dataGridViewに反映させてたんです。。。

485 :デフォルトの名無しさん:2010/02/12(金) 21:12:00
データベース使おうが使わなかろうがDataGridViewはバインドして使うもんだ

486 :デフォルトの名無しさん:2010/02/12(金) 21:13:40
>>485
詳しく教えて下さいよ。。。

487 :デフォルトの名無しさん:2010/02/12(金) 21:16:26
DataGridView バインド
でぐぐればでてきそう
というかc#はいっぱいtips転がってるだろ

C++からこっちに来て部品の多さ情報の多さ使いやすさ
に感激したくらいだから

488 :デフォルトの名無しさん:2010/02/12(金) 21:21:09
>>487
わかりました。調べてみます。。。
御礼は調べて見つけたサイトでしますね。。。

489 :デフォルトの名無しさん:2010/02/12(金) 21:22:48
一発目ででてきたわ
http://japan.internet.com/developer/20070522/26.html

490 :478:2010/02/12(金) 21:22:56
>>486 >>488
偽者死ね

>>485 >>487
ありがとうございました。
ちょっと調べてきます。

491 :デフォルトの名無しさん:2010/02/12(金) 21:31:03
ID欲しいわ
成りすましうざい

492 :デフォルトの名無しさん:2010/02/12(金) 21:33:49
ですね

493 :デフォルトの名無しさん:2010/02/12(金) 21:36:35
そういやDataGridViewの内容をそのまま印刷するクラス群を誰かがupしてたな。

494 :デフォルトの名無しさん:2010/02/12(金) 21:57:52
酉でも付けろ

495 :デフォルトの名無しさん:2010/02/12(金) 22:02:24
ですおね

496 :478■478TRIP:2010/02/12(金) 22:04:54
これでいい?

497 :デフォルトの名無しさん:2010/02/12(金) 22:06:05
いいよ、斬新だね

498 :デフォルトの名無しさん:2010/02/12(金) 22:07:32
いいよいいよ〜次は前かがみね

499 :デフォルトの名無しさん:2010/02/13(土) 10:57:20
C#にはJavaのSSLsocketのようなSSLで通信する
ライブラリってありますか?

500 :デフォルトの名無しさん:2010/02/13(土) 11:09:37
sslStreamでよければ

501 :デフォルトの名無しさん:2010/02/13(土) 11:10:18
http://msdn.microsoft.com/ja-jp/library/system.net.security.sslstream(VS.80).aspx

502 :デフォルトの名無しさん:2010/02/13(土) 11:13:20
ご苦労

503 :デフォルトの名無しさん:2010/02/13(土) 11:52:31
パシリ乙

504 :デフォルトの名無しさん:2010/02/13(土) 13:32:29
次からはもうちょっと早くな

505 :デフォルトの名無しさん:2010/02/13(土) 13:35:16
勝手に通信したらいくないよ(´・ω・`)

506 :デフォルトの名無しさん:2010/02/13(土) 13:48:55
いくないよ…(´・ω・`)

507 :デフォルトの名無しさん:2010/02/13(土) 14:06:35
(´・ω・`)

508 :デフォルトの名無しさん:2010/02/13(土) 14:46:14
(´・ω・`) …

509 :デフォルトの名無しさん:2010/02/13(土) 14:57:37
C#超素人です。
System.IO.StreamReader myFile = new System.IO.StreamReader("D:\\output.txt
");
string myString = myFile.ReadToEnd();
という風に記述して、txtファイルからの読み取りを行っています。
この時にtxtファイルに新たな情報が書き込まれるはずなのですが、
実行中は新たな情報が書き込まれないようです。
一度、読み取りを開放すればよいのでしょうか?
開放する方法も合わせて、教えてください。

510 :デフォルトの名無しさん:2010/02/13(土) 15:02:24
毎回StreamReaderをnewし直せばたぶん大丈夫。
ただ、それならSystem.IO.File.ReadAllText("D:\\output.txt")のほうが簡単。

511 :デフォルトの名無しさん:2010/02/13(土) 15:14:02
StreamReaderでファイル読んだあとってちゃんと.Close()かけてる?
結構忘れちゃうんだよね。

人によっては using ステートメント使って Close() を呼び出さなくても
自動的に閉じるようにしてるらしいけど。

512 :デフォルトの名無しさん:2010/02/13(土) 15:36:08
>>501,511
ありがとうございました。

しかし、以下が出てダメでした。
別のプロセスで使用されているため、
プロセスはファイル 'D:\output.txt' にアクセスできません。

513 :デフォルトの名無しさん:2010/02/13(土) 15:37:53
>>512
output.txt使ってるアプリとじろ

514 :デフォルトの名無しさん:2010/02/13(土) 16:34:10
@がないから\が認識できてないとかだったらワロス

515 :デフォルトの名無しさん:2010/02/13(土) 16:34:54
って\\だったorz

516 :デフォルトの名無しさん:2010/02/13(土) 16:38:16
>512
同時に起動しないといけなかったんです。

下記に、同時読み込みのソースがあったので解決できました。
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/707shareread/shareread.html

>514
Visual Studioが叱ってくれるので(ry

517 :デフォルトの名無しさん:2010/02/13(土) 16:40:34
>>512
その辺はFAQレベル。
Windowsでは読み込みモードの他にFILE_SHAREフラグの設定がある。
詳しくはCreateFile APIのドキュメントを読め。

518 :デフォルトの名無しさん:2010/02/13(土) 18:56:08
エクセルやパワポの様な折れ線グラフをアプリ上に表示したいのですが
何かいいコントロールありますか?

519 :デフォルトの名無しさん:2010/02/13(土) 19:13:22
MSが.net3.5出した時に一緒に別コンポーネント出してたきがす。

520 :519:2010/02/13(土) 19:17:05
>>518
探したらすぐ見つかった。
使い方はググレ
http://www.microsoft.com/downloads/details.aspx?FamilyID=130f7986-bf49-4fe5-9ca8-910ae6ea442c&displaylang=ja

521 :デフォルトの名無しさん:2010/02/13(土) 22:27:16
>>520
あなたがググって説明してあげましょう

522 :デフォルトの名無しさん:2010/02/13(土) 22:29:18
C#超素人がこんなところで質問するとは思えない

523 :デフォルトの名無しさん:2010/02/13(土) 22:31:12
スレタイ全否定ですか

524 :デフォルトの名無しさん:2010/02/14(日) 14:36:07
経営シミュレーションをする場合、無償版でやるとしたらどういうデータベースでやればいいですか?
アクセスとか使ったことあるけど
プログラムソフトからDB操作とかやったことないから流れがわからない
ひょっとしたらDBに頼らずに配列とか構造体にガシガシ突っ込むやり方でいいの?

525 :デフォルトの名無しさん:2010/02/14(日) 14:37:57
とりあえずエクセルで間に合わなくなったらまたおいで。

526 :デフォルトの名無しさん:2010/02/14(日) 15:13:32
>>524
NHibernate


527 :デフォルトの名無しさん:2010/02/14(日) 15:16:08
なんという答えになってないレス。よっぽど >>525の方がまし。

528 :デフォルトの名無しさん:2010/02/14(日) 15:19:21
>>527
カス

529 :デフォルトの名無しさん:2010/02/14(日) 15:37:51
Excelみたいにユーザーがやったことを覚えて、マクロにする機能を組み込みたいんだけど、簡単に実現するにはどうしたらよいでしょう?

530 :デフォルトの名無しさん:2010/02/14(日) 15:41:31
Excelみたいにユーザーがやったことを覚えて、マクロにする機能を組み込めばいいよ。

531 :デフォルトの名無しさん:2010/02/14(日) 15:42:57
マウス操作とか、ってレベルでやるか、コマンドレベルでやるか。
コマンドレベルなら、記録できる操作にあらかじめコマンドを割り振っておく。

そんで、記録のときに、何かのコレクションに突っ込んでいく、みたいな感じかね。

532 :デフォルトの名無しさん:2010/02/14(日) 15:47:07
需要の少ない高価なアプリでしばしばそういうのがあるけどすごく使いづらい

533 :デフォルトの名無しさん:2010/02/14(日) 15:52:08
呼ばれたToolStripItemを保存しておいて、順番にPerformClick()を呼んでいくとか


534 :デフォルトの名無しさん:2010/02/14(日) 15:53:31
UIAとか

535 :デフォルトの名無しさん:2010/02/14(日) 16:03:45
いずれにせよ簡単にはできないのでこんなところで質問するようなレベルなら諦めなさい

536 :デフォルトの名無しさん:2010/02/14(日) 17:06:19
諦める(´・ω・`)

537 :デフォルトの名無しさん:2010/02/14(日) 17:26:13
素直さにワロタ

538 :デフォルトの名無しさん:2010/02/14(日) 18:52:48
http://codezine.jp/article/detail/530
上記サンプルを打ち込んだのですが、ローカルIPでは正常に
動くのですが、グローバルIPで指定するとタイムアウトして異常終了
してしまいます。

ポートも開放しているのですが、どうにも原因が分かりません。
どなたか分かる方、教えてください。

539 :デフォルトの名無しさん:2010/02/14(日) 20:18:21
ローカルIPでは接続できているんだから、ネットワーク構成に問題がある可能性が高い。
とりあえず、サーバー実行時にListenしているIPアドレス、ポートが正しいか確認せよ。

確認方法やネットワーク構成についてはスレチなのでここで訊くな。


540 :デフォルトの名無しさん:2010/02/14(日) 20:47:28
Qt CreatorをFreeBSDにインストールしたいんだけどpackageで提供されていたっけ?

541 :デフォルトの名無しさん:2010/02/14(日) 20:48:12
C#スレに誤爆とかorz・・・

542 :デフォルトの名無しさん:2010/02/14(日) 21:12:29
永井豪テイストが入ってるな( ・ω・)y─┛〜〜

543 :デフォルトの名無しさん:2010/02/15(月) 00:12:52
C#でエラー起こった時にログを吐きだす方法ってどうすればいいんだ?

予期せぬ例外が発生した時にログを出す方法は分かるんだが
応答せずに止まったりしたときにエラーログをtxtとかに保存する方法を知りたい。

544 :デフォルトの名無しさん:2010/02/15(月) 00:20:10
無理

545 :デフォルトの名無しさん:2010/02/15(月) 00:24:04
可能

546 :デフォルトの名無しさん:2010/02/15(月) 00:27:06
どっちやねん

547 :538:2010/02/15(月) 00:35:21
>>539
ありがとうございます
IP、ポート、ルータの設定等を確認してみました

IP、ポートは共に正しかったのですが、タイムアウトしていたのではなく
RST/ACKパケットが送信されていることが分かりました

確かに開放されているポートで、他ソフトでは正常に通信出来ています。
また、ファイアーウォールの例外設定も行なっています
何か原因と思われることは他にあるでしょうか?

548 :デフォルトの名無しさん:2010/02/15(月) 00:44:05
ルーター使ってるならNATは?

549 :538:2010/02/15(月) 01:16:50
>>548
NATは設定していません
ファイアーウォールを切ってもダメでした
ルータ周りを調べてみようと思います

550 :デフォルトの名無しさん:2010/02/15(月) 01:19:47
問題外だな。

551 :デフォルトの名無しさん:2010/02/15(月) 01:52:38
「ルーターでポートマッピングして、LAN内からルーターのグローバルIPを指定」とかアホなことしてるんだろうと思って、
若干スレチではあるが「プログラミング一般」の範囲内に収まるように配慮して回答したのに、無駄にしないでくれよ。

552 :デフォルトの名無しさん:2010/02/15(月) 01:57:04
ルーター内からグローバルIPでアクセスできないだろ。
明日、会社からアクセスしてみろ。

553 :538:2010/02/15(月) 02:35:07
>>551-552
仰る通りでした・・・
会社からアクセスしてみます
ありがとうございました

554 :デフォルトの名無しさん:2010/02/15(月) 05:12:33
トイレ(´・ω・`)

555 :デフォルトの名無しさん:2010/02/15(月) 07:26:50
なんだこのオチ

556 :デフォルトの名無しさん:2010/02/15(月) 08:22:51
ヘアピンNAT

557 :デフォルトの名無しさん:2010/02/15(月) 10:05:10
ルーターによってはできるけどな、YAMAHAのとか

558 :デフォルトの名無しさん:2010/02/15(月) 11:15:10
スタティックメソッドと同名のインスタンスメソッドって書けないんだっけ?

559 :デフォルトの名無しさん:2010/02/15(月) 11:27:54
かけない

560 :デフォルトの名無しさん:2010/02/15(月) 11:42:55
ありがとうだぜ

561 :デフォルトの名無しさん:2010/02/15(月) 19:19:37
C#でhttpsの通信てどうやんの?
具体的には、IDとパス入れるサイトのログイン後のhtmlを取得したい

562 :デフォルトの名無しさん:2010/02/15(月) 19:36:39
DataGridViewのRowヘッダーを"右クリック"した時の処理を指定したい
(具体的には右クリックしたヘッダーの列全体を選択したい)のですが、
どういった方法がありますか?

563 :デフォルトの名無しさん:2010/02/15(月) 19:40:22
DataGridView..CellMouseClickイベントを拾って
ヘッダをクリックしてるようなら選択すればいい

564 :デフォルトの名無しさん:2010/02/15(月) 19:44:28
>>563
ありがとうございます!

565 :デフォルトの名無しさん:2010/02/15(月) 19:47:12
いえいえ

566 :デフォルトの名無しさん:2010/02/15(月) 21:47:52
http://www.atmarkit.co.jp/fdotnet/dotnettips/326cookie/cookie.html

これやっても足跡表示できません><

567 :デフォルトの名無しさん:2010/02/15(月) 22:38:09
プロパティグリッドの中でアイテムコレクションをクリックするとコレクションエディターが出てくるけど、このコレクションエディターでOKが押された時に、あるいはプロパティ値が変更になった

568 :デフォルトの名無しさん:2010/02/15(月) 22:40:52
>>567
すいません、続きです。

あるいはプロパティ値が変更になった時に発生するイベントは取れないでしょうか?

569 :デフォルトの名無しさん:2010/02/15(月) 22:47:40
>>566
mixi巡回ロボ作ったとき俺もそれ見ながらやったけどできたよ


570 :デフォルトの名無しさん:2010/02/15(月) 23:18:20
DataGridView について、教えてください。

列にアイコンを表示することが出来ます。
これはひとつの列にひとつのアイコンと言うことなのですが、ひとつの列に複数のアイコンを表示することは出来るでしょうか?

571 :デフォルトの名無しさん:2010/02/15(月) 23:21:25
>>568
INotifyPropertyChanged

572 :デフォルトの名無しさん:2010/02/16(火) 13:59:30
お願いします。
1枚のビットマップを走馬灯のようにスクロールさせたいのですが、どの
ようにしたらよいでしょうか。


573 :デフォルトの名無しさん:2010/02/16(火) 14:03:59
WinFormsではそういうことは難しくて個別の対応が必要なので一般には言えません
簡単にやりたかったらWPF使ってください

574 :デフォルトの名無しさん:2010/02/16(火) 14:07:41
どこまでやっててどこからわからないの?
走馬灯ってよくわからんが、横スクロールでループさせたいなら
基準点を右端にしたやつと左端にしたやつで2回書けばよろしい

575 :デフォルトの名無しさん:2010/02/16(火) 14:12:01
PictureBoxを時間で移動させとけ

576 :572:2010/02/16(火) 14:15:13
ありがとうございます。
「走馬灯のように」ですが、一番左の列を一番右にもっていき、それを繰り
返したいです。
可能でしょうか。

577 :デフォルトの名無しさん:2010/02/16(火) 14:19:37
PictureBoxを2つ使ってもいいけどそんな場当たり的な方法よりも
OnPaintをオーバーライドしてDrawImageを2回呼ぶ方が応用は利く

578 :デフォルトの名無しさん:2010/02/16(火) 14:23:44
今はどこまでできてるの、画像表示して横に流すとこくらい?

579 :デフォルトの名無しさん:2010/02/16(火) 14:24:44
画像の方を表示枠の分だけ重複させておけば描画は1回で済む
トレードオフについては自分で判断するように

580 :デフォルトの名無しさん:2010/02/16(火) 14:54:40
タイマーを使ったオーソドックスなのはこんなかんじ。
Bitmap bitmap = Properties.Resources.MikuMiku;
Point p1 = new Point(0, 0);
private void pictureBox1_Paint(object sender, PaintEventArgs e) {
  DrawScrollImage(e.Graphics);
}
private void timer1_Tick(object sender, EventArgs e) {
  if (p1.X >= bitmap.Size.Width) p1.X = 0;
  else p1.X = p1.X + 4;
  using (Graphics g = pictureBox1.CreateGraphics()) {
    DrawScrollImage(g);
  }
}
private void DrawScrollImage(Graphics g) {
  g.DrawImage(bitmap, p1);
  g.DrawImage(bitmap, new Point(p1.X - bitmap.Size.Width, p1.Y));
}


581 :デフォルトの名無しさん:2010/02/16(火) 14:58:54
へえ

582 :572:2010/02/16(火) 15:24:35
ありがとうございます!!!
なぜDrawImageを2回呼ぶのかさっぱり意味がわかりませんでした
が、マイナスの値も使えるんですね。
本当にありがとうございました。

583 :デフォルトの名無しさん:2010/02/16(火) 16:37:13
それだと画像の幅が4の倍数じゃないときに一瞬カクつくんだぜ
と一応突っ込んでみる

584 :デフォルトの名無しさん:2010/02/16(火) 16:38:17
コピペじゃなくて理解しようとしろよ

585 :デフォルトの名無しさん:2010/02/16(火) 16:42:30
>>580
軽く添削してみようか

・計算の間違い
  > if (p1.X >= bitmap.Size.Width) p1.X = 0;
  > else p1.X = p1.X + 4;
  確実に描画範囲を超える(おそらく、前回の描画が残って何pxか重複する)
  増加直後に判定しないと駄目、というか剰余を使え

・描画処理は一箇所(Paint内)にまとめる
  描画内容の更新をしたい場合は、InvalidateかRefreshを使う

・タイマーイベントでは描画処理を行わない
  Invalidateを使って描画タイミングはOSに一任すべき
  処理が重いときなどに、描画がフレーム落ちするのは許容される場合が多いが、
  内部計算はできるだけ正確性を確保する必要がある
  一般論なので、572が不正確でもフレーム落ちはNGというならRefreshを使う

586 :デフォルトの名無しさん:2010/02/16(火) 17:03:28
アニメーションでInvalidateはないな。チラついてかなわんのじゃない。

587 :デフォルトの名無しさん:2010/02/16(火) 17:06:24
doublebuffer

588 :デフォルトの名無しさん:2010/02/16(火) 17:15:31
ちらつくのはバックグラウンドを描くから

589 :デフォルトの名無しさん:2010/02/16(火) 17:20:02
だそうです

590 :デフォルトの名無しさん:2010/02/16(火) 17:26:21
WPFだとDrawingBrushやRectAnimationで軽く実現できるのだが、
silverlightに持っていこうとすると度々それが無かったりするので困る。

591 :デフォルトの名無しさん:2010/02/16(火) 17:38:55
>>562に関連してなのですが、この右クリックによる列の選択とContextMenuStripの呼び出しを
同時に行いたいです。DataGridViewにContextMenuStripを設定すると選択がされなくなってしまうのですが、
何か良い方法はありませんか?

一応CellMouseClickイベントハンドラの内部からContextMenuStrip.Show(int x,int y)を呼び出すことで
機能は果たせたのですが、もっと良いやり方がありそうな気がします。

592 :デフォルトの名無しさん:2010/02/16(火) 21:10:02
C++のときのコピーコンストラクタってC#ではどうなったの?

593 :デフォルトの名無しさん:2010/02/16(火) 21:12:56
わかりにくいから削除

594 :デフォルトの名無しさん:2010/02/16(火) 21:44:12
ほんとか?

595 :デフォルトの名無しさん:2010/02/16(火) 22:22:25
>>592
C#のクラスオブジェクトの取り扱いは、
C++で言うとnewでヒープに確保してそのポインタを持ち回っている状態。
だから、コピーコンストラクタは基本的に出番がない。

C++でもコピー不可のクラスなんて珍しくはなかったでしょ。
C#ではそっちのほうが基本というわけ。

XElementのように、自身と同じ型を引数に取るコンストラクタを持たせることは可能。
言語上、何か特別扱いされることはないだけ。
ただ、複製を作るには、Cloneメソッドを定義してやるほうが一般的。

596 :デフォルトの名無しさん:2010/02/16(火) 22:28:56
structは値型、これにはデフォルトのコピーコンストラクタがある。
反対にユーザーは一切定義できない。

597 :デフォルトの名無しさん:2010/02/16(火) 22:31:18
最近のMSはICloneableも失敗だったから無くしていこうという方向らしいよ

598 :デフォルトの名無しさん:2010/02/16(火) 22:49:30
>>595
> C#のクラスオブジェクトの取り扱いは、
> C++で言うとnewでヒープに確保してそのポインタを持ち回っている状態。
> だから、コピーコンストラクタは基本的に出番がない。

C#で

MyClass obj_1 = new MyClass();
MyClass obj_2 = obj_1;

とやっても obj_1 は obj_2 にコピーされるわけでなく共通のポインタが代入されるだけってこと?
obj_1 を変更すれば obj_2 にも反映され、 obj_2 を変更すれば obj_1 にも反映されるってこと?

599 :デフォルトの名無しさん:2010/02/16(火) 22:51:27
>>598
そうよ。
それ今まで知らなかったの?

600 :デフォルトの名無しさん:2010/02/16(火) 22:51:36
やってみればいいじゃん。

601 :デフォルトの名無しさん:2010/02/16(火) 22:53:18
C++から移るならMSのC++とC#の違い解説読め

602 :デフォルトの名無しさん:2010/02/16(火) 22:55:47
値型と参照型の区別が付いてない初心者とみた
けどここは初心者用だからそれもありだと思った(南無

603 :デフォルトの名無しさん:2010/02/16(火) 23:00:28
>>599
> そうよ。
> それ今まで知らなかったの?

うん、あまりクラスオブジェクトを別のクラスオブジェクトに代入する機会って無かったから( ´・ω・)

604 :デフォルトの名無しさん:2010/02/16(火) 23:01:18
>>569
http://www.atmarkit.co.jp/fdotnet/dotnettips/326cookie/cookie.html

今もできる?

ログインページのURLとか存在しないんだけど

605 :デフォルトの名無しさん:2010/02/16(火) 23:07:34
ちょっとまって・・・
コピーコンストラクタが無いってことはC#でメソッドにクラスオブジェクトを渡して
メソッド内でそのクラスオブジェクトをいじった場合って、元のクラスオブジェクトに
メソッドで施した変更が反映されちゃうってこと?

メソッドへのクラスの値渡しは不可能ってこと?

606 :デフォルトの名無しさん:2010/02/16(火) 23:10:41
シリアライズして渡せよ。
シャローコピーのCloneは却下な。

607 :デフォルトの名無しさん:2010/02/16(火) 23:13:21
クラスを値渡しする必要性がよく分からん

608 :デフォルトの名無しさん:2010/02/16(火) 23:14:24
やってみればいいじゃん。

609 :デフォルトの名無しさん:2010/02/16(火) 23:17:28
>>607
C#やJavaやるならいい傾向だよ。

610 :デフォルトの名無しさん:2010/02/16(火) 23:17:40
クラスが他の共有されてるインスタンスへのポインタを持ってたら?
結局クラスの実装次第だからあんまり意味がないんだよ

611 :デフォルトの名無しさん:2010/02/16(火) 23:20:37
>>609
はあ?頭大丈夫か?

612 :デフォルトの名無しさん:2010/02/16(火) 23:27:52
順当に考えるなら大方の場合でいらないから機能として切り捨てられたんだろうけど…

613 :デフォルトの名無しさん:2010/02/17(水) 00:21:44
値渡しはともかく、C++の参照と等価の機能は年に数度あったらいいのにとは思ったりすることがあるな。

614 :デフォルトの名無しさん:2010/02/17(水) 00:53:24
>>597
それEffective C#にも書いてたのね。
ICloneableは使うなって。

615 :デフォルトの名無しさん:2010/02/17(水) 00:59:24
>>613
いやーいらないでしょ
C#になれるとC++が駄目すぎる・・・
ネイティブコンパイルできて早いだけの言語にしか見えない・・・

616 :デフォルトの名無しさん:2010/02/17(水) 00:59:49
DelphiからC#に流れてC++はほとんど触ったことないんだが
C++だと>>598のコードでコピーされるって話(だよな?)に逆に驚いた

617 :デフォルトの名無しさん:2010/02/17(水) 01:00:11
使うなっていうか、使ったことも使いたいと思ったこともないけどなw
むしろどういう場面で便利なんだか思いつかないよ

618 :デフォルトの名無しさん:2010/02/17(水) 01:04:42
>>616
C#なんかでコピーしないで成立するのはGCがいるからじゃないかな・・・と思ってるけど

619 :デフォルトの名無しさん:2010/02/17(水) 02:05:56
>>616
C#だと型が値型か参照型かでコピーされるか参照されるかが決まるから
コードを書くときに常に型に注意しておく必要があるんだよな。

それっていいスタイルなんだろうか?

620 :デフォルトの名無しさん:2010/02/17(水) 03:16:56
他にいい案でもあるのか?落とし所としては妥当な選択だと思うのだけど

621 :デフォルトの名無しさん:2010/02/17(水) 07:25:39
出た低能さん

622 :デフォルトの名無しさん:2010/02/17(水) 09:05:46
>>605 も言ってるけど、引数で関数に渡したオブジェクトが変更されない保障みたいなのは時々欲しいと思う
逆に変更されることを表してもいいんだが、まぁC++で言うconstの事だけどさ

623 :デフォルトの名無しさん:2010/02/17(水) 09:21:49
読み取り専用のインターフェイスを準備するか、
interface IFooRo { int X { get; } int Y { get; }}
class Foo : IFooRo {
  public Foo(int x, int y) { X = x; Y = y; }
  public int X { get; set; } public int Y { get; set; } }
イミュータブルオブジェクトを使うか。
class FooImutable {
  public FooImutable(int x, int y) { X = x; Y = y; }
  public int X { get; private set; } public int Y { get; private set; } }
どっちかだね。Stringは後者。

624 :デフォルトの名無しさん:2010/02/17(水) 10:01:06
C#のコンパイラだけでサポートするならできなくはないかもしれないけど全く意味がない
他の言語の対応を考えると無理

625 :デフォルトの名無しさん:2010/02/17(水) 10:40:19
結局のところ陰でこっそり読み取り用のインターフェイスを作るような実装になるな。

626 :デフォルトの名無しさん:2010/02/17(水) 10:48:51
>>616も言ってるけどC++でポインタを渡すより値渡しが好まれるのって
たいていヒープにメモリ取ると面倒だからでしょ

627 :デフォルトの名無しさん:2010/02/17(水) 11:35:43
タブの上に自分で作ったユーザーコントロールを貼り付けて、そのタブが選択された時だけ、
ユーザーコントロール内であるファイルを呼んでリストボックスに流し込みたいのです。
それで、ユーザーコントロールが自分が貼り付けられているタブが選択されたというのを知るにはどうしたら良いのでしょうか?

628 :デフォルトの名無しさん:2010/02/17(水) 11:41:30
>>C++でポインタを渡すより値渡しが好まれる

んなこたぁない
const参照渡しが好まれる

それにクラスインスタンスはポインタ・スマートポインタで管理する

初心者は値渡しを好むのは確かだが

629 :デフォルトの名無しさん:2010/02/17(水) 12:01:49
>>627
TabControl>TabPage>UserControlっていう構造になっている
TabControlのSelectedIndexChangedを拾って
選択中のTabPageがUserControlの親コンテナと等しいかどうか確認すればいい


630 :デフォルトの名無しさん:2010/02/17(水) 12:38:49
>>629
ユーザーコントロール内から自分の親コンテナを知るにはどうしたらよいですか?

631 :デフォルトの名無しさん:2010/02/17(水) 12:43:18
>>630
[自分のコントロール].Parent.Nameとかかな

632 :デフォルトの名無しさん:2010/02/17(水) 12:47:26
アクティブになったタブ内のコントロールはVisibleChangedイベントが発生した気がするが?

633 :デフォルトの名無しさん:2010/02/17(水) 12:47:56
ですね

634 :デフォルトの名無しさん:2010/02/17(水) 13:01:27
VisibleChangedで解決しました。どうもありがとうございました

635 :デフォルトの名無しさん:2010/02/17(水) 14:17:01
>>634
また俺が答えてあげるよ。安心しなw

636 :デフォルトの名無しさん:2010/02/17(水) 14:33:24
男は必要ないよ( ・ω・)y─┛〜〜

637 :デフォルトの名無しさん:2010/02/17(水) 15:12:45
(>>635).Dispose();

638 :デフォルトの名無しさん:2010/02/17(水) 15:45:43
手抜きだから実装されてないと思う

639 :デフォルトの名無しさん:2010/02/17(水) 16:15:02
'System.NotImplementedException' の初回例外が 'ふらっとC#,C♯,C#(初心者用) Part55' で発生しました。

640 :632:2010/02/17(水) 17:51:41
>>635 なにこいつ

641 :デフォルトの名無しさん:2010/02/17(水) 20:29:17
実体を持たない参照野郎

642 :デフォルトの名無しさん:2010/02/17(水) 20:31:22
>>640
気にしないほうがいい
スレに居座ってるなり済ましクンだから

643 :デフォルトの名無しさん:2010/02/17(水) 20:58:56
へえ

644 :デフォルトの名無しさん:2010/02/17(水) 21:04:17
>>622
C++ではクラスオブジェクトを関数に渡すときは効率を考えてほとんどconst参照渡ししてたね。
いちいち参照渡し指定するのが面倒だからC#ではデフォルトでクラスオブジェクトは
参照渡しするようにしたんだろうけどそれがかえって統一性を無くしちゃったね。

645 :デフォルトの名無しさん:2010/02/17(水) 21:10:05
>>644
でもさ、プログラム作るうえで一時的なコピーは必要かもしれないけど
それ以外ってほとんど参照で足りることの方が多くない?

C#の設計ってものすごくよく考えてあると思うんだけど

646 :デフォルトの名無しさん:2010/02/17(水) 21:10:26
>>644
だね

647 :デフォルトの名無しさん:2010/02/17(水) 21:19:56
というかなんでもかんでもスタックに作ろうとするから参照渡しなんていう変なものが必要になるんだよ

648 :デフォルトの名無しさん:2010/02/17(水) 21:28:01
644はどうしようもないな

649 :デフォルトの名無しさん:2010/02/17(水) 21:42:15
スクロールバーを変化させて、その値に従って処理をさせてるんですが、
処理が重いのでスクロールバーを早くを動かすと追いつきません。
それでスクロールバーのイベントが貯まってきたら、最新のものを除いて
キャンセルしたいのですが、どうやったら出来るのでしょうか?

650 :デフォルトの名無しさん:2010/02/17(水) 21:43:48
>>644
初心者が語ると嫌われるよ

651 :デフォルトの名無しさん:2010/02/17(水) 21:43:54
処理を軽くする方が簡単だと思う

652 :デフォルトの名無しさん:2010/02/17(水) 21:45:10
>処理が重い
何をやってるんだろうw

653 :デフォルトの名無しさん:2010/02/17(水) 21:45:14
だね

654 :デフォルトの名無しさん:2010/02/17(水) 21:50:20
ですね

655 :デフォルトの名無しさん:2010/02/17(水) 22:27:33
>>645
> C#の設計ってものすごくよく考えてあると思うんだけど

そういうこと。
無知な人間でも最良の選択肢を言語側が勝手に推測して選んでくれるという親切設計。

656 :デフォルトの名無しさん:2010/02/17(水) 22:39:11
>>644
C#にconstがないのは
constつける必要もなく大体データが変わるのは
メソッドを持っているクラスだからじゃないの?
class.foo(a);
とかあったらclassの内部データは変わるだろうけどaは普通変えないでしょ。


657 :デフォルトの名無しさん:2010/02/17(水) 22:48:54
>>656
プロパティを持ってるクラスは?

658 :デフォルトの名無しさん:2010/02/17(水) 22:51:27
>>657
値渡しの項目は書き換えじゃないの?
参照渡しの場合は参照の入れ変えだろうし

659 :デフォルトの名無しさん:2010/02/17(水) 22:55:44
>>657
値渡しの項目は書き換えじゃないの?
参照渡しの場合は参照の入れ変えだろうし

660 :デフォルトの名無しさん:2010/02/17(水) 22:55:52
そもそもref使うなって言うしな
引数に書き込むな

661 :デフォルトの名無しさん:2010/02/17(水) 22:59:00
参照渡し厨さん、いい加減にしてください・・・

662 :デフォルトの名無しさん:2010/02/17(水) 23:02:49
値渡し厨さんこそ、時代遅れだということに気づいたらどうですか・・・

663 :デフォルトの名無しさん:2010/02/17(水) 23:03:17
うるせー殺すぞ

664 :デフォルトの名無しさん:2010/02/17(水) 23:04:49
通報してきた


665 :デフォルトの名無しさん:2010/02/17(水) 23:05:08
どっちもどっち

666 :デフォルトの名無しさん:2010/02/17(水) 23:06:39
>>660
C++の参照は危険だが
C#のref/outは安全

667 :デフォルトの名無しさん:2010/02/17(水) 23:08:22
.NET4.0からはoutに変わってTupleの過剰摂取が始まりそうだ

668 :デフォルトの名無しさん:2010/02/17(水) 23:15:04
>>666
refはともかくoutを使うな
http://msdn.microsoft.com/ja-jp/library/ms182131.aspx

669 :デフォルトの名無しさん:2010/02/17(水) 23:15:58
なーんで使いたがるかなあ

670 :デフォルトの名無しさん:2010/02/17(水) 23:19:17
>>668
おことわりします

671 :デフォルトの名無しさん:2010/02/17(水) 23:21:01
そのうち>>668のデザインガイドラインに「パブリックプロパティおよびメソッドでTupleを返さないで下さい」って出るよ。
カシオミニを掛けてもいい。

672 :デフォルトの名無しさん:2010/02/17(水) 23:22:46
>>671
根拠を言いなさい

673 :デフォルトの名無しさん:2010/02/17(水) 23:26:02
そんなの出るかなあ?
まあ期待しといてやる

674 :デフォルトの名無しさん:2010/02/17(水) 23:32:14
名は体を表すに真っ向から反するから
外から見える部分には推奨されないような気はする。

675 :デフォルトの名無しさん:2010/02/17(水) 23:40:05
>>668
refに統一するとして、初期化はどうするんだ?
intとかは適当に数字の0とか入れて渡せばいいがそれ以外の型に関してはどうする?

676 :デフォルトの名無しさん:2010/02/17(水) 23:53:25
>メソッドで異なるインスタンスを返す必要がある場合、メソッドの戻り値を使用して実現します。

refも使うな
殺すぞ

677 :デフォルトの名無しさん:2010/02/17(水) 23:54:27
殺してみろハゲ

678 :デフォルトの名無しさん:2010/02/17(水) 23:56:00
よんだ?
http://carview-img02.bmcdn.jp/carlife/images/user/145983/p1.jpg

679 :デフォルトの名無しさん:2010/02/17(水) 23:58:43
思い切りサッカーボールキックしてあげたい

680 :デフォルトの名無しさん:2010/02/18(木) 00:05:17
>>676
通報してきた

681 :デフォルトの名無しさん:2010/02/18(木) 03:38:19
C#の関数がマルチリターンバリューサポートしてたらrefなくてもそんなに困らんけど

682 :デフォルトの名無しさん:2010/02/18(木) 03:39:23
構造体かクラス返せばいいと思ってる俺は負け組?

683 :デフォルトの名無しさん:2010/02/18(木) 03:40:39
out使えばいいよ

684 :デフォルトの名無しさん:2010/02/18(木) 07:37:51
>>682
うん

685 :デフォルトの名無しさん:2010/02/18(木) 11:52:03
>>682
板住人の総意だけど…君は負け組です。

686 :デフォルトの名無しさん:2010/02/18(木) 13:10:15
総意で俺負け組だったのか…終わってるな俺

そういう時って何かいい方法はいったい?
outをガンガン並べていくとか?

687 :デフォルトの名無しさん:2010/02/18(木) 13:20:23
Tupleって何の意味があるんだろ
IronPythonなどの動的言語では各自勝手に実装してIDynamicMetaObjectProviderでdynamicサポート
するのが普通だしC#でも匿名型+dynamicの方が可読性からいえばまだマシだし

688 :687:2010/02/18(木) 13:26:47
調べてみたらF#との相互運用のためらしい
使うなってことだな

689 :デフォルトの名無しさん:2010/02/18(木) 13:57:22
君は使わなくても良いよ。

690 :デフォルトの名無しさん:2010/02/18(木) 14:04:33
タプルは8つまでは簡単に作れるのだが20のタプルを作ろうとするとこのありさま。
var t20 = new Tuple<int,int,int,int,int,int,int,
  Tuple<int,int,int,int,int,int,int, Tuple<int,int,int,int,int,int>>>
    (1,2,3,4,5,6,7,new Tuple<int,int,int,int,int,int,int,
      Tuple<int,int,int,int,int,int>>(8,9,10,11,12,13,14,
        new Tuple<int,int,int,int,int,int>(15,16,17,18,19,20)));


691 :デフォルトの名無しさん:2010/02/18(木) 14:08:34
そりゃ人間が直接使うものじゃないからな。
本当はコンパイラが生成するべき。C#でサポートされることはまずないだろうけど。

692 :デフォルトの名無しさん:2010/02/18(木) 14:19:20
1次元配列で読み取ったデータを、3次元配列に変更したいのですが、
ループで廻して並べ替えればもちろん出来るのですが、
一発で変換することはできませんでしょうか?
MATLABでいうところのreshape関数なんですが?

693 :デフォルトの名無しさん:2010/02/18(木) 14:22:46
無いので自分で作る
.NETでは基本的に多次元配列は非常に冷遇されていてほとんど便利な機能がないので
できれば多次元配列は使わない方がいい

694 :デフォルトの名無しさん:2010/02/18(木) 14:24:26
そうですか。自分で作ります(´・ω・`)

695 :デフォルトの名無しさん:2010/02/18(木) 15:27:28
sudo kill -9 676

696 :デフォルトの名無しさん:2010/02/18(木) 15:37:43
なんか怖いです(´・ω・`)

697 :デフォルトの名無しさん:2010/02/18(木) 15:59:07
Tupleって用語だと思い込んでたが.NET4.0からサポートされる機能?のことだったのか
戻り値を複数返したいとき、わざわざクラスか構造体作らなくても
Tupleで返せるようになる?

698 :デフォルトの名無しさん:2010/02/18(木) 16:10:43
タプルをサポートする言語のために追加されただけ。C#ではサポートされない。
Item1, Item2みたいな無意味な名前のプロパティを持った型にすぎないので可読性最悪。
匿名型をdynamicとして受け渡しするほうがずっとマシ。

699 :デフォルトの名無しさん:2010/02/18(木) 18:15:07
たぷるですか。難しそうですね(´・ω・`)

700 :デフォルトの名無しさん:2010/02/18(木) 18:18:25
お前の腹はたぷんたぷん

701 :デフォルトの名無しさん:2010/02/18(木) 18:25:49
(´・ω・`)

702 :デフォルトの名無しさん:2010/02/18(木) 18:29:41
ぽんぽん(´・ω・`)

703 :デフォルトの名無しさん:2010/02/18(木) 21:34:03
教えてください。

DataTable で DataTime.Ticks (UInt64) の列があります。
これをテーブルにデータを再設定することなく日付時刻型として表示することは可能でしょうか?

べたな方法では、Ticks の列の値を取得して DateTime 型の変数に代入し、
改めて同じテーブルの日付時刻型の列に代入する方法があると思うのですが、
レコード数が多いと時間が気に掛かります。

たとえば
DataTable.Columns.Add( new DataColumn( "name", typeof( DateTime ), "Convert( Ticks, 'DateTime' )" ) );
などの方法で出来ないものとか考えているのですがうまく行きません。
よい手抜き‥‥もとい。きれいなやり方はないでしょうか。

704 :デフォルトの名無しさん:2010/02/18(木) 23:41:36
表示するってことは別のコントロールにバインドするんでないの?

705 :デフォルトの名無しさん:2010/02/19(金) 00:05:23
>>703
>レコード数が多いと時間が気に掛かります
これってデータベース使って読みこんでいるデータ?

706 :デフォルトの名無しさん:2010/02/19(金) 00:08:26
>>690
Tuple.Createを使えばもう少しだけましになる。

707 :デフォルトの名無しさん:2010/02/19(金) 00:12:29
>>704
DataDridView にバインドして表示します。
出来たら、DataTable をそのままバインドするだけに出来ないかと。

>>705
はい。
ただ、DB 側との I/F は既に決まっていて、DataTable にシリアル値の
列として渡されてくるので。
出来るだけその部分には触らないで済ませられないかと考え中なのです。

708 :デフォルトの名無しさん:2010/02/19(金) 00:17:28
データ(datatable)をさわるんじゃなくて表示(datagridview)の設定だけでいけそうだけど。

709 :デフォルトの名無しさん:2010/02/19(金) 00:24:11
表示するときに加工すればいけそうだね

710 :デフォルトの名無しさん:2010/02/19(金) 00:33:50
てけとうにやった
後悔はたくさんあるがとりあえずこんな感じで表示したいってことかな?

ttp://www.rupan.net/uploader/download/1266507166.png


711 :デフォルトの名無しさん:2010/02/19(金) 06:02:12
>>706
Tuple.Createが使えるのは8つ以下の最後だけ。
var hoge = new Tuple<int,int,int,int,int,int,int,Tuple<int,int>>(1,2,3,4,5,6,7, Tuple.Create(8,9));
(1, 2, 3, 4, 5, 6, 7, 8, 9)
2回使うと意味が変わる。
var hoge = Tuple.Create(1,2,3,4,5,6,7, Tuple.Create(8,9));
(1, 2, 3, 4, 5, 6, 7, (8, 9))



712 :デフォルトの名無しさん:2010/02/19(金) 10:08:09
703に多くの回答ありがとうございました(´・ω・`)
ごひいきありがとうございまた。頑張ります(´・ω・`)

713 :デフォルトの名無しさん:2010/02/19(金) 17:57:13
おう

714 :デフォルトの名無しさん:2010/02/19(金) 18:42:57
文字列の一行だけを取得したいのですが
System.IO.StreamReader sr;
string kaigyou = "改行コードは\rCRです。";
sr = new System.IO.StreamReader(kaigyou);
↑ArgumentExceptionというエラーが出てしまいます。
どうしたらエラーを回避できますか?

715 :デフォルトの名無しさん:2010/02/19(金) 19:22:06
>>714
> sr = new System.IO.StreamReader(kaigyou);
StreamReaderのコンストラクタに指定するstring型の引数はオープンするファイルパスだから
"改行コードは\rCRです。"というファイルパスが無効→引数エラーが返されるってことです。

文字列を指定して1行取得したいのならStringReaderで実現できますよ。
StringReaderのReadLineメソッドで改行文字までを一連の文字列として返してくれます。

System.IO.StringReader sr;
string kaigyou = "改行コードは\rCRです。";
sr = new System.IO.StringReader(kaigyou);

System.Windows.Forms.MessageBox.Show(sr.ReadLine());

716 :デフォルトの名無しさん:2010/02/19(金) 19:53:05
>>715
ありがとうございます。

717 :デフォルトの名無しさん:2010/02/19(金) 20:05:26
はい

718 :デフォルトの名無しさん:2010/02/19(金) 20:33:34
C#の応用系のことを書いている本みたいなのありませんか?
初心者向けだと「フォームの移動」「メッセージボックスの表示」など基本的なことしか書いてないので…。
オススメがあれば。

719 :デフォルトの名無しさん:2010/02/19(金) 20:39:34
つ料理本

720 :デフォルトの名無しさん:2010/02/19(金) 20:57:49
つうか、応用系って何を指してるの?
C#をもっと深く使いたいとかいうこと?

Effective C#
More Effective C#
C# クックブック 3版
.NETフレームワークのためのC#システムプログラミング

721 :703:2010/02/19(金) 21:41:29
>>708-710
ありがとうございました。
会社で試して動作を確認できました。

>>710 素晴らしいです。こういう方法があったのですね。
こういうのを見ると C# って面白いと感じます。もっと引き出しを増やせるように頑張ってみようと思います。

722 :デフォルトの名無しさん:2010/02/19(金) 21:56:56
>>721
誰ですか?

723 :デフォルトの名無しさん:2010/02/19(金) 22:11:45
私です。

724 :デフォルトの名無しさん:2010/02/19(金) 22:18:02
いいえ私です。

725 :デフォルトの名無しさん:2010/02/19(金) 22:20:38
うちです、うち。南光園。

726 :デフォルトの名無しさん:2010/02/19(金) 22:38:18
まゆちゃんなんだよ?

727 :デフォルトの名無しさん:2010/02/19(金) 22:43:48
いいえ、ケフィアです。

728 :デフォルトの名無しさん:2010/02/19(金) 23:05:40
いいえ、ネピアではなく、鼻セレブです。

729 :デフォルトの名無しさん:2010/02/19(金) 23:24:04
舐めると甘いよね。

730 :デフォルトの名無しさん:2010/02/19(金) 23:41:25
しょっぱいです

731 :デフォルトの名無しさん:2010/02/20(土) 06:56:33
>>718
多分いろいろなクラスの使い方が分かる本ってことなんだろう(自分がそうだった)

だが、ちゃんとC#の文法が理解できてれば、参考書見なくても結構わかるよ。
主にメソッドの名前とか入力してるときに出てくるコメント文で。

ほかは、ネット見ながら自分のやりたいことを解決(コピペじゃ駄目)してくくらいでいいんじゃないだろうか

まあ、自分で書いてて、憶測にしかすぎないな、と思ったがとりあえず書きこ
違ったらごめんね

732 :デフォルトの名無しさん:2010/02/20(土) 09:15:28
ごめんねごめんねー

733 :デフォルトの名無しさん:2010/02/20(土) 10:34:23
.NET Frameworkの本とか、MSDNとかじゃないの?

734 :デフォルトの名無しさん:2010/02/20(土) 11:10:17
違います

735 :718:2010/02/20(土) 13:36:49
今はネットを見てやっているんですが
クラスの使い方とか、Tipsとかが載っている本があれば
暇なときパラパラ見れるなぁと思っただけです。

>>734は誰だ?

736 :デフォルトの名無しさん:2010/02/20(土) 15:18:55
私です。

737 :デフォルトの名無しさん:2010/02/20(土) 15:26:24
いいえ私です。

738 :デフォルトの名無しさん:2010/02/20(土) 15:32:42
渡りのプログラマー

739 :デフォルトの名無しさん:2010/02/20(土) 16:52:18
Tipsだったら、DOBONさんのとこかな。
クラスの使い方はMSDN見た方がいいと思う。

740 :デフォルトの名無しさん:2010/02/20(土) 16:54:22
どんなくらすがあるのか知りたいときは?

741 :デフォルトの名無しさん:2010/02/20(土) 17:00:13
検索しろよ。

742 :デフォルトの名無しさん:2010/02/20(土) 18:04:20
>>740
ぐぐればクラス名ぐらいはわかるから、後はMSDN見ればいいだろ。
XMLだったら「.NET XML」で検索すればいい。

743 :デフォルトの名無しさん:2010/02/20(土) 19:21:20
ちゃんとIDisposable実装しようと思った時にDispose(bool)って実装した方がいいのかな?

744 :デフォルトの名無しさん:2010/02/20(土) 19:26:04
ファイナライザがなければいらない

745 :デフォルトの名無しさん:2010/02/20(土) 19:48:54
継承して使わないなら不要

746 :デフォルトの名無しさん:2010/02/20(土) 20:10:36
>>743
IDisposableって解放るものがなければ処理することもないので要らんよ。
そのインスタンス内に子オブジェクトがいて、それらを片付けたいとか、大量にメモリ確保
したので解放したいとか、そういうのを解放したい時に実装する。
だから、解放するべきものがなければ要らない。

747 :デフォルトの名無しさん:2010/02/20(土) 20:16:35
>>746
質問の意図から随分離れた回答のように見える

748 :デフォルトの名無しさん:2010/02/20(土) 20:33:39
質問者が言ってるのはこれ(VBの例だけど)のことだよね。
http://msdn.microsoft.com/ja-jp/library/s9bwddyx(VS.80).aspx

正直、ずいぶんと間の抜けたコーディングにしか思えない。
何を意味するのか不明確なboolを引数にとるメソッドなんか書くより、
明確にマネージ、アンマネージそれぞれのリソースを解放する別々のメソッドを
書く方がずっと分かりやすいと思うんだけど

749 :デフォルトの名無しさん:2010/02/20(土) 20:44:06
>>748
別々にすると派生クラスでオーバーライドした時に呼び出し順がおかしくなる

750 :デフォルトの名無しさん:2010/02/20(土) 20:49:09
デストラクタ使ってなきゃいらないって事なのか、まぁ安全に動けばいいか
マネージドリソースとアンマネージドリソースの開放を区別する意味がいまいちわからんがいいか

751 :デフォルトの名無しさん:2010/02/20(土) 20:54:54
クラスAがメンバーとしてクラスBのオブジェクトを抱えているとする。
AをDisposeした場合はBも連鎖的にDisposeする。これがDispose(true)のパターン。
AがFinalizeした場合はBも個別にGCされるのでAは何もしない。
Aより先にBがGC済みのケースもありえる。これがDispose(false)のパターン。


752 :デフォルトの名無しさん:2010/02/20(土) 20:57:49
>Aより先にBがGC済み
厳密に言うとそれはありえない
ファイナライザが呼び出されている可能性があるだけ
ファイナライザを実装するとGCのタイミングが遅れるというのは有名だけど
これは >Aより先にBがGC済み の状況を作らないようにするため

753 :デフォルトの名無しさん:2010/02/20(土) 20:59:52
IDisposableなクラスはたくさん作ってるけど、
Dispose(bool)は実装したことなかった。
そういう差があるんだ。勉強になるな。
後でよく調べておこう。

754 :デフォルトの名無しさん:2010/02/20(土) 21:06:23
まーファイナライザ定義することなんてSafeHandleできてからはほとんどなくなったしなー

755 :デフォルトの名無しさん:2010/02/20(土) 21:12:57
Finalize/Disposeをフルで実装する場合はComponentを継承すればいいもんな。

756 :デフォルトの名無しさん:2010/02/20(土) 21:16:19
class A;
class B : A;
class C : A;
void func1( B );
void func2( C );

があり、中で使用する func1 または func2 の関数のみが異なるある関数があったとします。
こういう関数が多く、中で呼び出す関数以外はすべて同じなのでこれをまとめたいと考えます。
そこでデリゲートを使用して呼び出す関数をパラメータで渡すことを考えました。

delegate void dele( A );
void commonFunc( int para1, int para2, dele callFunc );

これで、
commonFunc( 1, 2, func1 );
などとやると、もちろんデリゲートの型が違うためコンパイラに怒られます。

こういう場合にキレイにまとめるよい方法はあるでしょうか?

757 :デフォルトの名無しさん:2010/02/20(土) 21:32:37
func1をBのインスタンスメンバに
func2をCのインスタンスメンバに
じゃダメなの?

758 :デフォルトの名無しさん:2010/02/20(土) 21:33:01
>>754,755
そ、そうなのか……。
ひょっとして、オレのアンマネージドなオブジェクトの管理は相当遅れてるのかもしれん……。

759 :デフォルトの名無しさん:2010/02/20(土) 22:00:38
delegate void dele<T>( T o ) where T : A; 
void commonFunc<T>( int para1, int para2, dele<T> callFunc ) where T : A;  
commonFunc<B>( 1, 2, func1 ); 

きちゃないな

760 :デフォルトの名無しさん:2010/02/20(土) 22:25:34
キャストできることが保証されるなら、

commonFunc( 1, 2, a => func1(a as B) );

でいけるが、拡張メソッドで

public static void CommonFunc<T>( this T obj, int p1, int p2, Action<T> f ) where T : A;

とするのがスマートかも

761 :756:2010/02/20(土) 22:36:08
ありがとうございます。

>>757
そう言うやり方もありますね。
パラメータのクラスインスタンスはほぼデータ受け渡し用のものなので、
それ以外の情報を載せることは考えていませんでした。
できれば今の考えで進めたいのですが、ダメだった場合にその方向も考えてみます。

>>759
なるほど。ジェネリックってものがありましたね。
十分だと思います。試してみます。

>>760
上も下もどっちも知らなかったです。。。
キャストは大丈夫だと思います。

ずいぶんとキレイにまとまるものなのですね。すげー。
最低でも調べてモノにして置こうと思います。

762 :デフォルトの名無しさん:2010/02/21(日) 01:10:44
>>756の質問内容がすぐに理解できないオレはバカなんだろうか。
static void Main(string[] args)
{
var b = new B();
var c = new C();
CommandFunc(1, 2, b, a => Func1(b as B));
CommandFunc(1, 2, c, a => Func2(c as C));
}
delegate void dele(A a);

static void CommandFunc(int para1,int para2,A a, dele callFunc)
{
// Func1かFunc2を実行したい
callFunc(a);
}
static void Func1(B b) { b.MethodB(); }
static void Func2(C c) { c.MethodC(); }
}
class A { }
class B : A { public void MethodB() { Console.WriteLine("Bだよ"); } }
class C : A { public void MethodC() { Console.WriteLine("Cだよ"); } }

微妙すぎる



763 :デフォルトの名無しさん:2010/02/21(日) 04:05:51
くだらない質問です。
toolstripを貼り付けたフォームで、フォームの内容をスクロールさせるとtoolstripもスクロールしてフォーム外
にいっちゃうのですが、スクロールしても上部に固定で表示させることはできないでしょうか?
ぐぐってみるとパネルをフォーム上に置いて、パネルをスクロールさせればいいという解決法はあったのですが
フォームに直接ビットマップを描画しているため、できればパネルを使わずになんとかしたいのですが他に方法
はないでしょうか?
ないようでしたら、諦めます。

764 :デフォルトの名無しさん:2010/02/21(日) 04:19:14
パネルが嫌ならLabelでも代わりに貼り付ければいいんじゃないの?

Form
├toolstrip
└label

Zオーダー調整して
labelの
・DockをFill
・AutoSizeをfalse(だったと思う

765 :デフォルトの名無しさん:2010/02/21(日) 04:27:20
>>763
やり方は色々あるが、とりあえずPanelを使え。

766 :デフォルトの名無しさん:2010/02/21(日) 04:28:23
ああ、Panelが嫌だってか。
PanelにUserControl貼り付けたら同じじゃん。

767 :デフォルトの名無しさん:2010/02/21(日) 04:32:13
>>766
コントロールが多段になるのがいやってことじゃないの?
C#のパネルって確か枠だけだったので描画したいなら
ラベルとかを代わりの台座にすればいいだけだし

768 :デフォルトの名無しさん:2010/02/21(日) 05:53:41
スクロールバーの処理は、Panelに任せたほうが楽だよ。まじで。

769 :デフォルトの名無しさん:2010/02/21(日) 07:01:54
もっとPanelちゃんを有効利用してあげて

770 :デフォルトの名無しさん:2010/02/21(日) 09:02:05
#pragma comment(lib, "hoge.lib")
みたいに例えば System.Windows.Forms を指定してソースに書いておけば自動的に参照追加してくれるプリプロセッサないのかお(´・ω・`)

771 :デフォルトの名無しさん:2010/02/21(日) 09:57:19
一覧表を印刷するときに、pd.DefaultPageSettings.HardMarginX分引いて
センターに表示するようにしたんだけど、印刷プレビューで見ると
その引いた分だけ左によってしまっています。
これを直す方法はないでしょうか?

772 :デフォルトの名無しさん:2010/02/21(日) 10:54:49
>>762
thx

773 :デフォルトの名無しさん:2010/02/21(日) 10:57:01
>>770
それやろうとしたらたぶんこんなことになるよ
#pragma reference("System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")

774 :デフォルトの名無しさん:2010/02/21(日) 11:18:46
:(;゙゚'ω゚'):グフゥッーー

775 :デフォルトの名無しさん:2010/02/21(日) 13:34:12
763の質問で初めて気がついたけど、
ToolStrip系はDockしても、.NET1.1以前のMainMenuのようにフォームのクライアント領域を
削る形にはならないんだな。

こんな仕様望む奴いるのかしら。


776 :デフォルトの名無しさん:2010/02/21(日) 13:38:26
MainMenuはOSレベルで普通のウィンドウ(コントロール)とは違うんだから仕方ない

777 :デフォルトの名無しさん:2010/02/21(日) 14:03:22
:(;゙゚'ω゚'):シ、シカタナイーー

778 :デフォルトの名無しさん:2010/02/21(日) 15:35:08
>>775
パネルとかコンテナ使えばいいので問題ない

779 :デフォルトの名無しさん:2010/02/21(日) 16:46:21
問題ないと言われてもなあ。

780 :デフォルトの名無しさん:2010/02/21(日) 17:43:37
うーむ、やはりパネル使うのが一番ですか。
プラグインの仕様にもなってるし極力弄りたくなかったのですが、素直にパネルに変更します。
回答ありがとうございました。

781 :デフォルトの名無しさん:2010/02/21(日) 18:15:48
うん

782 :デフォルトの名無しさん:2010/02/21(日) 18:18:17
>プラグインの仕様
どういうものかは知らんがパネルはさもうが問題ねーだろ
どんなコードの書き方してるんだよ

783 :デフォルトの名無しさん:2010/02/21(日) 22:26:31
振り上げた 握りこぶしは グーのまま
  振り上げておけ 相手はパーだ


784 :デフォルトの名無しさん:2010/02/21(日) 22:31:17
五七五七七かと思ったらちがた


785 :デフォルトの名無しさん:2010/02/21(日) 22:32:20


786 :デフォルトの名無しさん:2010/02/21(日) 22:46:53
>>782
いやいや、フォームに直接DirectXで描画しているからパネルのせると何も見えなくなって
しまうんですよ。
それと描画のルーチンにFormを渡しているからパネルに描画だとPanelに変えないといけない
というのがあって、それで聞いてただけです。
とりあえず、すいませんでした。

787 :デフォルトの名無しさん:2010/02/21(日) 23:32:25
>>786
じゃあPanelに貼り付けたUserControlでDirectXの描画やればいいじゃん。
そんなに難しくはないよ。

788 :デフォルトの名無しさん:2010/02/21(日) 23:42:06
>>787
質問者じゃないけど、無理矢理絡むなよw
意味不明すぎる。

789 :デフォルトの名無しさん:2010/02/21(日) 23:57:22
…?787 じゃないが Direct3D はレンダリング対象に HWND を
取るので Control なら何でも対象にできる。


790 :デフォルトの名無しさん:2010/02/22(月) 09:10:39


791 :デフォルトの名無しさん:2010/02/22(月) 14:10:42
VS2005である文字のASCIIコードを取得しようとしていました。

(int)'1'などとすると49=16進数の31とうが帰ってくるので正常でした。
7Eの~までは正常に動いているようなのですが、
半角カナのあ('ア')はなぜか65393=16進数のff71になってしまいます。

あれ?と思い、VB.NETでASC関数を使用したところ177=16進数のb1が帰ってきて問題ないようでした。

正しく変換を行うためにはどのように処理すればいいのでしょうか?

よろしくお願いいたします。




792 :デフォルトの名無しさん:2010/02/22(月) 14:18:59
char(System.Char)はUTF-16を使って符号化された文字を扱ってる
で'ア'はUTF-16ではU+FF71にマップされているから、0xff71になるのは全く正しい
'ア'を0xb1にマップするのはShift_JISで、それらの文字符号化方式を扱うのはEncodingクラス

793 :デフォルトの名無しさん:2010/02/22(月) 14:38:45
ちなみにASCIIは7bitなので、'ア'は存在しない

794 :デフォルトの名無しさん:2010/02/22(月) 15:02:45
>>792->>793
ありがとうございます。

なるほど・・・
Encodingクラスを使用するといけそうですね・・・
もうすこしエンコード勉強してみます

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


795 :デフォルトの名無しさん:2010/02/22(月) 15:09:23
全く関係ないけど、コード体系が違うってのは気がついたよな?
半角も全角もcharだと1文字
今までの感覚で作ると問題になることがあるから注意

796 :デフォルトの名無しさん:2010/02/22(月) 16:17:56
>>795
ありがとうございます。
今のところこの仕様で2バイト文字を扱う必要はないようなので、ここでは気にしませんが、
そのうち・・・出てきたときには気をつけないといけないかと。

と、仰っている意図を勘違いしてたらダメダメですが・・・

797 :デフォルトの名無しさん:2010/02/22(月) 16:20:04
だめだめだお(´・ω・`)

798 :デフォルトの名無しさん:2010/02/22(月) 17:53:01
ググってみたんですが納得いく説明が見あたらなかったので質問です。

C#では通例すべてのメソッド名の頭文字が大文字なのはどうしてですか?
.NET Frameworkでの慣例がそうだから、というのであれば、どうしてそれが慣例なのか知りたいです。

799 :デフォルトの名無しさん:2010/02/22(月) 18:19:51
「C#では」「すべての」「メソッド名」全部そういうわけではないな
「.NET Frameworkでは」「public or protectedの」「メンバ名」がそういう命名規則
ついでに言うとこれは「クラスライブラリ開発者向け」ね
.NET Frameworkの標準ライブラリがそれに従ってるので
それを利用する側も自然とそうしたコーディングになりやすいだけ

理由? .NET Frameworkのデザイナがそうした方が見やすいと感じたからだろ
もうちょっと言うと
プロパティの先頭が小文字だとprivateフィールドと区別が付けにくい、
プロパティの先頭が大文字なのにメソッドの先頭が小文字とか不自然、
とかその辺考えられる

800 :デフォルトの名無しさん:2010/02/22(月) 19:04:09
>>799
なるほど、言われてみるとその通りと感じました。
ありがとうございます。

801 :デフォルトの名無しさん:2010/02/22(月) 20:44:15
自演の香り

802 :デフォルトの名無しさん:2010/02/22(月) 21:45:16
公開する名前を一律先頭大文字にするのはMSの昔からの慣習だよ

803 :デフォルトの名無しさん:2010/02/23(火) 18:44:00
>>771
自作しないと無理

804 :デフォルトの名無しさん:2010/02/23(火) 22:25:09
10進数な0.75という数値を、3F40 0000 と16進表示させたいのですが
そんな関数ありますでしょうか?
自作しないと無理?

805 :デフォルトの名無しさん:2010/02/23(火) 22:29:35
BitConverterでbyte[]にしてからintに

806 :デフォルトの名無しさん:2010/02/23(火) 22:32:03
>>804
ない。特に浮動小数点数に寄る0.75ならCLR上では実装依存だ。
基本的にはMemoryStreamに一旦書き出した後で
byte[]で読みなおす形になるだろうな。

807 :デフォルトの名無しさん:2010/02/23(火) 22:52:53
10進数なら System.Decimal があるだろ。


808 :デフォルトの名無しさん:2010/02/23(火) 23:18:17
あるね

809 :デフォルトの名無しさん:2010/02/23(火) 23:19:02
>>806
いや、CLIで浮動小数点数はIEEE754と決まっているでしょ。
実装依存ではないはず。

810 :デフォルトの名無しさん:2010/02/23(火) 23:26:06
>>809
夜遅くだ。
もういいから。

811 :デフォルトの名無しさん:2010/02/23(火) 23:31:11
もういいのはお前の方だろ馬鹿か。
いやもうじゃなくて最初からいらないけどね。
本人面白いと思ってるのか知らんが、本当にうっとうしいなこういう馬鹿は

812 :デフォルトの名無しさん:2010/02/23(火) 23:45:53
>>809
The Root of .NET Frameworkにそう書いてある。

813 :デフォルトの名無しさん:2010/02/23(火) 23:54:57
ついでに便乗。私は、そもそも根本から解ってません
0x3F=63
0x40=64
そっからどうやったら0.75に持っていけるのか教えてくださ〜い
(63/16)+(64/256)= 4.1875

 あれ?( ゚д゚)ポカーン

814 :デフォルトの名無しさん:2010/02/23(火) 23:59:23
>>813
>3F40 0000
眠いのであまりまじめにやる気ないけどこれが浮動小数点なら
それは違うんじゃね?

815 :デフォルトの名無しさん:2010/02/23(火) 23:59:42
>>813
Wikipediaの浮動小数点数の項目でも見れ

816 :デフォルトの名無しさん:2010/02/24(水) 00:00:51
眠いので引用だけ

http://upload.wikimedia.org/wikipedia/commons/d/d2/Float_example.svg
サイズ的にfloatぽいのでこういうビットで分けて考えないと

817 :デフォルトの名無しさん:2010/02/24(水) 00:04:08
0011 1111 0100 0000 0000 0000 0000

0 0111 1110 100 0000 0000 0000 0000

これを
単精度の場合: (-1) 符号部×2指数部 ‐127 ×(1+仮数部)
に当てはめて計算しる

818 :デフォルトの名無しさん:2010/02/24(水) 00:28:24
Interfaceを使うメリットを教えていただけないでしょうか?
調べてみてもいまいちピンときません・・・

819 :デフォルトの名無しさん:2010/02/24(水) 00:31:27
>>818
IDisposableなクラスを書き始めたら、すぐわかるさ。

820 :デフォルトの名無しさん:2010/02/24(水) 00:39:07
符号部:0
指数部:0111が5
仮数部:11101000000000000000000が7602176
で・・・
2*5-127*(1+7602176)=-965 476 469

 あれぇ?

821 :デフォルトの名無しさん:2010/02/24(水) 00:40:56
IEEE 754 形式の単精度実数では、符号部 1 ビット ・ 指数部 8 ビット ・ 仮数部 23 ビット、

822 :デフォルトの名無しさん:2010/02/24(水) 00:42:31
指数部:0111が5
馬鹿だ!おれ! 7
いっぺん風呂に入って頭冷やしてくる!

823 :デフォルトの名無しさん:2010/02/24(水) 00:51:35
ずっと入ってなさい

824 :デフォルトの名無しさん:2010/02/24(水) 01:01:32
風呂に入ると逆に熱くなる件

825 :デフォルトの名無しさん:2010/02/24(水) 01:02:43
股間に熱エネルギーがたまってきた

826 :デフォルトの名無しさん:2010/02/24(水) 01:20:52
>>818
異なる型のリスト全体に特定のメソッドを全て実行したいときに便利
あとはDIコンテナがらみの差し替えで便利というか必須

827 :デフォルトの名無しさん:2010/02/24(水) 01:54:02
風呂から上がった。

0.75をを二進法で書くと 0.1001011
小数点を左に移動させ、1だけを左に残す。1 001011*2^(-1) これが正規化された浮動小数点数である。
0 で埋め 23ビットにする 001 0110 0000 0000
指数-1に127加算。126で01111110
まとめると
0 01111110 001 0110 0000 0000
区切り直して
0011 1111 0001 0110 0000 0000
16進では
3 F 1 6 0 0

こうですか?添削お願いしま〜す!

828 :デフォルトの名無しさん:2010/02/24(水) 02:38:34
うぜえ

829 :デフォルトの名無しさん:2010/02/24(水) 06:43:02
なんか思いつくときってシャワー浴びてるときだよな

830 :デフォルトの名無しさん:2010/02/24(水) 06:46:56
計算しなくてもfloatに0.75入れて中身見ればいいだけだろ

831 :デフォルトの名無しさん:2010/02/24(水) 08:15:05
DoubleToInt64Bitsはあるのに、SingleToInt32Bitsはないという不思議

832 :デフォルトの名無しさん:2010/02/24(水) 09:59:16
最初ので代用できるだろ

833 :デフォルトの名無しさん:2010/02/24(水) 10:18:45
Form や Panel 上に配置された UserControl をフルスクリーン化するにはどうしたらいいんでしょうか?
最上位の Form をフルスクリーン化して、親 Control を一つずつクライアントサイズまで拡張しないとダメ?


834 :デフォルトの名無しさん:2010/02/24(水) 10:26:43
Form1からForm2に引数を渡し、Form2の複数のメソッドでその引数を共有して使うにはどうしたらよいでしょう?

Form1
namespace WindowsApplication {
public partial class Form1 : Form {
public Form() {
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e) {
string[] args = {"test","answer"};
Form2 form2 = new Form2(args);
form2.Show();
}

}
}



835 :デフォルトの名無しさん:2010/02/24(水) 10:27:06
意味がよく分からんが、普通はDockなりAnchorなり使ってレイアウトするもんじゃないか

836 :デフォルトの名無しさん:2010/02/24(水) 10:28:03
Form2
namespace WindowsApplication {
public partial class Form2 : Form {
public Form(string[] args) {
InitializeComponent();
if (args[1] == "test") test();
else if (args[1] == "test2") test2();
}

private void test() {
MessageBox.Show(args[2]);
}

private void test2() {
MessageBox.Show(args[2]);
}

のように書くと、test()とtest2()の MessageBox.Show(args[2]);
で引数がない、とエラーになります。
Form2のどこでstring[] argsを宣言すれば、Form2全体で使えますか?
よろしくお願いいたします。

837 :デフォルトの名無しさん:2010/02/24(水) 10:32:28
それだけならtestとtest2にstring[]の引数持たせろよとしか思えないが
取り敢えず「フィールド (C# プログラミング ガイド)」でぐぐれ

838 :デフォルトの名無しさん:2010/02/24(水) 10:36:51
>>835
やっぱり一発でフルスクリーン化してくれるような便利な仕組みはないってことか

839 :デフォルトの名無しさん:2010/02/24(水) 10:39:15
いや普通はフォームを広げても崩れないようにレイアウトするから

840 :デフォルトの名無しさん:2010/02/24(水) 10:44:05
>>833
>最上位の Form をフルスクリーン化して、親 Control を一つずつクライアントサイズまで拡張しないとダメ?
基底のFormをフルスクリーンして子Control ・・・・の間違いじゃね?

サイズが変更した際に発生するイベントに調整用ロジック書いておけば
全部に連動するけどな

というかFormに貼られてるコントロールの状態でもかわる

DockでFillとかしてあれば勝手にサイズかわるけど
Noneとかされてると自分で計算するしかないだろうし

841 :デフォルトの名無しさん:2010/02/24(水) 10:44:48
>>836
スコープの概念をわかっていない超初歩的な話
基本的には{}の中だけ有効

842 :デフォルトの名無しさん:2010/02/24(水) 11:35:20
>>837
ありがとうございます。

Form2
namespace WindowsApplication {
public partial class Form2 : Form {
string[] args;
public Form() {
InitializeComponent();
if (args[1] == "test") test();
else if (args[1] == "test2") test2();
}

とすると、Form1の
private void button1_Click(object sender, EventArgs e) {
string[] args = {"test","answer"};
Form2 form2 = new Form2(args);
form2.Show();
}
で、引数をひとつ指定できるものはありません、とエラーになります。
かといって、
private void button1_Click(object sender, EventArgs e) {
string[] args = {"test","answer"};
Form2 form2 = new Form2();
form2.Show();
}
では、引数がわたらない、ということで途方にくれております。


843 :デフォルトの名無しさん:2010/02/24(水) 11:38:10
うーん、なぜ引数渡しにこだわる?

844 :デフォルトの名無しさん:2010/02/24(水) 11:40:36
>>842
836と全然違うじゃねえか
Form2にプロパティ作ってShowする前に設定

845 :デフォルトの名無しさん:2010/02/24(水) 11:41:10
ほかの言語はやったとこないのかな。

846 :デフォルトの名無しさん:2010/02/24(水) 11:43:02
>>843
Form1からForm2に渡したい値がいろいろある、ということと、
初心者なので、引数ならできそうだ、ということです。

847 :デフォルトの名無しさん:2010/02/24(水) 11:45:35
>>846
Form1はForm2のインスタンスを持ってるんだから
Form2側で連絡用のエリアのset作るとかすればいいんでないの?

848 :デフォルトの名無しさん:2010/02/24(水) 11:46:30
>>844
ぜんぜん違うというか、フィールドを使って書き換えたつもりなんです。

>>845
ありません。


849 :デフォルトの名無しさん:2010/02/24(水) 11:50:35
>>846
初心者君、とりあえず教えてもらったコードがどういう意味なのかくらいは考えたまえ。

850 :デフォルトの名無しさん:2010/02/24(水) 11:56:31
>>838
>やっぱり一発でフルスクリーン化してくれるような便利な仕組みはないってことか
確かにそんな仕組みはないが、(基本的ににはタイトルバーとフレームを消去した上でプライマリスクリーンにはめ込む)
System.Windows.Formsのコントロールの自動再配置の仕組みは異常と言っていいくらい出来がいいぞ。
やり方が色々あるから勉強するべし。

851 :デフォルトの名無しさん:2010/02/24(水) 11:57:13
>>849
プロパティを使うか、setを使うからしいのですが、
コードで教えていただけるとうれしいです。


852 :デフォルトの名無しさん:2010/02/24(水) 12:13:34
http://uproda.2ch-library.com/216386NZn/lib216386.png

853 :デフォルトの名無しさん:2010/02/24(水) 12:14:59
アプリケーションの設定を読み込むのは、Form1のコンストラクタで行うのか、Loadイベントの際に行うのか、
どちらが一般的なのでしょうか。つまらない質問ですが、よろしくお願いします。

854 :デフォルトの名無しさん:2010/02/24(水) 12:16:35
>>853
タイミングはご自由に

855 :デフォルトの名無しさん:2010/02/24(水) 12:21:48
一般的なことを聞いたつもりなのですが…
どちらも一般的に行われているということでしょうか…

856 :デフォルトの名無しさん:2010/02/24(水) 12:27:20
タイミングは自分の作ってるアプリ次第なんだよね

たとえばアプリの表示サイズとか見た目に関わる情報を復元したい場合は
Formが表示される前に読み込みを終えて、座標とかを反映しておきたいだろうし

特にそういうのがなければ表示した後任意に読み込みを行うボタン押してもらうとか

857 :デフォルトの名無しさん:2010/02/24(水) 12:30:49
位置とかは表示する前だが
それ以外はとりあえずウインドウを表示してからにしたい


858 :デフォルトの名無しさん:2010/02/24(水) 12:39:49
どうして?

859 :デフォルトの名無しさん:2010/02/24(水) 12:41:50
設定を保存しておくファイルを分けるとかしろよ
そんな設計までここの住人にやらせるのかよ

860 :デフォルトの名無しさん:2010/02/24(水) 12:54:03
位置を表示する前、であればコンストラクタかLoadイベントのどちらかになると思うんですが、
その場合は、どちらを選ぶのでしょうか。

861 :デフォルトの名無しさん:2010/02/24(水) 13:54:54
コンストラクタで書いてコンパイルエラーが出たら
Loadedなんかの中に書いてる

862 :デフォルトの名無しさん:2010/02/24(水) 13:56:49
コンストラクタとLoadの間で何が違うのかを考えろよ

863 :デフォルトの名無しさん:2010/02/24(水) 14:40:55
なんで?

864 :デフォルトの名無しさん:2010/02/24(水) 14:46:58
設計ができないって悲惨だなぁ

865 :デフォルトの名無しさん:2010/02/24(水) 15:35:25
だなw

866 :デフォルトの名無しさん:2010/02/24(水) 16:30:27
まあアプリの構造がわからんので設計は自分でやるという前提だが補足としてはだな
デザイナーが勝手にあれこれやってくれるのであんまり意識はしないけど

プログラムの起動の順番としては

[Program.cs] Main()

[Form1.cs] Form1()

[Form1.Designer.cs] InitializeComponent()

[]はソース名称
InitializeComponent()はregionで折りたたまれてる

Form1のコンストラクタからInitializeComponentを呼び出してこの中で始めて
デザイナーでデザインした部品の初期化が行われるんだわ(あってるよね?

867 :デフォルトの名無しさん:2010/02/24(水) 20:10:05
>>853
まあその辺は機能的な要件さえ満たせるのならどうでもいいでしょ。

逆に聞きたいんだけど、今の世の中ただでさえ覚えることがたくさんあるのに、
そんなどうでもいいことまで一般的なルールとやらを覚えて、従いたいとか思う?

俺は思わんけどなあ。
そんなものに何のメリットも感じられないし。

868 :デフォルトの名無しさん:2010/02/24(水) 21:08:38
http://ranking.poitan.net/asset_ranking.php

このサイトにログインした後のhtml取得したいんだけどどうしたらいいの?

869 :デフォルトの名無しさん:2010/02/24(水) 21:46:15
どこまで分かって、どこから分からないのか

870 :868:2010/02/24(水) 21:48:00
SSLでURIとユーザー名とPASS指定して、クッキー作ってログイン実行しても
ログインできてない

871 :デフォルトの名無しさん:2010/02/24(水) 21:51:11
ただの好奇心だろw
おれはこうするな〜でいいんだよw

872 :804:2010/02/24(水) 23:20:19
byte[] bdata = BitConverter.GetBytes(0.75f);
で、16進での正解は見れたけれど、>>827のどこから間違えたのか未だ悶々としてます。
何が悪いのでしょうか? (おつむが悪いのは既に自覚してます)

873 :デフォルトの名無しさん:2010/02/24(水) 23:24:53
>>872
というか、そういう低レベル(ハードウェアよりと言う意味で)な話をするのは
C#は向いてないから、C++に切り替えて同じことをやった方が早いよ。
というかfloatに値突っ込んでデバッガで止めてゴニョゴニョするだけですぐわかる。

874 :デフォルトの名無しさん:2010/02/24(水) 23:38:41
>>872
0.75 = 0.5 + 0.25 = 2^(-1) + 2^(-2)だから、
二進法にすると0.11のはず。

875 :デフォルトの名無しさん:2010/02/24(水) 23:43:43
初心者スレってここまで酷かったのか...
つうか、一通りどこかのサイトでC#学んでから質問したほうがいいよ。
質問も支離滅裂すぎてイミフすぎるし。

876 :デフォルトの名無しさん:2010/02/24(水) 23:45:28
リッチテキストボックス上でマウスオーバーした時に
そのカーソルの下のワードを取得したいんだけど
どうすればよかと?
GetCharFromPositionを使えば一文字だけ取得できるけど
一文字じゃなくて単語を取りたいんだ

877 :デフォルトの名無しさん:2010/02/24(水) 23:50:51
一通りC#学んで、質問すべき内容をはっきり認識できる人は質問する前に自己解決するだろ。

878 :デフォルトの名無しさん:2010/02/24(水) 23:54:12
>>876
前後に伸ばしてって、区切り文字のとこで終了。

879 :デフォルトの名無しさん:2010/02/24(水) 23:58:31
>>873
そういう話じゃなくて、0.75がなぜ3F400000になるかが気になってるんだろ

880 :デフォルトの名無しさん:2010/02/25(木) 00:03:08
>>878
文字から伸ばす?
この方法じゃなくて、行数と左から何文字目かを取得して、そっから拡張するって事?

881 :デフォルトの名無しさん:2010/02/25(木) 00:04:51
>>880
GetCharIndexFromPositionで今の位置とってくるわけよ

882 :デフォルトの名無しさん:2010/02/25(木) 00:06:47
GetCharIndexFromPosition でインデックスを取得する。

883 :デフォルトの名無しさん:2010/02/25(木) 00:11:14
int positionToSearch = rTextBox.GetCharIndexFromPosition(new Point(e.X, e.Y));
おぉできたぞー。ここまで出来ればあとは楽勝さ。サンキューベリーマッチ

884 :デフォルトの名無しさん:2010/02/25(木) 00:13:21
>>879
そんなの、.NET CLI上で浮動小数点数がどういう扱いになっているのかということと、
x86上で単精度浮動小数点数がどういう符号化が調べれば答えでるじゃん。
だいたいそんなのC#に関係ないし。

885 :デフォルトの名無しさん:2010/02/25(木) 00:14:48
それで計算が合わなくて何で−?って質問だろう……

886 :デフォルトの名無しさん:2010/02/25(木) 00:29:57
つううか>>874で答え出てるな。
0.75(10) は 0 + 1/2 + 1/4 = 0.11(2)
間違えやすいのは暗黙の1を消して仮数部を10000000000000000000000にする部分だな。

887 :デフォルトの名無しさん:2010/02/25(木) 00:31:53
とりあえずあれだ、基本情報の勉強でもやればいいんじゃないかな

888 :デフォルトの名無しさん:2010/02/25(木) 00:54:42
ボクもそう思うよ
あ、女子小学生です

889 :デフォルトの名無しさん:2010/02/25(木) 01:06:54
0.75 x 2^0 (0.75 = 0.11)
正規化して
1.5 x 2^(-1) (1.5 = 1.10)
1.10 から1.を消して 10
つまり「(1.)10000000000000000000000」ってことか

890 :デフォルトの名無しさん:2010/02/25(木) 03:51:43
>>879
だからそれはc#じゃなく浮動小数点をどう記憶するかという規格の話で
完全にすれ違い

情報処理の試験スレとかIEEEの規格スレ(あるのか?)へ行けってことだ

891 :デフォルトの名無しさん:2010/02/25(木) 13:02:28
ここにきてようやくスレチという意見がww

892 :デフォルトの名無しさん:2010/02/25(木) 20:57:46
つまり認められた話題だったということだ

893 :デフォルトの名無しさん:2010/02/25(木) 21:47:16
class B { / ... /}
class D : B{ /... / }
class DD : D{ /... / }

//とあるクラス内
void attachList( B tmp )
{
  ls.add( tmp );
}
// List<B> ls = new List<B>(); 済み

これって以下のように使ってもまったく問題なし?
エラーは出ないし使えるみたいなんだけど

B some1 = new B();
B some2 = new D();
B some3 = new DD();
attachList(some1);
attachList(some2);
attachList(some3);

894 :デフォルトの名無しさん:2010/02/25(木) 21:49:18
問題ない

895 :デフォルトの名無しさん:2010/02/25(木) 21:52:17
>>894
ありりん。

896 :デフォルトの名無しさん:2010/02/26(金) 00:08:26
Cのマクロ、__DATE__みたいなのはないのでしょうか?

897 :デフォルトの名無しさん:2010/02/26(金) 00:09:52
ない

898 :デフォルトの名無しさん:2010/02/26(金) 00:20:44
意外とウンコだなC#

899 :デフォルトの名無しさん:2010/02/26(金) 00:54:04
ある

900 :デフォルトの名無しさん:2010/02/26(金) 00:58:26
どうしてもやるならコンパイル前に[assembly: コンパイル日時(みたいなコードを自動生成して
リフレクションで取ってくるのが正当かな

901 :デフォルトの名無しさん:2010/02/26(金) 00:58:40
C#は使いやすいし、部品も多いが
C/C++みたいに本当に万能な言語ではない。

902 :デフォルトの名無しさん:2010/02/26(金) 01:01:08
例えば?

903 :デフォルトの名無しさん:2010/02/26(金) 01:04:03
C/C++のコードは環境依存の部分をなくせばコンパイラが存在する
ところへ持っていけるけどC#はwindowsとべったりだしなあ
Monoとかにすれば多少幅は広がるけど

904 :デフォルトの名無しさん:2010/02/26(金) 01:05:32
万能かどうかと全く違う話じゃん

905 :デフォルトの名無しさん:2010/02/26(金) 01:16:15
移植性の低さが一番のネックだよね。
それ以外は特に問題ないんだが。

906 :デフォルトの名無しさん:2010/02/26(金) 01:19:10
C#にかぎった話じゃないし、なんなの?こいつ

907 :デフォルトの名無しさん:2010/02/26(金) 01:19:37
なんでそんな喧嘩腰なんだよw

908 :デフォルトの名無しさん:2010/02/26(金) 01:22:01
わけのわからん話をするからだろボケが

909 :デフォルトの名無しさん:2010/02/26(金) 01:24:04
          ____
       / \  /\ キリッ
.     / (ー)  (ー)\    <C/C++みたいに本当に万能な言語ではない。
    /   ⌒(__人__)⌒ \
    |      |r┬-|    |
     \     `ー’´   /
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一””””~~``’ー?、   -一”””’ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

910 :デフォルトの名無しさん:2010/02/26(金) 01:26:09
沸点の低い頭おかしいのがおるw

911 :デフォルトの名無しさん:2010/02/26(金) 01:31:44
          ____
       / \  /\ キリッ
.     / (ー)  (ー)\    <移植性の低さが一番のネックだよね。
    /   ⌒(__人__)⌒ \
    |      |r┬-|    |
     \     `ー’´   /
    ノ            \
  /´               ヽ
 |    l              \
 ヽ    -一””””~~``’ー?、   -一”””’ー-、.
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

912 :デフォルトの名無しさん:2010/02/26(金) 05:49:27
>C/C++のコードは環境依存の部分をなくせばコンパイラが存在する
>ところへ持っていける

これは C# でも同じでは?

913 :デフォルトの名無しさん:2010/02/26(金) 08:02:00
FirefoxのFirebugにある「要素を検証」みたいなもの
(HTML上でマウスを移動させると、タグの部分が選択される)
を実装したいんですが、WebBrowserで可能でしょうか?

右のWebBrowser上のとある箇所をクリックすると、
そのクリックされた箇所(HTML)がコピーされ、
左のWebBrowserにペーストされる、ということをしたいのですが。

914 :デフォルトの名無しさん:2010/02/26(金) 08:06:34
>FirefoxのFirebugにある「要素を検証」みたいなもの
>(HTML上でマウスを移動させると、タグの部分が選択される)
>を実装したいんですが、WebBrowserで可能でしょうか?
こっちはよくわからんけど

>右のWebBrowser上のとある箇所をクリックすると、
>そのクリックされた箇所(HTML)がコピーされ、
>左のWebBrowserにペーストされる、ということをしたいのですが。
こっちは可能でしょ

コピー元でクリックされた場所を取得してコピー処理してクリップボードへ転送
コピー先でペーストとか

915 :デフォルトの名無しさん:2010/02/26(金) 08:13:55
C#は糞
http://pc12.2ch.net/test/read.cgi/tech/1246520657/

916 :デフォルトの名無しさん:2010/02/26(金) 08:15:04
<div>
 <p>div1</p>
 <div>
  <p>div2<p>
 </div>
</div>

こんなHTMLがあるとして、
2つめのdiv内でクリックすると、
 <div>
  <p>div2<p>
 </div>
がコピーされるようにしたいのですが、

917 :913:2010/02/26(金) 08:20:43
>>914
可能ですか!

ちなみにJane Styleなどの2chブラウザのスレ表示欄はどうやって実装しているかわかりますか?
WebBrowserでいけるんだろうか・・・?

918 :デフォルトの名無しさん:2010/02/26(金) 08:25:12
>>917
OpenJaneの派生のほとんどはTrident(windows用のIEのコア部分)使ってなくて
独自のコアだったような

まあ同じようなことはできるよ
ポップアップとかもね

自分のプログラムで書いてもいいしJavascriptに頼ってもいいし

919 :913:2010/02/26(金) 08:41:56
>>918
できるんですね。安心しました。
ありがとうございます。

920 :デフォルトの名無しさん:2010/02/26(金) 08:51:24
>>919
2ch専用ブラウザの作り方
http://pc12.2ch.net/test/read.cgi/tech/1180406037/
この辺に行ってみるといいんじゃね?

最近何人かがVB.netやVC#で作ってるみたいだし

921 :913:2010/02/26(金) 09:30:58
>>920
お〜役立ちそうです。
ありがとうございます!

922 :デフォルトの名無しさん:2010/02/27(土) 01:11:01
labelコントロールをダブルクリックすると、

923 :デフォルトの名無しさん:2010/02/27(土) 01:12:36
labelコントロールをダブルクリックすると、
勝手にtextの内容がクリップボードに入るんだけど
止めることできないかな


924 :デフォルトの名無しさん:2010/02/27(土) 02:03:58
>>923
はてそんな妙な仕様だったかな、と思って確認したけど
やっぱり勝手にtextの内容がクリップボードに入ったりしないよ。

それともWindows Formのラベルじゃないのか

925 :923:2010/02/27(土) 02:58:11
>>924
System.Windows.Forms.Label です。

新規でプロジェクト作って label1 だけ置いて実行。
label1をブルクリックで、
クリップボードに「label1」が張り付くんです。

Visual C# 2008 Express Edition 使ってます。

926 :デフォルトの名無しさん:2010/02/27(土) 03:10:35
>>925
確認したけど貼りつかないよ。

927 :デフォルトの名無しさん:2010/02/27(土) 03:11:30
>>923
PC再起動しろ

928 :デフォルトの名無しさん:2010/02/27(土) 03:17:37
たちの悪い何かが常駐してるんじゃないの?

929 :923:2010/02/27(土) 03:24:11
う〜ん、PC2台(XP,Vista)で試しても同じこと起きる。
もう少し調べてみます。お騒がせしました。

930 :デフォルトの名無しさん:2010/02/27(土) 03:43:00
マウスジェスチャアプリとか入れてるんじゃね?

931 :913:2010/02/27(土) 04:02:23
調べてみたところ、
WebBrowserだけを使って、HTMLにアクセス、操作するのは不可能みたいですね。
http://blog.rocaz.net/2004/07/76.html

932 :デフォルトの名無しさん:2010/02/27(土) 04:09:22
>>931
それ2004年7月の記事だけど・・・今のバージョンだとどうなってるか確認してみた?

>WebBrowserだけを使って、HTMLにアクセス、操作するのは不可能みたいですね。
それにまあMicrosoft.mshtml.dllを再配布配布するしないの問題は別として
VC#2008EESP1入れた段階だとWebBrowserでできたと思うけどな
きっちり検証はしてないけどHTML上でおきたイベントのキャンセルするコードも書いたし
HTMLDocumentで中身いじったりもしたよ

933 :デフォルトの名無しさん:2010/02/27(土) 04:16:57
家にあるすべてのPC(6台)に
labelコントロールだけおいたアプリを起動して確認中w
1台だけ正常(?)なクリップボードに張り付かないPCがありました。

共通点を探ってますが、
素のままのWin7(updateはしてる)でも発生してるので???状態です。

常駐系アプリはいれてないので

934 :923:2010/02/27(土) 04:18:48
また途中でおくちゃった^^;

>>933 の続き

常駐系アプリはいれてないので
ちょっとお手上げ。

環境的な問題ってことみたいなので
あとはこちらで調べて見ます。
ありがとうございました。

935 :デフォルトの名無しさん:2010/02/27(土) 04:29:40
大丈夫な環境から大丈夫じゃない環境にリモートデスクトップでアクセスして試してほしいな。

936 :デフォルトの名無しさん:2010/02/27(土) 04:52:01
template < class Type = int > class Some{
Type value;
};

C#にはC++みたいにテンプレートにデフォルトの型を指定するような方法ある?

937 :デフォルトの名無しさん:2010/02/27(土) 05:11:01
ない

938 :デフォルトの名無しさん:2010/02/27(土) 05:15:41
>>923
うちの環境でもクリップボードにLabel1が!
ちなみにVirtualPC2007に入れたWindows2008 Ent SP2で発生
VSは2008Pro バージョンは9.0.30729.1 SP .NET Frameworkは3.5SP1
ちなみにVB.NETでも同様に発生した

発生したOSとしなかったOS書いてみて欲しいな

939 :デフォルトの名無しさん:2010/02/27(土) 05:16:20
Oh no!なんてこったい。ありがと

940 :デフォルトの名無しさん:2010/02/27(土) 05:26:44
WebRequest+Cookieでサーバーとやり取りする場合
サーバーから貰ったCookie情報は自前で管理しないとだめなのかな?

wininetの時は特に気にせずに保持されてたんだが・・・
IEの機能を使ってたのでIEと同じところへ保存されてただけなのかな?

941 :913:2010/02/27(土) 06:02:45
>>932
マジすか
http://support.microsoft.com/kb/312777/ja
この通りコード書いてプロジェクトつくったら、
タグを取得するアプリが作れたけど、
C#2008 Express EditionのWebBrowserでできるんですか?
ググってもmshtml使う方法しか出てこなかったので、
諦めたのですが・・・。



942 :デフォルトの名無しさん:2010/02/27(土) 06:38:06
webBrowserのNavigatedイベント発生した際に
webBrowser.Document.xxxでイベント登録すれ
ばなんとかなるんじゃないかな?
でも内部的にはどうやってるんだろ?

特にmshtmlなんとかを参照に加えたわけじゃないのに
解析もやってるしイベントも起きるよね・・・

943 :デフォルトの名無しさん:2010/02/27(土) 06:52:04
FormにWebBrowser貼り付けてDocumentCompletedでもNavigatedでもいいのでイベント処理させるようにして


private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Document.Click += new HtmlElementEventHandler(Document_Click);
}
void Document_Click(object sender, HtmlElementEventArgs e)
{
MessageBox.Show("きたよ");
}

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
webBrowser1.Document.Click += new HtmlElementEventHandler(Document_Click);
}
void Document_Click(object sender, HtmlElementEventArgs e)
{
MessageBox.Show("きたよ");
}

こんな感じで書けばレンダリング完了後のHPクリックするとイベント発生するしなあ

944 :デフォルトの名無しさん:2010/02/27(土) 06:56:54
なぜか3回呼ばれるのは謎

あとこんな感じでHtmlDocumentの生成が終わってるタイミングだったらbodyに対してドラッグイベントとか
設定できるね
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Document.Click += new HtmlElementEventHandler(Document_Click);
HtmlDocument doc = webBrowser1.Document;
doc.Body.Drag += new HtmlElementEventHandler(Body_Drag);

}

void Body_Drag(object sender, HtmlElementEventArgs e)
{
throw new NotImplementedException();
}
ほかにもDragEnd、DragLeave、DragOverとかあるね

問題は参照にmshtmlを追加してないけどこいつらを使うために内部で使ってる可能性もあるのかな?

945 :デフォルトの名無しさん:2010/02/27(土) 07:11:24
あとはこんな感じで特定エレメントを抽出して・・・・とかもあるね

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//webBrowser1.Document.Click += new HtmlElementEventHandler(Document_Click);
HtmlDocument doc = webBrowser1.Document;
//doc.Body.Click += new HtmlElementEventHandler(Body_Click);
HtmlElementCollection elm = doc.GetElementsByTagName("dt");
elm[0].Click += new HtmlElementEventHandler(Form1_Click);
}

void Form1_Click(object sender, HtmlElementEventArgs e)
{
MessageBox.Show("きたよ");
}

これ試したときはwebBrowserにこのスレのアドレスを設定しておいた。

>>1のdtタグ(2chのレスの数字〜ID(BEがある場合はBEまで)をクリックするとイベント発生

946 :デフォルトの名無しさん:2010/02/27(土) 07:33:01
フォームにstatusStripとPanelを貼って、PanelのDockをFillにすると
ちゃんとstatusStripをよけて広がってくれる(期待される当然の動き)

フォームにstatusStripとtextBoxを貼って、
textBoxのMultilineをTrue、DockをFillにすると
statusStripを無視してフォームのクライアント領域いっぱいに広がりやがる

textBoxバカなんじゃないの?
と、思うときはたいてい俺の方が(ry

947 :デフォルトの名無しさん:2010/02/27(土) 07:35:31
Zオーダー意識して配置してないだけでしょ

948 :デフォルトの名無しさん:2010/02/27(土) 08:18:13
>>946
StatusStripを再背面にしたり最前面にしたりしてみろ

949 :940:2010/02/27(土) 09:42:25
自己解決
wininetの関数はIEのクッキーを利用してたんですね・・
C#で同じことを実現するにはwininetを使えるようにして同じ関数で処理しないとだめっぽです・・・
ざんねん

950 :デフォルトの名無しさん:2010/02/27(土) 09:44:08
>>946
MSの標準ライブラリを馬鹿にするな。バカはお前の方(ry

ToolStripContainerを使え。

951 :デフォルトの名無しさん:2010/02/27(土) 10:49:46
すいません、質問です。
静的コンストラクタってスレッドセーフですか?

952 :デフォルトの名無しさん:2010/02/27(土) 11:15:03
スレッドセーフって意味が曖昧だが、まあそうだ。

953 :デフォルトの名無しさん:2010/02/27(土) 11:18:54
>>951
クラスがやっていることによる。
依存性がないならstaticだろうが通常のコンストラクタだろうがスレッドセーフだ。

954 :デフォルトの名無しさん:2010/02/27(土) 11:20:19
>>952-953
ありがとうございます。

955 :913:2010/02/27(土) 12:35:07
>>942-945
素晴らしい!それを見る限り、mshtml参照しなくても同じことできるっぽいですね。
mshtmlでイベント登録したときも、
なぜか3回呼ばれていました。
これはちょっとやっかいですね・・・

956 :913:2010/02/27(土) 13:11:15
>>942-945
ちなみにこういうことができるよ〜っていう情報はどこから手に入れたらいいでしょうか?


957 :デフォルトの名無しさん:2010/02/27(土) 13:34:38
msdn

958 :デフォルトの名無しさん:2010/02/27(土) 15:29:31
>>956
自力で解析した

どう検索していいかワードが浮かばなかったのでドット打って一つ一つ見て回った

959 :913:2010/02/27(土) 22:12:08
スクリプト言語と違ってネットに情報が少ないんですよねー
MSDNはなんだか見づらいし・・・
ドット打って調べるとか、MSDNで頑張るしかないか

960 :デフォルトの名無しさん:2010/02/28(日) 01:02:11
アクティブウィンドウを監視したいんですけど、
タイマーを使わない方法ありますか?

GetForegroundWindow() を 100 ミリ秒ごとに
呼び出してもやりたいことはできるんですが、
タイマーはできれば使いたくないと思いまして。

961 :デフォルトの名無しさん:2010/02/28(日) 01:24:28
あるかも

962 :デフォルトの名無しさん:2010/02/28(日) 06:59:05
すみません、小文字のフルパスファイル名から
HDDに記録されている大文字小文字の正しいファイル名を取得する方法はありますでしょうか?
System.IO.FileInfo fi = new System.IO.FileInfo(filename);
string fn = Path.GetFullPath(filename);
とやっても取得できませんでした。

963 :デフォルトの名無しさん:2010/02/28(日) 07:19:09
FileInfoの中身も正しく取得されてないのか。これ.netのバグじゃね?

964 :デフォルトの名無しさん:2010/02/28(日) 07:30:43
バグなのかわからんけどファイルはS-JIS、内部はusc-2という変換してなかったっけ?

あとは大文字小文字区別ってあったっけ?

965 :デフォルトの名無しさん:2010/02/28(日) 07:30:55
うん、バグじゃね?

966 :デフォルトの名無しさん:2010/02/28(日) 07:32:27
今フォルダをAAA作ってそのあとaaa作ろうとしたけど同じ物があるって警告でたよ

windows(というかDOS)は確か大文字小文字の区別は無かったはず・・・

967 :デフォルトの名無しさん:2010/02/28(日) 07:44:07
確かunix系は大文字小文字は別だったはずなんだよな・・・
なのでwindows系はもしかしたら勝手にLowerもしくはUpperやってるかもしれん

968 :デフォルトの名無しさん:2010/02/28(日) 07:52:47
Exists等で比較するときは大文字小文字の区別はしないが、
保存するときは大文字小文字は指定されたまま保存するでしょ?
でないと再度エクスプローラで表示したときに大文字小文字区別して表示できない。

969 :デフォルトの名無しさん:2010/02/28(日) 07:56:03
普通にエクスプローラ上でaaaとAAA作るだけでも警告でるから。

970 :デフォルトの名無しさん:2010/02/28(日) 08:09:42
>>962
var dir = new DirectoryInfo(Path.GetDirectoryName(filename));
var file = dir.GetFiles(Path.GetFileName(filename));

これでファイルがあればfile[0].FullNameに入る
フォルダ名は駄目だから同じようなことをルートからdir.GetDirectoriesしていけばいいと思う

971 :デフォルトの名無しさん:2010/02/28(日) 08:09:51
string fn = System.IO.Directory.GetFiles(
System.IO.Path.GetDirectoryName(filename),System.IO.Path.GetFileName(filename))[0];
で、正しいパスは取れるけどなんかなぁ。FileInfoで取れないのが納得できん。

972 :デフォルトの名無しさん:2010/02/28(日) 08:14:23
表示名がcase sensitiveなのは見やすさの為だけのようだね。
それでも、見やすさが欲しい時のために大小区別して取得されるべきだと思う。

973 :デフォルトの名無しさん:2010/02/28(日) 08:15:13
System.IO.FileInfo fi = new System.IO.FileInfo(filename);
string fn = Path.GetFullPath(filename);

この両方はfilenameで指定した物がそのままでるのか・・・

974 :デフォルトの名無しさん:2010/02/28(日) 08:16:58
>>972
まあ文字の扱いを知ってる人ならいいかもしれないがそんなの知らない人はおかしいと感じるかもなあ・・・

975 :デフォルトの名無しさん:2010/02/28(日) 08:17:43
ソース見てないけどPathクラスは文字列処理してるだけの気がする

976 :デフォルトの名無しさん:2010/02/28(日) 08:42:09
こんな感じ?
string fullname = Path.GetFullPath(filename);
string[] paths = fullname.Split(':', '\\');
string fullpath = paths[0].ToUpper() + ":\\";
for (int i = 2; i < paths.Length - 1; i++)
fullpath = Directory.GetDirectories(fullpath, paths[i])[0];
fullpath = Directory.GetFiles(fullpath, paths[paths.Length - 1])[0];


977 :デフォルトの名無しさん:2010/02/28(日) 09:14:50
C#で「ネット上に情報が少ない」とか言ってる奴は、さっさとやめたほうがいいぞ。

978 :デフォルトの名無しさん:2010/02/28(日) 09:17:58
既存のコントロールを継承したクラスを作る場合、ソリューションエクスプローラーから
クラスとして追加して継承元コントロールを書く方がいいのか
それともユーザーコントロールとして追加するのがいいのか・・・

同じコントロールに同じ固定処理を施すだけなんだけで基本的には元のコントロール
として使うんだけどさ・・・

979 :デフォルトの名無しさん:2010/02/28(日) 09:19:56
>>978
今は前者でいいと思うよ。

980 :デフォルトの名無しさん:2010/02/28(日) 09:20:37
>>977
少ないというかHTML関連は雑音が多いんだよ
ASP.NETやjavascript関連でHTML部分をいじる解説は山ほど出るんだが
C#になるとぐっと減るし、あってもmshtmlを使うような方法とかになるんだよ
あとはVC++とかね・・・

なのでどうぐぐれば最適な答えに辿り付くかを探し当てるのがものすごく大変だったよ

981 :デフォルトの名無しさん:2010/02/28(日) 09:21:26
>>979
ありがとう

982 :デフォルトの名無しさん:2010/02/28(日) 09:26:27
そりゃ、そのものズバリはないかもしれん。
でもさー。HtmlDocumentなんて、mshtmlをベースにしたものなんだし、
JavaScriptのgetElementByほげ系だって参考になるだろうよ。

983 :デフォルトの名無しさん:2010/02/28(日) 09:27:53
>>982
今はなんとなく見得てきたからその言い分はわかるけど、これから勉強って人にはノイズでしかなかったと思うよ・・・

984 :デフォルトの名無しさん:2010/02/28(日) 09:35:17
そう思いたければそれでいいじゃん。
で、一生初心者やってれば。

985 :デフォルトの名無しさん:2010/02/28(日) 09:37:44
意地でも叩きたいのがいるな
自分だって紆余曲折した時代だってあったろうに・・・
しかも初心者用とかかれたスレで・・・

986 :デフォルトの名無しさん:2010/02/28(日) 11:10:08
mining?

987 :デフォルトの名無しさん:2010/02/28(日) 11:33:40
>>976
private static readonly StringBuilder buf = new StringBuilder(260);
public static string GetDisplayPath(string path) {
  var pidl = ILCreateFromPath(path);
  SHGetPathFromIDList(pidl, buf);
  ILFree(pidl);
  return (buf.Length > 0) ? buf.ToString() : path;
}

Win32APIを使うバージョンを作ってみた。P/Invokeの宣言は省略
非スレッドセーフでエラー処理もなし

988 :デフォルトの名無しさん:2010/02/28(日) 17:19:27
質問です。
ファイラーのようなものを作っているのですが、
ファイルの「コピー」はClipboard.SetDataObjectでなんとかできました。
ファイルの「切り取り」はどうすれば実装できますか?


989 :デフォルトの名無しさん:2010/02/28(日) 17:20:59
貼り付けた時にコピー元を削除すれば良いんじゃないの?

990 :988:2010/02/28(日) 17:25:01
その場合は貼り付け時のタイミングをどうにか捕まえて、
コピー元を削除することになりますが、アプリケーションを
終了してしまっていると削除できないですよね?


991 :デフォルトの名無しさん:2010/02/28(日) 17:29:41
>>990
何で迷ってるかよくわからんが
クリップボードも確かファイルのコピーとか切り取りって

「xxをコピー予定」とか「xxを切り取り予定」
くらいで実際に貼り付けの段階まで実体は何もしてないと思うんだが

貼り付けが実行されたときに元と先のファイルをロックして自分の好きなように
作業すればいいだけと思うんだが

992 :988:2010/02/28(日) 17:48:05
確かに「切り取り」すると貼り付けるまでファイルが半透明になるので、
そういう”予定”の情報をクリップボード側(もしくはOS?)が保持してそうですが、
「切り取り」ですよって情報をどうやって投げる事ができるのでしょうか?


993 :デフォルトの名無しさん:2010/02/28(日) 17:51:23
次スレは?
俺は制限で無理だった

994 :デフォルトの名無しさん:2010/02/28(日) 17:51:59
>>992
エクスプローラーはクリップボードに予定が入ってれば張り付けが黒字になりますよね?
それをクリックしたらイベント発生でクリップボード参照して動けばいいんでないの?

995 :デフォルトの名無しさん:2010/02/28(日) 17:52:33
難しく考えすぎ。
Excelのセルを切り取ってメモ帳に貼ってみ。
で、メモ帳のテキストを切り取ってみ。
切り取りはそもそもアプリ内で閉じた話。

996 :デフォルトの名無しさん:2010/02/28(日) 17:53:16
>>995
ファイルのコピーとテキストとかの話は分けたほうがいいかも
テキストとかは多分選択した範囲全部持ってるだろうから

997 :デフォルトの名無しさん:2010/02/28(日) 17:55:01
>>996
たぶんとかじゃなくて・・・
想像語る前にクリップボード監視ソフトをまず作れよ。挙動分かるから。

998 :996:2010/02/28(日) 17:56:56
>>997
俺は質問者じゃない
クリップボードの挙動は見てればわかるよw

999 :デフォルトの名無しさん:2010/02/28(日) 17:58:00
>>998
分かってないから多分とかだろうとか言ってんだろw

1000 :デフォルトの名無しさん:2010/02/28(日) 17:59:29
うま

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

212 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)