C♯相談室 Part14

このエントリーをはてなブックマークに追加
1名無しさん♯

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


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

関連リンク
http://onigiri.s3.xrea.com:8080/csharp/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D
2名無しさん♯:04/02/16 21:12
3デフォルトの名無しさん:04/02/17 11:02
∩( ・ω・)∩ ばんじゃーい
4デフォルトの名無しさん:04/02/17 11:03
>>3
タイーホ
>>3
(*´ー`)σ)ω・) プニ
63:04/02/17 11:13
>>4-5
死ね
73(本物):04/02/17 11:54
>>6
∩( ・ω・)∩ ばんじゃーい
       ヽ|/
     / ̄ ̄ ̄`ヽ
    /         ヽ
   /  ノ'' ll ''ヽ ノ( |  
   | (●) (●)⌒ .|  
   |  / ̄⌒ ̄ヽ   |  
   |  | .l~ ̄~ヽ |   |
   |  ヽ|  u/ノ   |
   |   | /| | >>3  |
      // | | ))
     U  .U
>>3-8
C#やってるのって、こんな香具師ばっかりなの?
>>9
>9
>>9
大丈夫、君も仲間さ
12デフォルトの名無しさん:04/02/17 23:45
Cab形式とかで圧縮解凍してくれるクラス、基本で入れてくれんかな
コモンダイアログの表示位置は指定できませんか?
14デフォルトの名無しさん:04/02/18 13:08
できないんじゃね?
メッセージボックスだってできないし。
15デフォルトの名無しさん:04/02/18 13:44
>>9
Del厨必死だなw
9 名前:デフォルトの名無しさん 投稿日:04/02/17 21:39
>>3-8
C#やってるのって、こんな香具師ばっかりなの?
>14
ありがと。
でもこの本ではメッセージボックスを任意の位置に表示できるようなメニューがあるからさ
http://www.galliver.co.jp/book/csn3001/
コモンダイアログでもなんかあるのかなと。。
この本立ち読みしてくるか・・・
>>17
ああそれね、たしかフック使ってた
たかがメッセージボックスに大仰だなあと思った覚えがある
19デフォルトの名無しさん:04/02/19 01:01
当然、細かいレベルまで見れば、
内部では、絶対にどこに表示するかのプロパティはあるはずだし、
何らかの方法があるとは思うんだけどね、、、。
フレームワークを逆アセンブリとかすれば、、、?
漏れにはできないけど、、、。
20デフォルトの名無しさん:04/02/19 01:02
しかし、その程度のプロパティくらい用意して欲しいよな。
まあ、msとしては、どこに表示するかは大した問題ではないから
必要ないという考えなのかな?
俺は気にしないんだけどお客さんが気にするんだ(笑)
22前スレ964:04/02/19 23:59
>>最凶VB厨房様
前スレ976でご教授いただきありがとうございます。
しかし
SelectedListViewItemCollectionと
Listview.LargeImageList
の間にどういう関連があるかわからず
どうやって使えばいいのかよくわかりません…


とりあえずやりたいことは
ListView上のアイコンをシングルクリックでを選択したあと
ボタンを押して
1、選択されたアイコンを別のアイコンイメージに変える
2、アイコンのX、Y座標を保持する
です。

X、Y座標はドラッグ&ドロップしたときには
取得できたんですけどそういうイベント無しに取得する方法はあるのでしょうか?

重ね重ね申し訳ありませんが、宜しくお願いします。
>>22
private void button1_Click(object sender, EventArgs e)
{
  foreach (ListViewItem item in listView1.SelectedItems)
  {
    item.ImageIndex = 1;
    MessageBox.Show(item.Bounds.ToString());
  }
}
C#というか.net frameworkの質問になってしまいますが
作ったフォームのウィンドウクラス名を変更するにはどうしたらいいでしょうか。
デフォルトでは WindowsForms10.Window.8.app1 とかになってしまいますよね。
25デフォルトの名無しさん:04/02/20 20:41
age
26名無しさん♯:04/02/20 22:01
>>24
結論から言えば、できないようです。

FormのCreateParamsプロパティをオーバーライドして云々という手も使えないようです。
詳しくはこちらを。
http://discuss.develop.com/archives/wa.exe?A2=ind0111A&L=DOTNET&D=0&I=-3&P=49377
>>26
どうもです。通りで検索しても引っかからなかったんですね・・・。

クラス名を手がかりにFindWindowしてSetForegroundWindowしたかったんですが、
他の方法を探すしかないようですね。
Exploring New WinForm Controls in VS .NET Whidbey
http://www.devx.com/codemag/Article/20145/0/page/1
C#で使えるフリーで高性能のエディタコンポーネントはありますか?
DelphiのTEditorみたいな・・・
>>29
VC.netのアドインで開発してくれ・・・。
出来たら俺もほしい。
C#で自作でコントロール作ったんだけど重くてたまらない。
C++で作り直して、それをC#で使いたいんだけど
なんか参考になるサンプルや説明のあるサイト知りませんか?
ないのか?
いくらC#の機能が強力でも
Delphiコミュニティのフリーコンポーネント攻勢には
かなわないのか?
それじゃまだC#とDelphiを並行して使うしかないか・・・
煽りはスルーで
>32
煽りじゃないよ。
現状では
C#標準の機能>>>Delphi標準の機能
だが
Delphi標準の機能+コミュニティの成果>C#標準の機能+コミュニティの成果
なんだよね。

ホントはC#を使いたいのだが
エディタコンポーネントのようにDelphiの遺産がモノを言う場合もあるんだよね。
まだ待つしかないのか?
待ってるからだめなんだろ
MS系の言語はマイクロソフトが中途半端に面倒見がいいものだから
コミュニティが発達しづらいのかな?
マイクロソフトのこれまでの言語は
「業務だから使ってんだよ」という傾向が強かったが
C#はそのレベルを遥かに超えてるわけで
ユーザーコミュニティが発達しても良さそうなものだが。
C#はこれから10年の主流言語となるはずなのに。
妄想です
Delphiのエディタコンポーネントは知らないのだが
漏れの使ったことあるのはSharpDevelopと#WTとSyncfusion。
制約があって作りづらいというのがあるんでないかな。
39フサギコ♯:04/02/21 22:45
     ∧,,∧,,,,,, )      (´⌒(´
  ⊂ミ゚Д゚⊂ `つ≡≡≡(´⌒;;;≡≡≡
       """""  (´⌒(´⌒;;
39ゲットー

コミュニティが作成するのではなくて
BOCとか、みたいな会社が商売していくんじゃないかな。
市場もでかくなっているんだし。

Dreamカンパニのが移植されたら
漏れはウレスィです。
>>31
ATLでも極めてくれ。
4231:04/02/22 10:13
>>40
COMですか・・・
C#で参照の追加ってダイアログを開くと.NETとCOMのタブがあって
そこからコントロールのdllが選べるけど
.NETのタブの方にあるのはCOMじゃないのかな?
だとしたら何で作ってるのかが知りたい。
>>42
managedなdllに決まってる。
4431:04/02/22 10:38
>>42
そうか、そうだったのか・・・なんかがっくり。
managedにしても、やっぱネイティブには適わないだろうし
やっぱATLでCOM作るか・・・本買ってきます。
>>34
無ければ作れ
おまいが受け継いだ遺産はコンポーネントだけか?
ヤだよ。
他人のフンドシでやるから楽なんだし。
バカじゃねーの?
他人の褌だとどうも股擦れが多発するんだよな。
48デフォルトの名無しさん:04/02/22 16:44
WindowsFormsが遅いなんて言ってるショボPCではLonghornなんかもってのほか。


買い換えろ。
49名無しさん♯:04/02/22 17:31
新言語仕様はなかなか強力でつね。ヽ(´ー`)ノ

Introduction to Anonymous Methods and Higher-Order Procedures in C#
http://msdnaa.net/Resources/display.aspx?ResID=2488
関数型言語みたいだね
51デフォルトの名無しさん:04/02/22 19:33
フレームやボタン等のコンテナとかコンポーネントにはマウスイベントを監視させるリスナを
インプリメントすることができるのですが
DirextXで作成したポリゴンのスプライトにもマウスイベントを監視させたいのですが
できるのでしょうか?
やはり自前で監視ル−チン組む必要があるのでしょうか?
52デフォルトの名無しさん:04/02/22 19:35
ごめんなさい、上の質問は解決しました
解決したんなら解決方法書け( ゚Д゚)ゴルァ!!
5453:04/02/22 21:55
C#を始めようと思ってソフトを買おうかと思っているんですが、
Microsoft Visual C#.netとBorland C# Builderとどっちがいいんでしょうか・・・
5554:04/02/22 21:56
すいません。名前間違えました。ここの>>53の方とは関係ないです・・・
てめえ,わざとかよ( ゚Д゚)ゴルァ!!
>>54
まずはSharpDevelopで試してみてはいかがでしょうか。
.NetFrameworkSDKとSharpDevelopをインストールすれば
MicrosoftのVisualC#とほぼ同等の事が出来ますよ。(ほとんどVisualC#クローンと言えます)
(今まで1ヶ月と少しの間VisualStudio.NetとSharpDevelopを使ってみて違いに気づいたことと言えば
VisualStudioのほうがDBを扱うプログラム構築が楽になる。ということと、
SharpDevelopはエラー発生率が高いと言うことだけ。
DBアクセスは一度ソースを見ればあとはIDEを頼らなくても手コーディングで書けるようになりますが・・・)
Borlandの方は使ったことが無いので何ともいえません。
5857:04/02/22 22:44
と思ったら、SharpDevelopも先日のupdateでDBコネクション関係も作れるようになっておりました。
Borlandは、Personal Editionダウンロード版
(製品パッケージ版と同機能だが、商用利用不可)なら、無償ダウンロードできます。
VS.NETとの違いは、独自のコンポーネント群がついてくる程度です。
詳しくはこちら
ttp://www.borland.co.jp/csharpbuilder/
60フサギコ♯:04/02/23 00:53
     ∧,,∧,,,,,, )      (´⌒(´
  ⊂ミ゚Д゚⊂,,,,,,,`つ≡≡(´⌒;;;≡≡≡
ズザーーーーーッ    (´⌒(´⌒;;

C#Builder vs. VS .NET- Choose Wisely[C#Builder、対.NET対-賢明に選びます。 ]
http://www.excite.co.jp/world/url/body?wb_url=http%3A%2F%2Fwww.c-sharppro.com%2Ffeatures%2F2003%2F11%2Fcs200311jm_f%2Fcs200311jm_f.asp&wb_lp=ENJA&wb_dis=3

C#Builder for Delphi Developers[デルフォイ開発者のためのC#Builder ]
http://www.excite.co.jp/world/url/body/?wb_url=http%3A%2F%2Fwww.c-sharppro.com%2Ffeatures%2F2003%2F10%2Fcs200310cd_f%2Fcs200310cd_f.asp&submit=%83E%83F%83u%83y%81%5B%83W%96%7C%96%F3&wb_lp=ENJA&wb_dis=3&wb_co=excitejapan

付属のComponentOneはC#BuilderPro以上だったかな?
61フサギコ♯:04/02/23 01:21
  ∧,,∧   登録がいるけれども
 ミ,,゚Д゚彡 ここも
 ミつ日(ミ
IT Pro 技術の広場 - ようやく出てきたC#の選択肢(上)
http://itpro.nikkeibp.co.jp/members/NBY/techsquare/20031107/1/
62名無しさん♯:04/02/23 09:11
F#みたいなこともだいぶ楽に書けるんだね。

using System;
using System.Collections.Generic;

delegate T Func<T>(T arg);

class Test {

  public static List<T> Map<T>(List<T> list, Func<T> func) {
    for (int n = 0; n < list.Count; n++) {
      list[n] = func(list[n]);
    }
    return list;
  }

  public static void Iter<T>(List<T> list, Func<T> func) {
    foreach (T t in list) {
      func(t);
    }
  }
63名無しさん♯:04/02/23 09:11

  static void Main() {
    List<int> l = new List<int>();
    l.Add(1); l.Add(2); l.Add(3); l.Add(4); l.Add(5);

    // 二乗する関数
    Func<int> square = delegate(int n) {
      return n * n;
    };

    // 表示する関数
    Func<int> print = delegate(int n) {
      Console.WriteLine(n);
      return 0;
    };

    Map(l, square);
    Iter(l, print);
  }
}
Schemeでいいよ
そういや .NET Framework上のScheme処理系の話ってどうなった?
商業ベースのやつがあったと思うんだが。
夢のテンプレート!!!
これでC#の世界制覇が現実になりますね。
>>62-63の肝はgenericsじゃなくて匿名delegateだと思うんだが・・・。
ウィンドウをアクティブにしないで開く、もしくはウィンドウを非アクティブにするには
どうしたらいいでしょうね?
69デフォルトの名無しさん:04/02/23 15:09
>>68
そういうプロパティがフォームにあるはずだから、
それを非表示に設定しておいてから、開けば良いんじゃないでしょうか?
70デフォルトの名無しさん:04/02/23 15:57
スクロールバーの基本的なことを学びたいのですが、どうしたら良いでしょうか?
MSDNを熟読するのはどうだろう。


つか抽象的すぎ。
実験あるのみ!
73デフォルトの名無しさん:04/02/23 17:03
二重起動防止に、起動時にApplication.ExecutablePathを引数にMutexクラス作ると、
指定されたパスが見つかりません。という例外が発生するんですが、どうすればいいのでしょうか。
74デフォルトの名無しさん:04/02/23 17:10
>>71>>72
なるほど。
プログラムってのは、基本的に、
そう言う物なんですね。

自分的にはちゃんとした説明がどこかにあるはずだと思ってましたが、
そうじゃないものもあったりするんですね。
そういう場合は、トライ&エラーで強引に進めるのが普通のプログラマーなんですね。
分かりました。
やってみます。
>>73
\が含まれてると駄目らしい。
Replaceで/に置換するとか?
7673:04/02/23 17:50
>>75
置換したら上手くいきました。ありがとうございます。
77デフォルトの名無しさん:04/02/23 17:56
例えば、ピクチャーボックスの画像を
スクロールバーで移動させて表示させるような処理ってのは、
基本的に、
スクロールバーの値を取得して、そして、
各画像オブジェ、例えば、レクトアングル、などを
計算して、ずらして表示させるような処理を自分で
書くのが普通なのでしょうか?
自分的には、勝手に計算してくれそうな気がしてましたが、
普通は自分でちゃんとコードを書くものなのでしょうかね?

レクトアングル構造体が2500個ほどあるのですが、
その原点を全てスクロールバーの値から計算して移動させる処理を書くしかないですかね。
逆にピクチャーボックスの座標の原点の方をずらすってことはできないのでしょうか?
原点を0,0じゃなくて、500,500からはじめるとかできたら
簡単なのにな。
自分でも調べてみたけど、そういうプロパティは見つかりませんでした。
ありそうなものだけどな、、、?
やっぱりないですかね?

知ってる方がいらしましたら一言下さいませ。
78デフォルトの名無しさん:04/02/23 18:02
レクトアングルage
>>77
Panelを使えば思考する余地すらなかったり。

public static void Main(string[] folder) {
   Form f= new Form();
   Panel p = new Panel();
   PictureBox b = new PictureBox();
   b.Image = Image.FromFile("test.bmp");
   b.Size = b.Image.Size;
   p.AutoScroll = true;
   p.Controls.Add(b);
   p.Dock = DockStyle.Fill;
   f.Controls.Add(p);
   Application.Run(f);
}
TreeViewで任意のTreeNodeを選択するにはどうすればいいのん?
(任意のTreeNodeに対してAfterSelectイベントを発生させる)

OnAfterSelectメソッドとかあるけど使い方がよくわかんない( ;゚Д゚)
SelectedNodeプロパティじゃ駄目だっけ?
一応SelectedNodeで指定したけどだめでした。
といってもnewでTreeNodeを作って指定しただけだから、
やり方が他にあるのかもしれないけど。。
8380:04/02/23 18:52
正確には、現在選択されているTreeNodeの下にある任意の
TreeNodeでAfterSelectイベントを起こしたいんです
> といってもnewでTreeNodeを作って指定しただけだから、

だめなんじゃないか?
ツリー内に無いノードは選択できないだろ。
どこで発生するか分かってるんなら
イベント使うまでもなく直接メソッド呼び出せば良いんじゃ……?
8680:04/02/23 19:10
treeView1.SelectedNode = treeView.SelectedNode.Nodes.Item
てふうにすればいいのでしょうか?
>>86
ok

ちなみにNodes[]ね。
8880:04/02/23 19:33
わかりました。
ありがとうございます。
89デフォルトの名無しさん:04/02/23 21:08
>>79
おお、パネルと言うものがあるのですか?
良く分かりませんが試してみます。
ありがとうございました。
初めてC#をいじっています。

MFCでやっていたときはログクラスを自前で作ってAPPにおいて
どっからでも((CWinAPP2*)AfxGetApp())->m_clsLog.Write("LOG"); って書けばOKだったのですが

C#ではどこに実態を置いて、どうやってアクセスすれば良いのでしょうか……。

>>90
System.Diagnostics.TraceクラスのListenersプロパティでも使ってみたら?
げ。コモンダイアログって HCBT_ACTIVATE で SetWindowPos しても
位置は移動しないの?サイズは変わるのに・・・
常におんなじ位置に来るように何かしてるのかな?
>>57-61
遅くなりましたが、レスありがとうございます。
早速調べてみます。
94デフォルトの名無しさん:04/02/23 23:24
Point.Offset メソッド
Rectangle.Offset メソッド
って本当に使えるの?
どんなパラメータを指定しても
動かないんだが…

そもそもこのパラメータって
全画面上の座標?
それとも
コントロール上の座標?
95デフォルトの名無しさん:04/02/23 23:55
System.Web の後ろに . 入力しても HttpUtility が出てこないんだけど何で?

using System.Web;
を宣言してもHttpUtilityなど知らんといわれる。。。

わかるひとー
96デフォルトの名無しさん:04/02/24 00:08
GDI+でボタンの描画したものを自分の好きなところに書くことは出来ませんか?
DataGridにボタンカラムを追加したいんですが、画像しか無理みたい(感嘆には)
97最凶VB厨房:04/02/24 01:29
>95
参照設定
9890:04/02/24 02:11
>91
Thanks . やってみます。
質問はちょっと変わるけど、
ソース上のどんな場所からでも実態を取得できるクラスは
つくれるのでしょうか。
>>98
static
ちょっと調べれば・・っつーかC++使えるんなら調べなくてもわかることだと思うが。
10090:04/02/24 07:09
>99
コンパイルでstaticって出たのでそれはわかったのですが
staticを使いたくなかったのです。
>>100
厨房御用達のSingletonパターンで
>>94
>  Point.Offset メソッド
>  Rectangle.Offset メソッド
>  って本当に使えるの?
>  どんなパラメータを指定しても
>  動かないんだが…
Pointとかは構造体だから単に
Location.Offset(10, 10);
とかやっても駄目。

Point p = Location;
p.Offset(10, 10);
Location = p;

>  そもそもこのパラメータって
>  全画面上の座標?
>  それとも
>  コントロール上の座標?
意味がないぞこの質問。
なんのパラメータとしてのPoint構造体かによるだろ。
>>100
static が嫌なら何を使いたいんだ?
C++やJava系のOOPでstatic以外にシングルトンを実現する方法があるか?
まさかグローバル関数か?だったらC#にはねーぞ。
それとも逐一そのインスタンスをそれを必要とするオブジェクトのコンストラクタに渡すか?これが一番汎用性・柔軟性があるがめちゃくちゃ面倒だぞ。
ASP.NET Web Matrix Project 日本語版
http://www.microsoft.com/japan/msdn/asp.net/webmatrix/

フリーのASP.NET開発ツールの日本語版がダウンロード可能に : IT Pro ニュース
http://itpro.nikkeibp.co.jp/free/NT/NEWS/20040223/1/
何を今さらと思ったら日本語版が出たのか。
Passport Uzeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
107デフォルトの名無しさん:04/02/24 13:12
>>94
なんかのPoint型のプロパティのoffset使おうとしてるのかな?
プロパティのプロパティは使用できないよ。
108デフォルトの名無しさん:04/02/24 17:34
StreamReader sr = new StreamReader("A:\\abc.txt",System.Text.Encoding.Default);
こんな感じで、フロッピーを読みにいって、フロッピーが入っていないときのエラーが表に出てこないのですが、
これって仕様??
ちなみにWindowsXPでも2000でも同じ。
[CTRL][ALT][DEL]を押すと再試行etc..とかのメッセージボックスは表示されているのですが・・・。

>>108
try
{
StreamReader sr = new StreamReader("A:\\abc.txt",System.Text.Encoding.Default);
sr.Close();
}
catch(System.Exception exc)
{}

こんなコード書いてみたけど、普通にキャンセル、再試行、中止のダイアログ出たよ。
ちなみにOSはWin2k。

110デフォルトの名無しさん:04/02/24 18:13
>>109
ありがとうございます。
もう少し検証してみます。
Cで作ったDLLを実行ファイルに埋め込んで
使用するにはどうしたらいいのでしょうか?

DLLのビルドアクションを「リソースに埋め込む」にすれば埋め込まれるのですが、
DLL内関数の呼び出し方法がわからないのです。
112デフォルトの名無しさん:04/02/24 23:21
Exprolerみたいなファイル管理ツールを作ってるんだけど
自動整列させないアイコンをドラッグandドロップするときに
半透明のアイコンを表示させるにはどうすりゃ良いんでしょうか?
それにドラッグ時にアイコンのどこをドラッグしても
ドロップするとアイコンの左上端の座標がマウスカーソルの先端の座標に
なっちゃうし…


うまくいかないYO!
誰か助けてください。
>111
DllImportAttributeクラスを使えばいいはず。
サンプルもMSDNにのってるからみてみなー。
Microsoft Win32 と Microsoft .NET Framework API との対応
http://www.microsoft.com/japan/msdn/net/general/win32map.asp

日本語版
115111:04/02/25 00:38
>>113
ありがとうございます。
実行ファイル以外にDLLファイルを用意してdllimportする方法は知っておりました。

実行ファイル内にDLLを埋め込んで、
埋め込んだDLLから関数を呼び出す方法が知りたいのです。
そんな方法があるのかどうかもわからない状態ですが・・・。
http://homepage2.nifty.com/woodensoldier/computer/CSharp.htm#14
は見た?
やってことないんでわからんが、StreamにしてからDllImportとか無理?
確かDLLの埋め込みは不可能なはずだが。
"DL"Lの名に相応しく。
ASP.NET Web Matrix Project 日本語版
http://download.microsoft.com/download/f/2/7/f277001e-1d24-4890-a2fa-f2977b0fa7bb/JPN_WebMatrix.msi

めんどくせーよという方用。
119デフォルトの名無しさん:04/02/25 17:03
VC++にあったようなDoc-Viewアーキテクチャというか,
データクラス,描画クラス,そして制御クラスを分離するような雛形は,
VS.NETのC#には無いですよね?

自作しようとしたら,デザインパターンとか読んで調べるべきですか?
>>119
C++は言語の表現能力が弱いから(MFCの設計がうんこなせいもあるが)ああやってただけで。
C#ではプロパティとイベントが使えるから、既存のフレームワークに依存する必要が無いんだよ。
自分で勝手にドキュメントクラスを作って、値の変更通知をイベントにして公開。
同じく勝手にビュークラスを作って、ドキュメントクラスのイベントを受け取るようにすればいい。
継承関係にとらわれることもないしクラス間の依存関係も少なくて済む。
121119:04/02/25 17:33
C#は簡単になったC++という程度の認識しかなかったのですが,
全然知識不足であることを痛感しました.
確かに,VCで自分でイベントを作るのは面倒な手続きが必要でしたが,
そういう面倒が無いので,お仕着せのDoc/Viewが必要ないということですね.

本当にどうも有り難うございました.
122デフォルトの名無しさん:04/02/25 18:32
>>111の質問に関連するんですが、

HRESULT GetActiveObject(
REFCLSID rclsid,
void FAR* pvReserved,
IUnknown FAR* FAR* ppunk
);
これをC#で書くには、
[DllImport("OLEAUT32.DLL ")]
public static extern ....
この後さっぱりです。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconmarshalingclassesstructuresunions.aspを見てもさっぱりわかりません。どなたか教えてもらえないでしょうか?
123122:04/02/25 18:37
ちなみにクラスIDを渡して、その実行中のオブジェクトのインスタンスを受け取る
という関数です。NETライブラリではプログラムIDからROTからインスタンスを受け取る
という形式なのですが、これが使えないので、仕方なくネイティブを呼び出していますが、
このIUnknown FAR* FAR* ppunk というのがオブジェクトインスタンス(の参照)になるはずで、
REFCLSID rclsidが{DC269E7E-44E1-4902-B505-3AD5C8461B34}とかになるはずです。
>>123
Marshal.GetActiveObject()はGetActiveObjectAPIのただのラッパのようにしか見えないけど?
125122:04/02/25 19:06
>>124
いえ、Marshal.GetActiveObject()
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemruntimeinteropservicesmarshalclassgetactiveobjecttopic.asp
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemruntimeinteropservicesmarshalclassgetactiveobjecttopic.asp
(訳がちょっと変)の解説、>>123に書いているように、
プログラム ID (ProgID) を渡すのがMarshalNETのほうで、クラス ID (CLSID) を渡すのが32APIのほうです。
ターゲットとなるCOMはいろいろ調べた結果OLE対応で外からインスタンスにアクセスできるはずですが、
ROTビューワーで見ると、認識していない>ProgramIDを返さないので使えません。
おそらくそのCOMの中でOLE登録作業RegisterActiveObject()をしていないのではないかと推測しています。
ほい

[DllImport("oleaut32.dll", PreserveSig=false)]
private static extern IntPtr GetActiveObject( [MarshalAs(UnmanagedType.LPStruct)] Guid classID, IntPtr reserved );

public static Object GetActiveObject( Guid classID )
{
IntPtr unknown = GetActiveObject( classID, IntPtr.Zero );
Object result = Marshal.GetObjectForIUnknown( unknown );
Marshal.Release( unknown );
return result;
}

とりあえず Excel で試してうごいたっぽい。

つーか Register してないならそもそも Get するのは不可能じゃないのか?
127122:04/02/25 20:21
>>126 神
あーああ、すごいですね。ありがとうございます。晩飯くらいおごりたい気持ちです。
今コピペしたら、そのままVS.netが関数認識しています。今からCLSID入れて
試してみますが、おそらくまだ壁にぶち当たる事がすぐに発生すると思うので、
またここで質問させてください。あつかましようですが、よろしくお願いします。


128122:04/02/25 21:44
失敗しました。
An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in csn276.exe
Additional information: Operation unavailable
というエラーがでました。

あることをするために2週間ほどずっと挑戦しています。
知識のある方がこのスレを見ておられるようなのでぜひ質問させてください。
少し長くなると思いますが、よろしくお願いします。

あるアプリケーションを自動化したいのです。複数のCOMをコアコンポーネントとするアプリケーションです。
このターゲットアプリケーションが実行されているときに、そのCOMのインスタンスに自前のC#アプリケーションから
アクセスして、そのメソッドを実行したり、イベントを拾ったりしたいのです。
129122:04/02/25 21:45
EASYROUTERCOMCLIENT.dllというのがその内のひとつのCOM/DLLファイルで、
VS.netにそのCOMを参照に追加してオブジェクトブラウザで見ると、
EASYROUTERCOMCLIENTLibと認識されそのクラスの一覧が見れます。

VS6に付属していたOLE/COMビューワーで見ると、InterfaceのセクションにIEasyRouter、IFIXMessageというように、
<ITypeInfo interface>があります。
さらに、TypeLibビューワーでEASYROUTERCOMCLIENTLib(EasyRouter COM Client Type Libirary)を見ると、
130122:04/02/25 21:45
library EASYROUTERCOMCLIENTLib
{
// TLib : // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
importlib("stdole2.tlb");

// Forward declare all types defined in this typelib
interface IEasyRouter;
interface IFIXMessage;
interface IFIXGroup;
interface IFIXGroups;
dispinterface DEasyRouterEvents;
interface ISECOMHandler;
interface IMnemonicMaker;

[
odl,
uuid(DC269E7E-44E1-4902-B505-3AD5C8461B34),
helpstring("IEasyRouter Interface"),
dual,
oleautomation
]
interface IEasyRouter : IDispatch {
[id(0x00000001), helpstring("Send a FIX message to EasyRouter")]
HRESULT SendMsg(
[in] IFIXMessage* FIXMsg,
[out, retval] VARIANT_BOOL* Queued);
//..............
131122:04/02/25 21:46
というようになっているので、おそらくこのIタイプのインターフェイスの実行中のインスタンスを取得すれば、そのままクラスのメソッド等にアクセスできて、、
そのすでに実行中のターゲットアプリケーションを操作できると思っているのですが、どうでしょうか?
実際、interface IEasyRouter等に使いたいメソッド等は含まれています。
OLE Automationのライブラリがインポートされているのを見ると、おそらく可能だと推測しているのですが、
同じくVS6のROTビューワーで見ると、そのOLE's running object table に認識されていません。
これがOLEのテーブルの登録をそのCOMがやっていないのではないかと推測した理由です。
132122:04/02/25 21:54
それで、上で>>126さんに書いていただいたAPI関数を利用して、
//....................
using System.Runtime.InteropServices;
using EASYROUTERCOMCLIENTLib;

//.................

IEasyRouter easy;
Guid easyGuid = new Guid("DC269E7E-44E1-4902-B505-3AD5C8461B34");
easy = (IEasyRouter)GetActiveObject(easyGuid);

とかやってみたのですが、上のエラーがでてしまいました。
このプロジェクトにもEASYROUTERCOMCLIENTLibは参照追加しています。
以上、今自分がわかっているポイントをできるだけ書いてみました。
どうぞよろしくお願いします。


> ターゲットとなるCOMはいろいろ調べた結果OLE対応で外からインスタンスにアクセスできるはず

これはどうやって調べたの?
OLE対応=外から操作できる
とは限らないよ。
RegisterActiveObject してなけりゃ GetActiveObject で取得できないし。
134122:04/02/25 22:15
>>133
え、そうなんですか?
OLE対応=外から操作できると思い込んでいました。


調べたというのは、>>130で書いたように
// TLib : // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
importlib("stdole2.tlb");
というのがあるので、OLEであると思いました。

後、DRCOM Monitorというシェアウェアがあり、それでターゲットアプリケーションを
走らせて見ると、Automaticという項目がTrueになっており、Invokeウィンドウから
そのEASYROUTERCOMCLIENTLibにObject.SendLogout()などスクリプトを書いて送ってやると、
実際、その通りのターゲットアプリの挙動がそのツールのコントロールによって引き起こされた
というのがあります。
しかし、これは、DRCOMが同じプロセスでそのターゲットアプリを走らせていると思うので、
確証はないです。しかし、少なくとも外部のツールによってメソッドを実行できたという手ごたえが
ありました。どうでしょうか?
135デフォルトの名無しさん:04/02/25 22:18
マネージドダイレクトxってただのダイレクトxと何が違うのでしょうか?
ただ、単に、.NET系からも呼び出せる部分のコード(ラップって言うんでしたっけ?)
が、追加されたダイレクトXと思えば良いのでしょうか?
vb.NETの本があって、自分はc#を使ってるのですが、
根本的に理論は同じはずなので買っちゃおうかなと思いましたが、どうなのでしょうか?
どうせ、違う言語の本を買うならいっそc++様のダイレクトxでも理論は同じだから行けたりするのでしょうか?
ご存知の方お願いしますです。
Managedの方はただのDirectXで必要な、
COM周りの煩雑な初期化が必要なく、
使いたい機能を簡単に使える。
>>134
DRCOM Monitorが同一プロセスでサーバーを起動しているのなら、

> 外部のツールによってメソッドを実行できた

ことにはならんのではないでしょうか。
138122:04/02/25 22:25
自分が調べた限りでは、RegisterActiveObjectというのは、
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/automat/htm/chap5_2k38.asp
英語になりますが、
The RegisterActiveObject function registers the object to which punk points as the active object for the class denoted by rclsid.
Registration causes the object to be listed in the running object table (ROT) of OLE, a globally accessible lookup table that keeps track of objects that are currently running on the computer.
ということで、ROTにクラスIDの参照をのせるためだけの操作で、上のように、手動でクラスIDを調べて、
GetActiveObject にそのクラスIDを渡してやれば、ROTにそのオブジェクトが載っていなくても動作させると
思ったので、>>122のような質問をしました。
139デフォルトの名無しさん:04/02/25 22:27
>>136
ありがとうございます。
140122:04/02/25 22:30
>>137
おっしゃるとおりです。最悪、同じプロセスで走らせる方法を
http://www.codeguru.com/dll/Loader.html
ここで見つけて、成功させています。
しかしOLEというのは外部プロセスからアクセスできるというのが自分の
理解で、とりあえず同プロセスの方法は最悪の場合のため凍結しています。
managed DirectX 問題多いよ。
Texture は内部で参照されてるせいでGCが機能しない=Disposeを明示的に呼ばない限りリソース食いつぶす。
し、音楽関係はほとんど使い物にならなかった記憶あり。

特に Texture の問題は結局参照カウントを自力で数えなきゃならなくなって生で使うより余計にめんどい。
しかも C# ではスマートポインタが使えないし。
142122:04/02/25 22:33
成功というのは、単に同プロセスに乗ったというだけで、これも
全然クラスにはアクセスできていません。結局これを調べるうちに
OLEオートメーションのドキュメントをMSDNで見つけ、これで普通に外部プロセスから操作できる!
と思って案の上壁にぶち当たっています。
エクスプローラのように、ListViewから TreeViewへファイルをドラッグ&ドロップ
して移動させるる処理を作りたいのですが、TreeViewへファイルをドラッグした際に
マウスポインタの通過する TreeViewのNodeを強調表示させたいのですが、うまくいき
ません。
TreeViewのMouseMoveイベントでできるかと思ったのですが、ドラッグ中はMouseMove
イベントが発生しません。
ドラッグ中にマウスポインタのある TreeViewのNodeを強調表示すにはどのような方法が
あるでしょうか?
>>143
こういうの?

The Code Project - TreeView Rearrange - C# Controls
http://www.codeproject.com/cs/miscctrl/TreeViewReArr.asp
>>143
DragOverイベントで

Point location = PointToClient(new Point(e.X, e.Y));
SelectedNode = GetNodeAt(location);

とか汁。
146143:04/02/26 00:58
>>144
>>145
ありがとん。
ためしてみます。
147122:04/02/26 07:46
アプローチを変えてみようと思います。
Marshal.GenerateProgIdForType Methodのようなものを使って、
ProgIDを生成/取得したいのですが、可能でしょうか?
148122:04/02/26 09:21
ああ、やっぱりROTに無いのでこの方法はだめだったか。
OpenFileDialogにコンボボックスを追加したいので、
リソースを作ったのですが、はめ方がわかりません。
教えてください。
俺には無理です
151デフォルトの名無しさん:04/02/26 19:26
Graphicsオブジェクトに角の丸い四角をFill(したあと輪郭をDraw)するには
どうするのが一番いいですか?
152名無しさん♯:04/02/26 19:52
Frequently Asked Questions for System.Web.Mail
http://www.systemwebmail.com/default.aspx

気合の入ったサイトです。
>>151
ひとまわり小さくFill
154デフォルトの名無しさん:04/02/27 00:17
フリーの.NETコンポーネントの集積場みたいなサイトはないですか?
>>154
windowsforms.com と asp.net
>>151
GraphicsPathクラスとDrawPath,FillPath
ダイアログにテンプレート埋められないなら他の方法でもなにかない?
全てを自作する。
159デフォルトの名無しさん:04/02/28 00:24
再帰呼び出しが出来ない
鬱だ死のう
16057:04/02/28 01:58
>>159
スレ違い。↓で逝ってこい
スペランカーごっこ
http://pc.2ch.net/test/read.cgi/prog/1063898569/l50
Convert.ToDateTime("2004/2/29");
で例外でちゃうのは仕様でつか?

おしえてエロい人
>>161
今試してみたけど例外は出なかったよ

DateTime dt = Convert.ToDateTime("2004/2/29");
Console.WriteLine(dt); // 2004/02/29 0:00:00
>>161
OSの日付とかいじってるのかな?
それだとカルチャに依存してしまうのでそれを考慮に入れるようにする。
164デフォルトの名無しさん:04/03/01 21:02
厳密に型指定されたDataTableの列のAutoIncrementプロパティををtrueに設定しました。
このままだとDataTableをClear()してもDBから読み込む度にどんどん
インクリメントによって割り当てられる値が大きくなる一方で困っています。
読み込む度に1から振り直させたいのですがどうすればいいでしょうか?
インクリメントが内部に保持している現在の値をクリアできるような
メソッド、方法等ありませんか?
列を一旦破棄して再構築することは避けたいと思っています。
よろしくお願いします。
165フサギコ♯:04/03/01 21:48
     ∧,,∧,,,,,, )      (´⌒(´
  ⊂ミ゚Д゚⊂,,,,,,,`つ≡≡(´⌒;;;≡≡≡
ズザーーーーーッ    (´⌒(´⌒;;

コモンダイアログの中でも
あまり使い道のなさそうな
FindダイアログとReplaceダイアログに
相当するコントロールがないのですが、
どのようにすれば実装することができるでしょうか?

メモ帳のクローンを作りたいので
自分でForm作るのではなく
コモンダイアログを活用したいと思いました.

よろしくお願いします。
>>165
VCLのソース読んで移植しとけ
AxWebBrowserのNavigateメソッドでWebページを表示した後、マウスでクリックせずに
すぐにキーボードでスクロールをしたいのですが、FocusメソッドやSelectメソッドでは
思うようにいきません。
どなたかご存じないですか?
168167:04/03/02 02:41
自己レスです。すみません、解決しました。
PanelにAxWebBrowserを貼り付けて使っていたのですが、
panel1.TabStop = false;
とすることでAxWebBrowserのフォーカスがきくようになりました。
169167:04/03/02 05:21
何度も申し訳ありません

>>168のはカンチガイだったようで、どうやらFocus()ですぐにキーボードスクロールできる
ページとできないページがあるようです。
あれこれいろいろと試したんですが、駄目でした。
マウスで一度領域内の何もないところをクリックするとスクロールできるようになるのです
が、イベントか何かを起こしてその状態にできないものでしょうか?
170デフォルトの名無しさん:04/03/02 10:43
印刷関係の質問です。
すみません。ページ設定ダイアログで設定した余白等はどうしたら反映されるのでしょうか?
以下のコードだけではダメなんです。(VS2003)
private void button1_Click(object sender, System.EventArgs e)
{
DialogResult result;
pageSetupDialog1.PageSettings=new System.Drawing.Printing.PageSettings();
result=pageSetupDialog1.ShowDialog();
if(result==DialogResult.OK)
printDocument1.Print();
}

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawString("VC#NET",new Font("Arial",16),Brushes.Black,e.MarginBounds.Left,e.MarginBounds.Top,new StringFormat());
e.HasMorePages=false;
}
>>170
>  private void button1_Click(object sender, System.EventArgs e)
>  {
>  DialogResult result;
>  pageSetupDialog1.PageSettings=new System.Drawing.Printing.PageSettings();
>  result=pageSetupDialog1.ShowDialog();
>  if(result==DialogResult.OK)
>  printDocument1.Print();
>  }

printDocument1とpageSetupDialog1が思いっきり無関係になってないか?
pageSetupDialog1.Document = printDocument1;
が必要だろ。

//因みにPageSetupDialog.Marginsプロパティにバグがあるらしい。
//ダイアログ表示する前に各パラメータを2.54倍する必要があるとか何とか。
172デフォルトの名無しさん:04/03/02 11:58
>>171
げ、ホントだ!
最近、疲れてるーーーー。
ありがとうございました。
173デフォルトの初心者:04/03/02 14:54
C#でWebアプリケーション作り始めたんだけど、別フレームの制御が良く分らん。

たとえば上下分割フレームで、上のフレームで検索条件を入力してボタンを押すと
下のフレームに検索結果が表示されるみたいなの。

RedirectとかTransfer使ってできる?
よくわかりません・・・
174デフォルトの名無しさん:04/03/02 18:49
C#でCGI作って、POSTメソッドで標準入力からデータを受け取るのに、
System.Console.ReadLine()
とやっています。
ところが、04WebServerだとうまく受け取れません。
C#の場合は、これじゃだめなのでしょうか?
175デフォルトの名無しさん:04/03/02 19:31
失礼します
めちゃくちゃ初心者なのですが。
Visual Studio .net でC#のプログラム作ったのですが、作成したアイコンが完成されたexeに反映されません。
プログラムを起動した左上の部分には表示されるのですが・・・
http://forums.belution.com/ja/csharp/000/000/31.shtml
177175:04/03/02 20:54
Win32APIのGetSystemMetrics(SM_CXEDGE)、GetSystemMetrics(SM_CYEDGE)に相当する
値は、どこから取得できるんだろう?
179デフォルトの名無しさん:04/03/03 00:28
ListViewにAとBという二つのItemが入っている状態で
Bを選択(反転)させたくないのですがどうすればいいでしょうか?
MouseDownやSelectedIndexChangedのイベントに
Aを選択するコードを書いたのですがBをクリックし、
イベントを抜けた後で強引にBが再度選択されてしまい困っています。
だいぶ悩んで「できないのでは?」と思ったのですが、
まさかそんなことは無いと思い書き込みました。
よろしくお願いします。
>>178
自己レス
System.Windows.Forms.SystemInformationにありました。失礼しました。
>>179
なぜBを選択させないために、Aを選択するコードを書いたのかが知りたい
>>169

参照の追加→.NETタブ→Microsoft.mshtml を追加

using mshtml; を追加

で、htmlページのロード時に

mshtml.HTMLDocument doc;

doc = (mshtml.HTMLDocument)axWebBrowser.Document;
doc.focus();

を追加。
>>182
自己レス

ロード時じゃダメだったので
DocumentCompleteイベントでやってくれ。
184167:04/03/03 14:57
>>182-183

ありがとうございます!できました。
DocumentCompleteイベントでは最初の1回しかできないようだったので、
NavigateComplete2イベントで処理したら毎回フォーカスが移ってキーボードスクロール
できるようになりました。
Java2にあるWeakHashMapってありませんかねえ
キャッシュのようなものがお手軽に作れそうなんですが
186179:04/03/03 20:01
>>181
Aが選択されていてBが選択されようとした時に
Bに選択を変更して良いのかどうかのエラーチェックが発動し、
エラーに引っかかった時にAの選択を維持する為です。
187デフォルトの名無しさん:04/03/03 21:37
richTextBox1とrichTextBox2があるとして、
richTextBox1にある文字列を
richTextBox2の文字列の最後に付け加えるのってどうやればいいんでしょうかね。
単に文字列だけならできたのですが、
フォントカラーとかの情報もそのまま付け加えるのがうまくできないのです。
誰か、やり方ご存じでしょうか?
apacheと連携できる?
189デフォルトの名無しさん:04/03/03 21:58
最小化したときにタスクトレイに入る
Windowsフォームを作ってます。

ShowinTaskBarをfalseにして

  private void Form1_Resize(object sender, System.EventArgs e)
  {
    if(this.WindowState == FormWindowState.Minimized)
    {
       notifyIcon1.Visible = true;
       this.Visible = false;
    }
  }

  private void notifyIcon1_Click(object sender, System.EventArgs e)
  {
    this.Visible = true;
    this.WindowState = FormWindowState.Normal;
    notifyIcon1.Visible = false;
  }

こんな感じで。
で、最大化でも最小化でもない状態(A)→最大化→最小化(タスクトレイ)
→タスクトレイクリック→最大化のフォーム表示→ウィンドウ右上の元の大きさに戻すボタン押す(B)
と(A)の大きさになって欲しいのにやたらちっこくなります。

デバッガで追ったところ(B)の後にResizeイベントが2回起きて
一回目は(A)のサイズなのに2回目でちっこいサイズに指定されているところまでわかりました。
なんで2回目のResizeイベントが起きるか、どうすれば回避できるか
教えてくださいませ。
>>188
Mono 入れればできる。
191188:04/03/03 23:53
>>190
マジ感謝
192デフォルトの名無しさん:04/03/04 02:35
float/Single/32bit/4byteをbyte[]に変換するにはどうしたらいいのかな?
>>192
BinaryWriter 使うか、unsafe コードでポインタ使う。
194デフォルトの名無しさん:04/03/04 05:24
byte1[] =byte1[]+byte2[]
というように2つのバイトアレイをStringの+のように接続したいのですが、
どうやるんですか?
195デフォルトの名無しさん:04/03/04 05:25
>>193
BitConverter.GetBytes()を使う。
196デフォルトの名無しさん:04/03/04 06:23
test
test
198デフォルトの名無しさん:04/03/04 08:15
private string SockRecv(Socket tmpS)
{
int bytes;
byte[] RecvBuff = new byte[128];
string RecvMsg = null;
Socket pop3 = tmpS;

bytes = pop3.Receive(RecvBuff,RecvBuff.Length,SocketFlags.None);
RecvMsg += Encoding.ASCII.GetString(RecvBuff,0,bytes);

while(bytes > 0)
{
bytes = pop3.Receive(RecvBuff,RecvBuff.Length,SocketFlags.None);
RecvMsg += Encoding.ASCII.GetString(RecvBuff,0,bytes);
}

return RecvMsg;
}


っていうクラスを作ったんだけどwhileで無限ループになって
しまうんだけど原因は何なんでしょうか?
>>198
public static string Accept(Socket soc) {
   int bytes;
   byte[] buffer = new byte[128];
   MemoryStream message = new MemoryStream();
   do {
      bytes = soc.Receive(buffer, buffer.Length, SocketFlags.None);
      message.Write(buffer, 0, bytes);
   } while (bytes > 0);
   return Encoding.ASCII.GetString(message.ToArray());
}

とテスト用メソッドを書いてみたが普通に動くな。
while内にブレークポイントなりConsole.WriteLine(bytes)なりを入れてみたらどうなる?

ちなみに直接buffer(そっちだとRecvBuffか)をGetStringするのは良くない。
一旦MemoryStreamに書き込んでってから。
200デフォルトの名無しさん:04/03/04 11:01
>199
返信ありがとう。

do
{
Console.WriteLine("test");
bytes = pop3.Receive(RecvBuff,RecvBuff.Length,SocketFlags.None);
Console.WriteLine(bytes);
RecvMsg.Write(RecvBuff,0,bytes);
}
while(bytes > 0);

のように書き直してmailサーバーに接続テストしてみたところ
やっぱりwhileの中のソケットから読み出すところで止まってしまう・・・

ループをさせないとサーバーからの応答がちゃんと取り出せるんだが・・・
201200:04/03/04 11:06
追記
無限ループというよりはソケットから読み出す部分で停止
してるようなきがする。
>>200
で、実行させたときに標準出力にはどう出力されてるの?
203200:04/03/04 11:17
test
58
test

と表示されました。
204デフォルトの名無しさん:04/03/04 11:25
でしばらくすると
0
+OK ArGoSoft Mail Server(ry

(ここでUSERコマンドを送信)
test
この直後に次のような例外が発生する。

'System.Net.Sockets.SocketException' のハンドルされていない例外が system.dll で発生しました。

追加情報 : 確立された接続がホスト コンピュータのソウトウェアによって中止されました。
205200:04/03/04 11:57
原因がわかりました
ソケットに読み出せるものが無いのに読み出そうとしていた
からのようでした。

do
{
bytes = pop3.Receive(RecvBuff,RecvBuff.Length,SocketFlags.None);
RecvMsg.Write(RecvBuff,0,bytes);
if(pop3.Available == 0) break;//この一行を足したら解決しました。
}
while(bytes > 0);
SDKでアセンブリ作ってるのですが、バージョン情報を入れようとして
AssemblyInfo.csに情報を書いても反映してくれません…

csc /t:library hoge.cs

でコンパイルしてます。ファイルは同じフォルダに入れてます。
OSはWin2000です。
>>206
csc /t:library hoge.cs AssemblyInfo.cs
208デフォルトの名無しさん:04/03/04 22:20
C#の優良解説orサンプル配布サイトを教えてクレイ
>>208
.NET Framework SDK
210デフォルトの名無しさん:04/03/04 22:31
初心者向けでおながいします。
たとえばこの中から選ぶとしたいかがでしょうか。
http://search.yahoo.co.jp/bin/search?p=C%23
>>210
たった12個だけなんだから全部見ろ
>>207
ありがとう!
213デフォルトの名無しさん:04/03/05 01:38
すいません、質問です。
たとえば、2004-01-01 10:10 といった感じの日時から、
20分戻した日時を取得するには、どうすればいいでしょうか?
自力で計算しないと駄目ですか?

よろしくおねがいします・・。
>>213
DataTime
TimeSpan
皆さん、C#のプログラム書くときエディタにソースを書いていきます?
それとも、Borlandのやつみたいに、部品を貼り付けていきます?
どっちがいいんですかね?
>>215
部品を貼り付けたときに自動的に書かれるコードを
手書きするメリットを考えてみれば分かる。
217デフォルトの名無しさん:04/03/05 16:04
static const char* table[] = {"yamada","sato","tanaka"};

C++で読み出し専用のテーブルを使うときは↑こういう感じにしてました。

string[] table = new string[] {"yamada","sato","tabaka"};

C#だと↑こう書いてますが、これだとそのつどnewが実行されてしまいます。
メンバ関数の外に出して、メンバ変数にすればstaticをつけられますが、
ローカルでしか使わない配列をメンバ関数の外に出すのは抵抗があります。
どう書けばよいでしょうか?
>>217
フィールド(メンバ変数)にして、コンストラクタの中で宣言するのが良いと思うけど
どういう状況でその手のテーブルを特定の関数のみで使うのか想像つかない。
参考までに教えてくれい
> 抵抗があります。

抵抗しているのはオマエだけだと思う。
220デフォルトの名無しさん:04/03/05 23:05
>>216
そっすか。何かペタペタ貼り付けるのって素人っぽいと思ったんですが、
皆さんそのやり方なんですね。
安心しました。
やっぱテマヒマかけたほうが玄人っぽいよな。
仕事ではやらんけど。
今までC++でConsoleアプリしかつくったこと無いけど、
Winアプリもつくろうと思って、手書きより楽だろうし
折角だからVC#買ってきた。

フォームにペタペタやるのってなんか不思議な感じだ。初体験だよマターク
デザインとコードの分離を進めたいけど、やりにくいな。慣れの問題だろうけど。
〜略〜 myTextBox = hogehogeDefault; みたいにして初期化したいけど
これやると プロパティから Textのところ弄れなく成っちゃうんだよな・・・
223デフォルトの名無しさん:04/03/06 02:07
>>222
禿同
Observerパターンを自分でやるには面倒
やっぱりVC++6 & Doc/Viewこれ最強
ま ち が い な い !
224デフォルトの名無しさん:04/03/06 03:35

Visual Studio.NET ってC#で作られてるのかな?
VC++6と比べると、かなーり重いんだが。

226デフォルトの名無しさん:04/03/06 04:36
C#でhtmlをparseしたいです。
なんかいいparserかsampleないでしょうか?

具体的には、
ttp://quote.yahoo.co.jp/q?s=yahoo&d=t&k=c3&h=on&z=m
上記のようなページのテーブル部分の数字だけ抜き取りたいです。

ご指導お願いいたします。
>>221
手間暇かけるなら重要な所にね。
自動化できる部分に手間暇かけてもしょうがないから。
>>226
.NET Frameworkについてる。
229デフォルトの名無しさん:04/03/06 08:03
TreeViewで、KeyDownイベントをハンドリングしてキー毎に機能を付けているのですが、
キーを押すと警告音が鳴ってしまいます。
警告音が鳴ってもKeyDownイベント発生〜処理はできていますが…。
それでも気になるので、KeyDownイベントで拾っているキーが押されたときは警告音を
鳴らさないようにする方法はないでしょうか?
e.Handled とかなかったっけ?
231229:04/03/06 10:28
>>230
KeyDownイベント処理中にe.Handledをtrueやfalseにして試してみましたが
やはり警告音が鳴ってしまうようです。
ファンクションキーは押しても鳴らないんですが、Enterキーや文字キーは鳴ります。
e.Handledの使い方が間違っているんでしょうか…。
>>231
KeyPressならHandledプロパティでビープ音を抑制できるらしい。
……でもKeyPressって使いにくいんだよな。
>215
昔Javaのソースを見て、
Delphiならポトペタで終わる部分を一々手書きしてるので
嫌になったことがあるよ。
C#はJavaとDelphiのいいとこ取りさw

234229:04/03/06 12:08
>>232
KeyPress内でe.Handledをtrueにして(するだけ)、実際のキーイベント処理はKeyDown内でのままだと
特に手間もなく、警告音を鳴らなくすることができました。
これだと全キーで警告音が鳴らなくなるので、KeyPress内で入力キー判別して…とやってたら
結局KeyDownじゃなくてKeyPressで全処理すればいいかなということに気づいた次第(´・ω・`)

なんにしても助かりました。ありがとうです。
ボタンを動的に生成するにはどうしたらいいですか。
「マインスイーパ」みたいに大量のボタンを生成する時に
いちいちコピペを繰り返すわけにもいかないし、
ボタンをクリックした時の動作も大量に書くのも無理ですし
>>235
デザイナで作らずにコードで書けばいいじゃんか
System.Drawing.Bitmap bitmap1 = new System.Drawing.Bitmap(<元ファイル名.jpg>);
bitmap1.Save(<新ファイル名.jpg>, System.Drawing.Imaging.ImageFormat.Jpeg);

とすると、<新ファイル名.jpg>は<元ファイル名.jpg>と
はっきり目で分かるくらい違いが出てしまいます。
JPEGだと品質によって変わるからかと思って、BMPにしても(上のjpgとJpegはBmpに)
目では分からない程度ですがバイナリに違いが出てしまいます。
(途中でbitmap1に書き込みをしたいので単なるコピーではなく)
元のファイルと同じ品質で新しいファイルを作るにはどうすればいいでしょうか?
同一のJPEGファイルをPhotoshopでBitmapに書き出したのと
MS Paint で書き出したのとで各ピクセルを比較すると微妙に色が違ってる
JPEGのデコーダによって違いがあるからではないか?
ちなみにjpegの保存時の品質指定は
ttp://dobon.net/vb/dotnet/graphics/encoderparameters.html
を参考に。
>>238-239
ありがとうです。
その方法で品質高めにすればいいかなと試してみたけど色合いが変わってしまいます。
それを調整するとしてもASP.NETなのでブラウザ、OSで違いが出そうなので
適当に妥協することにします。
>>240
追記
色合いが変わってしまうのは違うフォーマットでした。
JPEGで元画像と同じくらいのサイズになる品質85程度だと違いが分からない。
>233
JBuilderとか使ったことないんか?
まぁいいけどね。Javaスレじゃないんだし。
文字コードEUC-JPのMySQLからODBCでデータをSELECTし、
odbcDataAdapter1.Fill(dataSet11.meibo);
のようにしてデータグリッドに表示させようと思うのですが、
どうやって文字コードを変換すればよいのでしょうか??
> 文字コードEUC-JPのMySQL

この時点でもうダメポと思われ
なぜですか?
EUC-JPがこわいのでしょう ;-)
MySQLってUNICODE対応してないんだっけ
248名無しさん♯:04/03/07 20:32
ttp://blogs.msdn.com/csharpfaq

C# Teamのweblogです。期待しましょ。
249デフォルトの名無しさん:04/03/08 15:41
ネームスペース内共通の定数ってどこに記述するのが良いんですかね?
普通にstaticでクラスに定義しておけば良いんですかね?
皆さんはどうされてますか?
250デフォルトの名無しさん:04/03/08 19:18
>>249
その方法でなにか問題でも?
251デフォルトの名無しさん:04/03/08 19:36
>>250
ださい
252デフォルトの名無しさん:04/03/08 19:39
ださくてなにか問題でも?
>>249
整数であればenumを使うこともある。
モジュール内でどの程度広い役割を持っているかにもよるだろうけど
254デフォルトの名無しさん:04/03/08 23:48
>>252
そりゃー、コードはエレガントじゃないとさ
それでメシ食ってるならなおさら
>>254
つーか別にださくないような?
ネームスペース内に限定可能な分、defineよりエレガントじゃないか。
正規表現を使わない検索できませんか?
オプションでIgnoreCaseとRightToLeft が使えると尚いいです。
257デフォルトの名無しさん:04/03/09 00:38
コードにエレガントさなんて不要と思いますが・・・
いかに早く動作するかが問題でしょ
>>257
機械語でな。
全部MSILでプログラミング?



……お客さん、チャレンジャーですね。
260デフォルトの名無しさん:04/03/09 01:19
もういい加減ポトペタでコード書くの止めてくれませんか?
261Whidbeyネタ:04/03/09 01:41
>>260
> もういい加減ポトペタでコード書くの止めてくれませんか?
コードスニペットとかインテリタスクとかは邪道ですか、そうですか。
ポトペタってなに?
263デフォルトの名無しさん:04/03/09 14:41
private string SockRecv(Socket tmpS)
{
int bytes;
byte[] RecvBuff = new byte[256];
MemoryStream RecvMsg = new MemoryStream();
Socket pop3 = tmpS;

do
{
bytes = pop3.Receive(RecvBuff,RecvBuff.Length,SocketFlags.None);
RecvMsg.Write(RecvBuff,0,bytes);
}
while(pop3.Available != 0);

return Encoding.ASCII.GetString(RecvMsg.ToArray());
}
をつかって
264デフォルトの名無しさん:04/03/09 14:41
//RETRコマンドの送信
for(int count = 1; count <= mailCount; count++)
{
SendComd = "RETR " + count + "\r\n";
Console.WriteLine(SendComd);
SendBuff = Encoding.ASCII.GetBytes(SendComd);
pop3.Send(SendBuff,SendBuff.Length,SocketFlags.None);
RecvComd = SockRecv(pop3);
Console.WriteLine(RecvComd);
}

//QUITコマンドの送信
SendComd = "QUIT\r\n";
SendBuff = Encoding.ASCII.GetBytes(SendComd);
pop3.Send(SendBuff,SendBuff.Length,SocketFlags.None);
RecvComd = SockRecv(pop3);
Console.WriteLine(RecvComd);

pop3.Shutdown(SocketShutdown.Both);
pop3.Close();

の操作をするとRETRコマンドの途中で止まって
QUITコマンドまで逝けないのはなぜなんでしょう?
原因が全くわかりません・・・・
>>264
まずはブレークポイントなりで具体的にどこで止まってるのかを確認しないと。
266デフォルトの名無しさん:04/03/09 15:30
>>249
メインになる部分で、値を設定して、別クラスにはプロパティでくれてやってる。
267デフォルトの名無しさん:04/03/09 15:30
for(int count = 1; count <= mailCount; count++)
{
SendComd = "RETR " + count + "\r\n";
Console.WriteLine(SendComd);
SendBuff = Encoding.ASCII.GetBytes(SendComd);
pop3.Send(SendBuff,SendBuff.Length,SocketFlags.None);
RecvComd = SockRecv(pop3);
Console.WriteLine(RecvComd); <-ここにブレイクポイント
}

して実行したところ

RETR 1

+OK 406 octets

RETR 2

(メール2通分の内容)

が表示されてここでプログラムが
終わってまいQUITコマンドまで逝けなかった。
268デフォルトの名無しさん:04/03/09 15:32
また気になったこととして
ブレイクポイントを置かないで実行すると
RETR 1

+OK 406 octets

RETR 2

(メール1通分の内容)

となって挙動が変るのですがなんでだろう・・・
ステップインで一行ずつな?
何が表示されたかじゃなくてコードのどこで止まってるのかが重要なんだぞと。
それともなにか、いきなり終了するのか?
270デフォルトの名無しさん:04/03/09 16:11
ステップインで一行ずつ実行した場合は全ての結果が表示
されるんだけどブレイクポイントを置かないで実行すると
一回目のwhileループが終わった後のConsole.WriteLine(RecvComd);
の結果までしか表示されない・・・
というか挙動が違うような気がする・・・
もっと前の所にブレークポイント置いてみる。
>>262
D&D
C#を触り初めたばかりなんですが、
C# = (VB + JAVA + Delphi + C++) / 4 + α
という認識でよろしいですか?
>>262
部品をフォームに「ポト」っと落とすと「ペタ」っと貼りつく開発環境。
>>273
混合比率が1:1:1:1じゃない気もするけどおおむねその通り。
でもMSの後押しが弱いような気がする
277273:04/03/10 01:43
>>275
確かにその通りで、最初は重み付き平均で表そうと思ったのですが
面倒臭くなったのでやめました。

>>276
MSの後押しは弱いのでしょうか?MSはLonghornを筆頭とする次期
Windowsの開発言語のStandardとすることを目標としているように
私は感じます。Win32APIに至ってはエミュレータ上で動作するように
なり、VirtualPC状態になると聞いたので、腹をくくってC#を始めたん
ですけどね…
勉強始めて1週間です。
デリゲートが理解できません。
ダメですか?
>>278
今までに他のプログラミング言語を使った経験は?
それが結構あってデリゲートが分からないならダメです。
Perl,PHP,ActionScriptです。
>>280
それがダメ。
じゃあどうしろと?
Lisp でもやりなさい
やだ
>>278
必要になるまで放っておけばいいよ。
いつ必要になりますか?
287285:04/03/10 09:18
>>286
とりあえずは、自作クラスにイベントを用意したくなったら必要になるね。
まずは、フレームワークのまねで実装することから始めて、徐々に理解していけば
十分だと思うけど。
理解しなくても使うことはできるから。
288デフォルトの名無しさん:04/03/10 09:21
多分、当分必要にならないと思うよ。

それはそれとして、自分も質問があるっす。

キーボードイベントの
キーコードとキーデータって何が違うんですかね?
どっちも、同じENUMのKeys値が返ってくるだけなんですけど。
まあ、別に困ることは無いので良いのですが。
289デフォルトの名無しさん:04/03/10 09:24
どうやら、同じ1byteの右半分と左半分の違いのようなんですが、
シフトキーやコントロールキーなどの特殊なキーの判別に
ビット演算をつかって判別するのに利用するみたいですが、
別にそんなことしなくても、
普通にシフトキーとかはkeys値自体で分かるのですが、、、。
290デフォルトの名無しさん:04/03/10 09:32
あ、分かったから良いです。
どうやら、同時押しの時に、
他の文字と一緒に押されたかの判別に使うということが分かりました。
291デフォルトの名無しさん:04/03/10 09:33
自分のプログラムの自作ルーチンで
アップ、ダウンイベントで処理するところを、
事前に判断して処理してフラグを立ててくれてるってことのようですね。
292デフォルトの名無しさん:04/03/10 19:30
Windows画像とfaxビューワーに独自形式の画像を
表示させる事は可能でしょうか?
出来ればこれをC#でやりたいと思っています。
資料を探してみたのですが、見つけることが出来ませんでした・・・
どなたかアドバイスをお願いいたします。
>>292
独自形式からテンポラリにbmpかjpgで保存して、それを開くってのじゃダメ?
294292:04/03/10 21:52
独自形式というのがデジカメの生ファイルなのです。
それをプログラム的にbmpやjpeg形式に変換することは
当然可能なのですが、できればそのままの形でJpeg等と
同等の扱いで鑑賞したいのです。
IMEの変換機能とかってC#から利用できるんでしょうか?
できるなら郵便番号変換に使いたい・・・
296デフォルトの名無しさん:04/03/10 22:36
どう言う場面でどう使うのさ。
textboxをつかえば全然普通に日本語入力は受け付けてくれるよ。
297デフォルトの名無しさん:04/03/10 23:02
答え:
APIを使う。
298デフォルトの名無しさん:04/03/10 23:17
TabPageが切り替わったときに処理する方法教えてください。
今から本買いにいってきますけど。
帰ってきたら書いてあったらいいなぁ。
よろしくお願いします。
>>296
TextBox1に七桁の数字を打ったら、
TextBox2に住所が入るっていう具合にしたいんです。
>292
いまどきjpeg以外の独自形式で保存するデジカメなんてあるの?
とりあえず独自形式が何なのかハッキリさせないとアドバイスも
貰えないのではないかと。
>>299
Win32 API
Webサービス
データ落としてきてDBにしてそこから取得
http://www.postan.jp/postanws.htm

インターネットに接続しているならWebサービスを利用するって
方法もあります。有料のようですが...
あんまりいい方法じゃないけど、
インターネットで郵政公社の検索を使うとか
http://ukamen.hp.infoseek.co.jp/Programming1/ZipCode/
XMLでやってくれれば弁理なんだg
>>299
自前で郵便番号→住所なデータを用意して
TextBox1からフォーカスが外れたら、TextBox2に書き込むってのが簡単そうだが。

郵便番号→住所のデータはそこいらに転がってるだろうから、
それからソースに取り込むなり、テキストにして起動時に読み込むなりすればいいし。
305デフォルトの名無しさん:04/03/11 11:09
>> 300
いわゆるRAWというやつなのですが、Jpegのような圧縮形式では
なくて、CCD情報をそのまま持っている形式です。
最近のカメラはかなり出力対応しているのですが、カメラ毎にフォー
マットが違います。

別な方法としては、Windows画像とFaxビューワーをSUSIEプラグイン
対応にするといったことをしたいのです。

306デフォルトの名無しさん:04/03/11 13:28
DataGridコントロールの質問なのですが、列ごとに背景色の設定をしたい場合、どのようにすればよいのでしょう?
すみません。お願いします。
307デフォルトの名無しさん:04/03/11 13:33
>>306
オーナドロー
308デフォルトの名無しさん:04/03/11 16:02
>>307
ありがとうございます。
DataGridColumnStyle.Paintメソッドをオーバーライドして、
列ごとに背景色を変えました。
ご回答の内容と合ってます??
ListViewがさくっとオーナードローできないなんて……_| ̄|○
310デフォルトの名無しさん:04/03/11 19:07
オーナードローって何?
さらにレベル下げてすまん。
オーナーがねドローすんの
>>309
Longhornでは可能ぽい
ttp://longhorn.msdn.microsoft.com/lhsdk/ref/ns/system.windows.forms/c/listview/e/drawitem.aspx

>>310
ユーザー独自描画みたいなもんだ。
デフォルトで描画されるコントロールとは違った外観をつくったりできる。
>>312
>デフォルトで描画されるコントロールとは違った外観をつくったりできる。

しかしながらその統一感のないインターフェイスに、PCビギナーは
戸惑ってソフトそのものを使えなくなったりする罠。
GetDeviceCaps(.hdc, PHYSICALOFFSETX)
みたいなことは、まだAPI使わないといけないんでしょうか?

「PrintPageEventArgs」あたりを中心に代替仕様を探していますが、
見つかりません。
これだけいろいろ揃ってるのにこれがないとは思えないんですが...
Xamlon - XAML Application Development for Today s .NET Platforms
http://www.xamlon.com/

Using Windows Forms Markup (WFML)
http://windowsforms.net/articles/wfml.aspx

MyXAML
http://www.myxaml.com/

もどき3つ
既存のコントロール(TextBoxとか)から派生させたクラスのdllを作成して、
VSのツールボックスに追加しようとしたら、
「○○.dllにはツールボックスに含めるコンポーネントは何もありません」
って怒られちゃった。

やっぱり、デザイナで使おうとすると何か特別な作り方してないと駄目なのかな。
既存のコントロール継承しているから、そこらへんもオッケーかなと甘いこと考えてたんだけど。
>>316
オッケーのはずだが
318デフォルトの名無しさん:04/03/12 18:11
C#2003Standardを使ってるのですが、
キーワード検索してヘルプファイルを読もうとすると
毎回CDを挿入しろとかなんとかいうダイアログが出てきてしまいます。
これはセットアップし忘れた部分があるということでしょうか?
全てインストールした筈なんですけどね・・・
>>318
MSDNライブラリをセットアップしてないだけだろ
>>318
Officeでもある有名な問題
>>313
結局、余計なことしないでデフォ外観で作ったほうが早いし、
使う側にも戸惑いがないんだよね。('A`)

もしくはぜーんぶ独自描画で統一するか。
MDI 親フォームから、子フォームの公開されているメソッドを
スレッドで実行したいと思い、

m_Thread = new Thread(new ThreadStart(childForm.threadMethod()));
m_Thread.Start() ;

のように、親フォームに記述したのですが、

スレッド '<名前がありません>' (0xa00) はコード 0 (0x0) で終了しました。

のようにスレッドを開始できません。親フォームで子フォームに
書かれたメソッドをスレッドで実行させる事はできないのでしょうか?

もし可能であるなら方法をアドバイスして頂けるとうれしいです。
>>320 直し方を何卒
324デフォルトの名無しさん:04/03/12 20:49
WebProg板とマルチポストです、すみません。

現在、ASP.NETからC#で書かれたコンソールアプリケーションを呼び出し、かつ二重起動を防止する、というアプリケーションを書いていますが、うまく動きません。呼び出すほうは
Process myProcess = new Process();
myProcess.StartInfo.FileName = "c:\exe\moner.exe";
myProcess.Start();
とやってうまく動いているのですが、これが動作しているかを判定することが出来ないのです。
(1)Process.GetProcessesByNameを使う
(2)Mutexを使う
の二通りを試しているのですが、(1)はどうやらAdminでないと動きません。かつ、Adminでも"moner"/"moner.exe"でプロセス名を検索できないようです。
(2)もやはりadmin権限が必要ですが、とりあえずは動いています。

不思議なのは、(2)で、上記のコードでASP.NETから起動したときだけ動かない、ということです。
起動コードを除いたASPXではちゃんとMutexを操作できますし、コンソールから起動したmoner.exeもやはりちゃんと動作します。
動かないのはASPXから上記のコードで呼び出したときだけなのです。

adminでなら動くということで、まず間違いなく権限/セキュリティの問題だとは思いますが、どこをいじればいいのかわかりません。
ユーザー偽装を最後の手段として、もしなにかご存知のことがありましたらアドバイスをいただければ幸いです。よろしくお願いいたします。
>>323
なにそつキタ━━━━━━(゚∀゚)━━━━━━ !!
326324:04/03/12 20:52
>>324
っと、追伸です。
(2)が「動かない」ってのは、ASP.NETを動かしてる「ASPNET」ユーザがUserグループの権限しか持っていない場合です。
上にも書いたとおり、Adminグループ権限を与えればこちらの意図したとおりに動いています
327324:04/03/12 21:43
>>324
追伸その2.

……ユーザー偽装も×でした(T_T)
>>324
ミューテックス生成/操作時にどんな例外がでてるのか調べるのが先決だと思う。
329324:04/03/12 23:09
>>328
Just-In-Timeデバッガが動かないのでわかりません(T_T)

ということで多少事態が整理できました。Mutexのせい「だけ」ではなさそうです。WebProg板にも書きましたがちょっと整理します。

(1)Process.Startで起動は出来てます。
(2)中身も動いてます。引数のチェックや起動メッセージ表示(どこにも表示されないけど(^^;))は動いてます。
(3)DB接続もしくはMutexの生成で異常終了します。
(4)どーして落ちてるか、Just-In-Timeデバッガが動かないのでわかりません(T_T)

というところまでは整理できました。Admin権限で動く以上、セキュリティの問題だということはわかっているのですが……(T_T)
330デフォルトの名無しさん:04/03/12 23:22
>>321
でも、標準コントロールって、ダサいんだよね。
当然出来るだろってことができないし・・・・。あ、俺もだ。。
Crypto Service Provider(CSP) がuser権限だと動かないんだよね・・・。
この前それではまった。
>>280
ワロタ
ネタ?
333デフォルトの名無しさん:04/03/13 00:48
>>331user権限だと動かないんだよね
権限の問題ではないと思われ
334名無しさん♯:04/03/13 10:30
面白かったのでリンク。

Performance Quiz
ttp://blogs.msdn.com/ricom/archive/2004/03/12/88715.aspx
>>329
デバッガがアタッチできなくても、catchしてログに書き込んでみればいいじゃん。
336324:04/03/14 13:44
>>335
そのとおりです。ということで、とりあえず動くようにはなりました。

http://pc2.2ch.net/test/read.cgi/php/1040698263/554

を見ていただければ幸いです。……もっとも、まだ根本解決はしていませんが(T_T)
>>336
ログ取ったんなら例外の詳細くらい書けばいいのに。

俺はWS2003使ってるから同一かどうか自信がないが、
ローカルセキュリティポリシーに「グローバルオブジェクトの作成」って項目がある。
ここにASPNETを加えてやれば、動く"かも"しれない。あんまり自信はないけどな。
338デフォルトの名無しさん:04/03/15 11:12
C#Builderを入手しC#の学習を始めて2週間です。ヘルプを読むとCopyメソッドでDataTableのコピーが出来ると
書いてあるのですが、期待通りの結果になりません。具体的には下記のようなプログラムです。

WinFormにdataTable1(TableNameはTable1、列数は5列)とdataTable2(TableNameはTable2、列数は5列)
を持つdataSet1を配置し、さらにdataGrid1,dataGrid2を配置して、DataSourceプロパティをdataSet1とし、
DataMemberプロパティをdataGrid1はTable1、dataGrid2はTable2に設定します。

その後、このようなコードを書きました。

  private void WinForm_Load(object sender, System.EventArgs e)
  {
    WinForm1 f1 = new WinForm1();

    DataRow workRow;
    workRow = dataTable1.NewRow();

    for (int i=0;i<=4;i++)
    {
        workRow[i]="TEST" + i.ToString();
    }
    dataTable1.Rows.Add(workRow);

    dataTable2 = this.dataTable1.Copy();
  }

実行すると、dataGrid1には"TEST0","TEST1","TEST2","TEST3","TEST4"と表示されるのですが、
dataGrid2には何も表示されません。

dataTable2にdataTable1の内容を丸ごとコピーしたいのですが、Copyメソッドでコピー出来てないみたいなのです。
どうすればdataTable2にdataTable1の内容をコピー出来るのでしょうか?
>>338
配列の次元が同じなら
dataTabel2 = dataTabel1;
でいけるはずだけど
>>339
アドバイスどうもありがとう御座います。実は挙動をもっと詳しく知るために、
ステップ実行で色々と監視していたら、重大な事に気付きました。

dataTable2 =dataTable1.Copy();

を実行すると、dataTable2.TableNameが"Table1"になりますね。だもんで、
dataGrid2.DataMemberをTable2に設定していても表示される筈がない訳で…

よく考えれば"コピー"だからTableNameもコピーされるんですが、気付いてません
でした。すみません。

ただ、不思議なことにデザイン時にdataGrid2.DataSourceをdataTable2に設定
しても表示されないのです。コード上で

    dataGrid2.SetDataBinding(dataTable2,"");

とすれば、表示されたのですが、なぜデザイン時にプロパティに設定しているにも
拘わらず、dataGrid2には表示されないのでしょう? dataGrid1は、SetDataBinding
しなくても表示しているだけに不思議でなりません。

どうしてなのでしょう?
341324:04/03/15 14:49
>>337
……それも×でした(T_T) ちなみに例外の詳細はhttp://pc2.2ch.net/test/read.cgi/php/1040698263/553にあります
が、またひとつ進展がありました。C#スレの方で何かご存知の方がいらっしゃればお答えいただければ幸いです。
以下、ダブルポストで申し訳ありませんが、同じ内容を書きます。

----------

558 名前:520 投稿日:04/03/15 14:45 ID:oIwZDs+7 oIwZDs+7
557
また少し状況が見えてきました。監査を実行しようとして、*.batを*.exeに書き換えたところ、今度は動いてしまったのです。
調べてみると、実行ディレクトリの指定で動く模様です。

……ということはもしかして、Process.Satrtで起動される(そして実行ディレクトリを指定しなかった)場合、*.aspxのありかとも*.exeのありかともまったく何の縁もゆかりもない場所で実行され、そのために権限エラーで落ちていた、ということなのでしょうか?
検証しようと思ってApplicationクラスで実行パスを表示させようとしたのですが、このクラス、System.Windowsに属しています(T_T)
コンソールアプリケーションで実行パスを調べる方法はないでしょうか?

----------

以上、よろしくお願いいたします。
342デフォルトの名無しさん:04/03/15 14:50
>>341
System.AppDomain.Current.BaseDirectory。
\WINDOWS\Microsoft.NET\Framework\v1.1.4322 になってる悪寒。
C#はじめたいんだけど何のソフトがおすすめ?
>>344
開発に必要なソフトのことを言っているのか
どのようなソフトを作るのがいいのかが分からんな
>>344
.NET Framework SDK
347デフォルトの名無しさん:04/03/15 22:08
質問です。
ArrayListを使うときに、その中に入っているobjectの型を保障したいのですが、
上手いやり方ありませんでしょうか?

カスタム属性を使うというのも考えたのですが、それ以外のやり方があれば教えてください。
>>347
ArrayListの派生を作るだけでは?
349347:04/03/15 22:14
…ごめんなさい。
全然考えが及びませんでした。
thx a lot.
C#の話題から外れるっぽいけど、
SQL Serverに接続するためのパスワードなんかは、コード中に書いとくと、
分かる人が中間言語を覗いたら丸見えになっちゃいますよね?

それを防ぎたいときの常套手段ってどんなのなんでしょうか?

パスワード書いたテキストを暗号化したものをリソースとして含ませておいて、
実行時にそれを復号化して使うとかでしょうかね?
パスワードのハッシュを埋め込むとか
>>350
ユーザに入力させる…じゃダメなんだろな
気休め程度だが適当に暗号化した上でレジストリに置いとくとか?
353350:04/03/15 23:41
レス、さんくすです。

>>351
うーん・・・この場合、ハッシュでは解決しないような・・・

>>352
>ユーザに入力させる…じゃダメなんだろな

はいw
「マンドクセー」の一言で拒絶されるシーンが目に浮かぶ・・・
もう、マンドクセー>>>>>セキュリティ意識、の世界なので・・・
パス書いた紙をディスプレイに張り紙されたら目も当てられないしw

ふーむ、レジストリという手もあるか。
>>353
パスワードを記憶するオプションを付ける。

使う使わないはユーザーの自由。
但しそれを使った場合、その責任は自分で取ってよね♥
>>354
利用者全員にDB接続のパスワードを配るの?

>>350
既存のDBは、接続に関してはそのへん考慮が足りないよねえ。
>>355
>既存のDBは、接続に関してはそのへん考慮が足りないよねえ。

いや、お前の考慮が足りないだけだと思う。
一体何のためにパスワードがあるんだ?
>>350
WindowsのユーザID・パスワードで接続させるとか、
("統合セキュリティ"で.NET Framework SDKドキュメントを検索)
外部ファイルにパスワードを保存して、NTFSのアクセス権で保護するとか。
358名無しさん♯:04/03/16 07:16
Genericsのガイドラインキタヨー(゚∀゚)
ttp://blogs.msdn.com/kcwalina/archive/2004/03/15/89860.aspx
イツ ツカエルノ- チンチンチンチン
使いやすいタブコントロールはないかと探していたら
ttp://www.codeproject.com/cs/miscctrl/magictabcontrol.asp#xx706952xx
を見つけました。

ただ、デザイン時にタブページの内容をきりかえられないので、
画面設計が面倒かなと思っています。
(タブページが3ページあった時、1ページ目にはツールボックスから
コントロールを DnD できるが、2、3ページにできない)

Web の内容を読むとデザイン時にもできるような事が書いてあるように
読めるのですが、どなたかこのコントロールを使って、
デザイン時にタブページの内容を編集できている方は
いらっしゃいますか? もしいらっしゃればどうやればいいのか
教えてくださいませんか?
テキストボックスへの入力時に
99,999,999(通貨) とか 9999/99/99(日付) といった書式に
強制的にしたいのですが、その場合、textChanged等で
入力された値を毎回操作する以外の方法はあるのでしょうか?
>>318 ではないがその問題を今まで何度も経験したがまた起きた。
Officeなし環境でPowerPoint Viewerがある状態では何の問題もなし。
PowerPoint Viewerをアンインストしたらダイアログの嵐。
VSインストは時間かかりそうなのでPowerPoint Viewerを入れると問題が消えた。
別製品Office(というかインストーラが問題)に依存しまくるのはまったくわけわかんね。
LinkLabel を継承してカスタムコントールを作ろうとしています。

表示されるテキスト位置の X を少しだけずらしたいので、
そのように、DrawString で文字列を描画しました。

しかし、base.OnPaint (e); すると、自前で出力した文字列に
重なって、元の LinkLabel が出力している文字列がかぶります。

なので、base.OnPaint (e); をコメントアウトすると、今度は
自前で OnPaint に書いた内容しか描画されなくなってしまいます
(あたりまえだと思いますが)

ここで、テキストだけを自前で描画、それ以外を 元の LinkLabel で
描画のような都合のよい事はできないのでしょうか?

何かいい方法がありましたら教えてください。
変数名に _ (アンダースコア) をつけているプログラムをよくみます。
(C# に限った事ではないと思いますが)

この _ の付け方ですが、インスタンス変数の場合に付けている場合と、
インスタンス変数ではない場合に付けているケースを見るのですが、
一般的には _ ではじまる変数にはどのような意味を持たせているので
しょうか?
>>364
普通アンダーバーから始まる名前なんて使わないんだけど、どこに行けばよく見られるの?
C#の流儀ではそもそもアンダーバー自体使わないし。

C++では、ときどき private なメンバ変数の名前を _ からはじめる人がいる。
C++やってた人に良く見られる表現だね。
プロパティ作るのに漏れも使う。
@ITのC#入門では_つきの変数は一回だけでてきたな。
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/csabc2_018/cs2_018_03.html#cs1808
これのprivate string _fileName;ってところ。
一言。
C++において、(基本的に)_で始まる名前は処理系に予約されている
為に、使ってはならない。
以上スレ違い。
>>366
漏れもそうだけど、framework自体が内部で、Itemとitemとか_itemとかやってるのデバッガなら丸見えだよな。
だから、おまえらもやれ
Javaから来た人・・・何もつけない
Delphiから来た人・・・「F」をつける
VisualC++から来た人・・・「m_」をつける
オレは「_」をつけることにしてるが。
>>368
それが通っちゃうC++処理系多いからなぁ。
Effective C++ かなんかで作者が嘆いてた気が。
↑この本の作者の流儀では、
privateメンバ変数には先頭じゃなくて末尾に _ を付ける。

>>370
俺は何も付けない。
その代わり、メンバを参照するときは必ず this. を付ける。
>>368
_hogeに拒絶反応を起こしてhoge_にしますた
私はVisualC++から入ってるのでメンバ変数はprefixはm_ですね。
最近は面倒であんまり付けなかったりしますが。

ところでこの話題はこっちに移動した方がより適切な気がしますけどどうでしょう?
コーディング規約 第2条
http://pc2.2ch.net/test/read.cgi/tech/1068752664/

あるいはこっちかな?
★★★コーディングマナー★★★
http://pc2.2ch.net/test/read.cgi/tech/1056508692/
_とかm_とか付けるぐらいならthis->付けるのが定石。何のためのthisだよ。
間違えた。this->じゃなくてthis.だったな。
>>364
>>374-375

.NET Framework ドキュメントの「名前付けのガイドライン/大文字と小文字の区別」を参照。

> 名前の混乱を避け、言語間の相互運用性を保証するために
> (中略)
> 同じコンテキストにおいて、大文字と小文字だけが異なる 2 つの名前を区別することはできません。

VB.NET のような、識別子の大文字と小文字を区別しない言語に合わせるため、
たとえ C# 言語的には問題がなくても、クラスの公開メンバ(protected を含む)については、
大文字小文字の区別だけで識別子を分けてはならない、という規則がある。

アセンブリに System.CLSCompliant 属性を true で付ける(CLS 準拠にする)と、
この規則に従っていない部分はコンパイルエラー(CS3005)になる。

このため、特にプロパティの実装では、あえてメンバ変数に m_ や _ を付けるのが慣習になっている模様。
質問します。
大きいBitmapから小さい部分BitmapをX、Y、Width、Heightを指定してコピーし、
その部分Bitmapを、GraphicsにX、Yを指定して貼り付けたいと思っています。
DrawImageで部分ビットマップを入れるのが良さそうだと思っていますが、
部分ビットマップを取得する方法がわかりません。
もしくは転送メソッドでも構いません。
どうやりますか?
>>377
DrawImageに
指定した位置に元のサイズで、指定した Image オブジェクトの指定した部分を描画します。
public void DrawImage(Image, int, int, Rectangle, GraphicsUnit);

って正に丁度のオーバーロードがある。
ありがとうございました
380デフォルトの名無しさん:04/03/17 19:35
現在アプリで使用してるフォームのコレクションを取得する方法があったら教えて欲しいです。
VCLのFormsみたいのがありそうですが、見つけられませんでした。
フォームに表示されている内容をそのまま印刷したいのですが、
いまいち方法がわかりません。

できれば、一旦プレビュー画面を介したいと思っています。

どこか参考になるサイトか、ポインタで結構でもですので
方法があれば教えていただけるとうれしいです。
アルファブレンディングを自動でやってくれるクラスはないかね?
383デフォルトの名無しさん:04/03/17 22:09
なぜにdoc/viewを止めちゃったのかな?>microsoftさん
自力でdoc/viewを実装するの面倒で仕方ないんだけど・・・
結局VC++に落ち着きそうな気がしてきた
>>380
自分でフォームの一覧管理するか、
API使うってのは?

>>381
なぜGoogleで
印刷
プレビュー
C#
てなキーワードで検索しようとせぬ。
385380:04/03/18 18:29
>>384
そうですね。見つからないのでAPIで列挙しておきます。
386デフォルトの名無しさん:04/03/18 20:04
C#っていうよりAPIなんで恐縮ですが,
他アプリケーションのタイトルバーの文字列をGetWindowTextで取得して,
修正してSetWindowTextで表示させたいのですが,
修正の際に,そのタイトルバーの全幅を知りたいのです.

他アクティブWindowのタイトルバーかフォームの全幅を取得する方法はないでしょうか?
PrintPreviewDialog ですが、プレビュー画面に表示している
内容が、ウインドウのリサイズなどの時にフリッカーがはげしいので
なんとかしたいと思っています。

Form などであれば ダブルバッファリングで対応できると思うのですが
PrintPreviewDialog の場合、どのように対応すべきかわかりません。

アドバイス頂けないでしょうか?
テキストボックスにコピペされないようにする方法ってないですかね?
390デフォルトの名無しさん:04/03/18 22:35
.NET Frameworkって1.1から新しいバージョン出てないの?
391デフォルトの名無しさん:04/03/18 22:37
使用できるシリアルポートを列挙したいのですがどうすればいいでしょうか?
1〜16まで順にopenしていく手もあるが、泥臭い
392デフォルトの名無しさん:04/03/18 22:37
c#で60分の1秒単位、
または、それが駄目なら30分の1秒でも
10分の1秒でもいいのですが、
その単位で描画を行い、
その単位時間が過ぎたら、
描画を止めるのには、
日付取得メソッドを使って
時間の計算を自分でするしかないのでしょうか?
また、時間はどうやって計算したら良いのでしょうか?
>>392
Timerじゃだめなの?
394デフォルトの名無しさん:04/03/19 00:01
c#builderのエディタでカーソルが行末より後ろに行くのを抑制したり、
行頭で←押して前の行の行末に移動するような設定ってあるんでしょうか?

>>390
1.1で何が足りないの?
396デフォルトの名無しさん:04/03/19 00:06
>>393
はい。
Timerは自分も一応知ってるのですが、
具体的には、
Timerイベントで時間を取得して、
その後forループでまわして、
1ループごとに時間を取得して、
例えば、例えば、一定の時間過ぎたかどうかチェックすると言うのが一般的なのでしょうか?
397デフォルトの名無しさん:04/03/19 00:20
取り合えずBalloonを付けて欲しい。

http://www.codeproject.com/cs/miscctrl/balloonnet.asp
はイマイチ・・・
GetTickCountって使えないの?
Environment.TickCountのことか?
>>395
物足りない
401デフォルトの名無しさん:04/03/19 01:02
DateTime.Ticks
こっちの方がより精度が高いのでいいような気がしてきました。
まあ、そんなに細かい精度はいらないのですが、
それでも、最低の精度が500ミリ秒ってのは
ちょっと雑すぎる気もしたもので。

でも、本当はこう言うことをもっとしっかりとやるには
マルチスレッドとかで、
処理をするのが本当なんですよね。
自分にはそう言うスキルは無いのですが。
402デフォルトの名無しさん:04/03/19 02:01
ListBox.MeasureItem イベント発生しないぞ、ゴルァ
DrawMode.OwnerDrawVariableにしてるぞゴルァ
403デフォルトの名無しさん:04/03/19 02:04
相談です。

http://www.gihyo.co.jp/books/syoseki.php/4-7741-1484-7
この本で一通りC#の言語仕様を学び、次はVS.NETでGUIアプリに挑戦しようと思ってます。
しかしアプリ作った経験が無く、ノウハウがまったくありません。

何らかのアプリを実際に作りながらノウハウを学んでいくような解説本があれば教えてください。
またはみなさんが初めてアプリ作りを学んだときの学習方法を教えてください。
404デフォルトの名無しさん:04/03/19 02:05
>>402
VS2002使ってませんか?
有名なバグですよ
>>403
簡単なGUIアプリならここらへんで

GotDotNet Japan Student レベル別学習コラム
http://www.gotdotnet.com/japan/student/levelcolumn.aspx
406403:04/03/19 02:44
ほほう、いいですね!ココ。
407ニャーニャー:04/03/19 02:45
みなさま、ちょいとばかし教えて下さい。
プログラム上で他のプロセス(例えばping)を起動、
その実行結果をテキストボックスにリアルタイムに表示させていくってな
ものを作りたいのですが、なかなかどうしてうまく行きません。
プロセス起動方法まではわかってるんですが、
ストリーム、標準出力うんぬんの処理がよくわかりましぇん。
終了後の結果ならテキストボックスに表示できるんですが、
リアルタイムでってのができないのですよね。
こんなんどう?とか、これ参考にして。なんて風にちょいと教えて下さい。
>>407
ストリームはどうせ死ぬほど出てくるんだからきちんと体得した方が良いよ。

TextBox textBox = new TextBox(); //この辺は普通はVSにコントロール貼り付け
Button button = new Button();

//別スレッドを使ってtextBoxに書く場合に必要
delegate void AppendText(string text);

private void button_Click(object sender, EventArgs e) {
   Process p = new Process();
   p.StartInfo.RedirectStandardOutput = true;
   p.StartInfo.UseShellExxecute = false;
   //以下p.StartInfo各種プロパティの設定省略
   p.Start();
   int output;
   while ((output = p.StandardOutput.Read()) != -1) {
      textBox.AppendText(((char)output).ToString());
//    別スレッドを作って書き込む場合は上の代わりにこちら
//    textBox.Invoke(new AppendText(Append), new object[]{((char)output).ToString()});
   }
}
//別スレッドとInvokeを使う場合の書き込み用メソッド
private void Append(string text) {
   textBox.AppendText(text);
}

ReadよりReadLineの方が良いかな?
C#を仕事で使っている人ってどれくらいいるのかな?
410デフォルトの名無しさん:04/03/19 09:42
文字列間隔ってどうやってあけるの???
?
412410:04/03/19 09:47
書き忘れ・・・

グラフィックオブジェクトを使って文字間隔をあけたいんですが、
どうすれば・・・
hogeをh o g eとかに指定した数値分間隔をあけたいんです
413386:04/03/19 10:10
>>387
どうも有り難うございました.
その中のGetWindowRectを使ったら出来ました〜.
414デフォルトの名無しさん:04/03/19 10:55
すみません。教えてください。
Graphics.DrawString()で、文字を出力するときに均等割りしたいのですが、
皆さんはどのようにしています?
動的プロパティに設定したプロパティが、
プログラム使用中に変更できないのですが・・・
これは、仕様でしょうか?

的外れなこと言ってたらスイマセン・・・。
416415:04/03/19 14:01
的外れというか、具体的じゃないんで質問変更します。
415は、脳内あぼーんしちゃってください(汗

C#でモーダルウィンドウで構成ファイルを変更した後に、、
そこで設定した情報(今回の場合、checkBox2.checkedのbool)を、
構成ファイル(-.exe.config)に反映した後、
それを読み込んでもForm1側の設定が変更されていません。
何故でしょうか?
417415:04/03/19 14:02
class Form1側
private void button1_Click(object sender, System.EventArgs e)
{
   Form2 ModalDlg = new Form2();
   ModalDlg.ShowDialog();

   ModalDlg.Dispose();
}
418415:04/03/19 14:02
class Form2側 (usingでSystem.Xmlと、System.Configuration使用)
private void button1_Click(object sender, System.EventArgs e)
{

   //構成ファイルのパスを取得
   string configpath = Application.StartupPath + @"\test_1.exe.config";

   //構成ファイルをXMLファイルに読み込む
   XmlDocument doc = new XmlDocument();
   doc.Load(configpath);

   foreach (XmlNode n in doc["configuration"]["appSettings"])
   {
      if (n.Name == "add")
      {
         if (n.Attributes.GetNamedItem("key").Value == "Form1.TopMost")
            n.Attributes.GetNamedItem("value").Value = checkBox1.Checked.ToString();

      }
   }
419415:04/03/19 14:04
private void Form2_Load(object sender, System.EventArgs e)
{
   checkBox1.Checked = bool.Parse(ConfigurationSettings.AppSettings["Form1.TopMost"]);
}

configファイル側
<?xml version="1.0" encoding="utf-8"?>
<configuration>
   <appSettings>
      <add key="Form1.TopMost" value="false" />
   </appSettings>
</configuration>

==================================================

これで全部です。
知っている方がいましたら、お願いします。
連続カキコすいません・・・。
Form2_Loadイベントのほうがbutton1_Clickイベントより
先に呼ばれるからでは?
Form2_Loadイベントで全て処理してみては?
421415:04/03/19 19:44
わ、一部かけちゃってます・・・ここが、

class Form1側
private void button1_Click(object sender, System.EventArgs e)
{
   Form2 ModalDlg = new Form2();
   ModalDlg.ShowDialog();

   this.TopMost = bool.Parse(ConfigurationSettings.AppSettings["Form1.TopMost"]);

   ModalDlg.Dispose();
}

です。

>>420
えーと、Form2側でForm1.TopMostの構成ファイルの変更をし、
その結果を反映させたいので、
最低Form2_Lodeイベントが終わったあとじゃないと出来ないと思います・・・。

意味を読み違えていたらごめんなさい。
というか、説明下手でごめんなさい・・・。
>>409
使ってるよ!
WindowsアプリとCOM Interopとか、ASP.NETの
Webアプリ案件がけっこうあるね

Windowsサービスとかノータッチデプロイメントとか
リモーティングもやってみたいが。。。


あの基本的なことなのですが、FCLってクラスライブラリなわけで
C#にもそれをさらに覆うクラスライブラリがあるのですか・・・?
424デフォルトの名無しさん:04/03/20 00:41
Button button = new Button();
button.Click += new EventHandler(OnClick);

EventInfo clickevent = button.GetType().GetEvent("Click");
MethodInfo method = clickevent.GetRaiseMethod();

これでOnClickメソッドの情報を得たいんですが、nullが返ってきます。
どうもこれでは駄目なようなんですが、他に方法はありますか?
おねがいします。
素朴な疑問ですが、C#で授業してる学校ってありますか?
426デフォルトの名無しさん:04/03/20 00:56
>>424
その場合GetType()時点でインスタンスの情報じゃなくて型そのものの情報になっちゃうから。
ちょっと調べたけどインスタンスの情報を取得するメソッドが見当たらないんだよな〜。

eventを宣言してるクラス内で
そのeventに関連付けられてるメソッドの一覧を返すメソッドなら書けるんだけど。
>>426
すげー××××っぽいのは気のせいか?
>授業科目名 ビジュアル・プログラミング基礎(C#.net Plus C++.netソフトウエア開発(基礎))
>授業の目的  知能ロボットや情報端末は,オブジェクト指向言語(言語名称の後ろに++が付いたもの)によって実現可能となった。

429デフォルトの名無しさん:04/03/20 11:06
>>414
一文字ずつに分解してから、
スペースを入れるって地道な方法しかないんじゃないの?
430デフォルトの名無しさん:04/03/20 12:06
GDi+をつかった描画ルーチンって、
相手のパソコンにGDI+が入ってないと駄目なんだよね。
あ、c#の場合はもともと、.netが入ってないと駄目だから、
.netが入ってる=GDI+が入ってるって事になるわけか。
>>430
そうでなきゃSystem.Windows.Forms全滅じゃんかw
432デフォルトの名無しさん:04/03/20 12:27
GDI+でfpsとったので
一応報告するよ。
30fpsで50×50ピクセルの画像(1つのスプライトと考える。)
を100個前後描画した。

微妙だけど、、
どう、考えても遅いよね。
これじゃ、ファミコン並みのゲームも作れないんじゃ?
実際にゲームを作るとなったらもっと別の
処理ルーチンだって沢山必要だしな。

まあ、漏れのノートパソコンよりも、もっと上クラスのパソコンなら
GDI+で一応ファミコン並みの作品は作れる計算になるかな?
ちなみに、漏れのパソコンはペンティアム3で
933mヘルツで、256MRAMだよ。

やっぱりゲームやるなら最低はダイレクトxの
2Dドロー系くらいは使えってことかな?
433デフォルトの名無しさん:04/03/20 12:33
>>415
無理、仕様
434424:04/03/20 12:37
>>427
レスありがとうございます。

> そのeventに関連付けられてるメソッドの一覧を返すメソッドなら
おお!メソッド名だけわかればいいのでそれでもOKです。
ぜひ教えていただけないでしょうか。
435デフォルトの名無しさん:04/03/20 12:37
>>415
構成ファイルは最初に読み込んだ時点からキャッシュされて使われるので、
再起動しないと変更は反映されない。
ASP.NETとかだと構成ファイルを書き換えると即座に強制再起動されるので
あまりよろしくない。
動的に変更が必要な情報は、構成ファイルじゃなくて
別のところに書くようにした方が良い。
436415:04/03/20 14:46
>>433
>>435
なるほど・・・構成ファイルは再起動しない限り無理なんですね。
適当にテキストでもXMLでも作って、そこで読み書きしてみることにします。
ありがとうございました。
437デフォルトの名無しさん:04/03/20 15:19
http://mylog.ishinao.net/id/580
ねえ、ここにさ、

>まあGDIもWindows 2000以降はDirectDrawを通して使っているらしいから、

って記述があるんだけど、これは嘘だよね。
漏れのxpなんだけどGDI+激遅だし。

GDIはダイレクトXとは違うよな。
WinFXでは統合されるんじゃないの
439デフォルトの名無しさん:04/03/20 15:21
あ、要するに、
GDIは使ってるけど、
それが更にダイレクトXを呼んでいると言う構造だから
遅いってことかな?

なるほど。なら、矛盾は無いよな。
440デフォルトの名無しさん:04/03/20 15:30
>>438
マジかよ!!
ならよ、GDI+でも超高速2D画像ができるってことか!?
ロングホーン以降は、、、?
それが本当ならすごいよな。
今からGDI+を使っておけばロングホーンになった時に自動的に速度UPされるのか!?
要するにロングホーンのGDI+は速くなるってことか?
442デフォルトの名無しさん:04/03/20 15:46
なら、すごいよな。
443デフォルトの名無しさん:04/03/20 15:47
結局ダイレクトドローを勉強する必要が
将来的には無くなって
GDI+だけ操作できれば
2D画像系は問題ないって方向へ行くのかな?
msはそこら辺をもっと解りやすくしてほしいな。
444デフォルトの名無しさん:04/03/20 15:48
問題は
新たにロングホーンを買ったりアップデートしたりする人が
どれくらい居て、
今までどおりの人がどれくらいかってことだな。
ここみると微妙。っていうかGDIとDirect3Dは別物で同列に置いてあるね。
http://www.itmedia.co.jp/news/0310/29/l_avalon.jpg

ただWindowのイメージをテクスチャサーフェスに描画するという説明が(たしか)あったので
グラフィックボードのハードウェア支援は受けられるとは思うけど。
446デフォルトの名無しさん:04/03/20 15:56
http://pc2.2ch.net/test/read.cgi/tech/1079765614/

そんなチミたちにこのスレ!

みんなで楽してハイクオリティーの2D同人レベルゲーム
を作りましょう!!
マウスボタンが押されたとき、シフトキーが押されているかどうかはどうやって知りますか?
448デフォルトの名無しさん:04/03/20 17:33
それぞれのイベントで押したときに
押されてるフラグを真、離されたときに偽にする。

そのフラグはそのクラス共通のフィールドにする。

で、それぞれのクラスでマウスオンフラグとシフトキーオンフラグが
&&で真かどうかをif文で判定する。
(ModifierKeys & Keys.Shift) > 0
ロングホーンのGDI+はDirectXが統合されて速くなるのかって話だけど、
XPで遅いGDI+アプリをロングホーンのβ版で動かしてみたら?
>>434
public class Test {
   public event EventHandler TestEvent;
   public MethodInfo[] GetMethodsOfTestEvent() {
      if (this.TestEvent == null)
         return new MethodInfo[0];
      Delegate[] delegates = this.TestEvent.GetInvocationList();
      MethodInfo[] methods = new MethodInfo[delegates.Length];
      for (int i = 0; i < delegates.Length; i++)
         methods[i] = delegates[i].Methods;
      return methods;
   }
}
public class Entry {
   public static void Main() {
      Test test = new Test();
      test.TestEvent += new EventHandler(Hoge);
      foreach (MethodInfo info in test.GetMethodsOfTestEvent())
         Console.WriteLine(info);
   }
   public static void Hoge(object sender, EventArgs e) {}
}

結局の所eventはDelegateのラッパにすぎないわけで、
event宣言はMulticastDelegateクラスの派生クラスを暗黙的に作ることだから、
add_TestEventとremove_TestEvent以外は宣言したクラス内なら
普通にMulticastDelegateクラスのインスタンスとして使えるってことだ。
452デフォルトの名無しさん:04/03/20 18:39
ダイレクトドロー系が残されたのは
.netだけなんだけど、
それはGDIが担当するからいずれそれに置き換えると言う
伏線か?
DDはD3Dに吸収された
454デフォルトの名無しさん:04/03/20 19:09
>>429
スペースってのは、まずくない?
プロポーショナルだと、きっちり合わないし。
やっぱ、分解して文字ピッチを調整するのかな?
>>454
そういう意味での「スペース」(アスキーコード0x20のスペースではなく)だと言ってるんでしょう、おそらく。
WORDなら簡単なのにね。C#って以外に貧相なのね。
457デフォルトの名無しさん:04/03/20 19:51
>event宣言はMulticastDelegateクラスの派生クラスを暗黙的に作ることだから、
違うと思うが…
458デフォルトの名無しさん:04/03/20 21:54
ネットワーク上のサーバから,(この場合はWhoisですが)
byte[]をで読み込んで,
netStream.Read(bb, 0, bb.Length)
JISなのでJISに変換して,
msg = System.Text.Encoding.GetEncoding("iso-2022-jp").GetString(bb);
リッチテキストエディタに表示
rtbox_show.AppendText(msg);

以下のように微妙に化けます.
[登O?G/7nF|] [有効|8B] [状態] [最=*99?7] [住j] [Postal Address] [電話番f] [FAX番号(B]

コンソール上のTelnetでファイルにリダイレクト,nkfで文字コード変換の場合には,
きちんと見えるので,自分のコーディングに問題があると推測しています.

どのようにしたら良いのでしょうか?宜しくお願いします.
中途半端な状態なんじゃない?
460デフォルトの名無しさん:04/03/20 22:14
byte[]に読まずにStreamReader使って変換すれば?
それかEncoder取得して変換するか。
461458:04/03/20 22:15
事故レスです.解決しました.
バッファサイズで繰り返し読んでいたのが原因でした.
どうも申し訳ありません.

>>459
ある意味その通りでした・・・
462デフォルトの名無しさん:04/03/20 22:24
>ある意味その通り
「まさにそのとおり」だと思うが…
463デフォルトの名無しさん:04/03/20 22:47
>>456
frameworkの問題だと思うが、
確かにWORDとかEXCELで実現しているような機能はちゃんと提供してほしい。
結局、業務で使えるようなアプリを作ろうとすると、
たいていはAPIを利用しなきゃならないというのが残念だ。

それにしても、C#のコミュニティって少ないな・・・
465デフォルトの名無しさん:04/03/21 00:16
C#ってWIN32API使うの面倒
業務で使えるかよ。こんな糞
C++,STL,MFCこれ最強
おまえどんな業務アプリつくってんだよ
467デフォルトの名無しさん:04/03/21 00:32
解析シミュレートがメインですね
468デフォルトの名無しさん:04/03/21 01:32
C#っていうより.NET Frameworkがしょぼいんだな。
俺はASP.NETやってるが、ほとんどフレームワーク頼みだからあれこれ大変だ。
469デフォルトの名無しさん:04/03/21 01:43
C# で正規表現パターンを変数に格納する場合 " が入っているとエラーが出て
コンパイルできない。
この場合どうするの? \" でエスケープもできないよ。納品近いのに・・
>>469
@"" でごまかしてみる
471最凶VB厨房:04/03/21 01:58
string s="\\\"3";
string sp="\"[1-9]";
Regex re=new Regex(sp);
Match m=re.Match(s);
Console.WriteLine(m.Value);
できるわけだが・・・
472デフォルトの名無しさん:04/03/21 02:10
perlでヤレ
473デフォルトの名無しさん:04/03/21 02:15
どうもです。

>>470 >>471 も試してみましたけど構文エラー

元の Perl で使っていた正規表現がこれ

(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:"
.\\\\\[\]\000-\037\x80-\xff])|"[^\\\\\x80-\xff\n\015"]*(?:\\
\\[^\x80-\xff][^\\\\\x80-\xff\n\015"]*)*")(?:\.(?:[^(\040)<>@,;
:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\
000-\037\x80-\xff])|"[^\\\\\x80-\xff\n\015"]*(?:\\\\[^\x80-\xff]
[^\\\\\x80-\xff\n\015"]*)*"))*@(?:[^(\040)<>@,;:".\\\\\[\]\000-
\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff])|
\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[^\x80-\xff])*\])(?:\.(?:[^
(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\
[\]\000-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\
[^\x80-\xff])*\]))*};

適当にぶったぎってあるけど、おひおひ

>>472
Perl からの転向組さ・・・C# でやらせるなよ
474最凶VB厨房:04/03/21 02:21
>>473
こちらの環境ではできるので
他の部分でミスがあるのでは?
>473
こういう暗号は大嫌い・・・
誰か正規表現の分かりやすいバージョンを考え付かないかな?
高級言語を使う時代なのに・・・
476デフォルトの名無しさん:04/03/21 02:26
>>474
深夜にレスありがとう!

でもおかしいなぁ、こっちでは

public static string MailRegex2 = @"〜上記パターン〜";

で構文エラー '"' が必要です。と出ちゃいます。
SDKのバージョンは?
478デフォルトの名無しさん:04/03/21 02:32
>>477

SDK のバージョンは 1.1です。たぶん最新です。
479最凶VB厨房:04/03/21 02:32
VC#なら
ツール→オプション

環境→フォントおよび色→表示項目で文字列を選択して
背景アイテムで色かえて確かめてみたら?
480最凶VB厨房:04/03/21 02:37
元のPerlで使っていた正規表現は試してないかんね。
481デフォルトの名無しさん:04/03/21 02:49
>>474

このパターンをコピペして動きましたか。

>>479
色を変えて試すとどうなるのでしょう?
実は VC# を3日前から使い始めたばかりで、よくわからないのです。
今まで Perl + エディタ + コマンドラインだったもので IDE さえ初めて・・・

>>480
Perl ではブンブン動いているんですよ。
482最凶VB厨房:04/03/21 02:53
>>481
動かない。
@つきでは" は2ついるし。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csref/html/vclrfString.asp?frame=true

色を変えてどこまでが文字列として認識されているかを確認すべし。
preg_match("/(.*?)=\?iso-2022-jp\?B\?([^\?]+)\?=(.*)/i", rtrim($sbj), $regs)

これをC#でやるとどうなりますか?
484最凶VB厨房:04/03/21 02:54
485デフォルトの名無しさん:04/03/21 03:04
>>482 >>484
動きました!

結局パターン中の " を "" にしました。
>>482
の MSDN のリンク先に解説してあるのを読みました。

ありがとうございます!!
C# を触ってまだ 3日なので基本的な構文なども良く分かっていなかったので
みなさんにご迷惑をおかけしました。

実は私は営業の人間で趣味で Perl, JScript + DOM などを使っていたのですが
仕事の方で人が足りなくなり急遽投入されてしまいました。
「JScript やってるよね。JScript は .NET 環境で exe にコンパイルできるみたいだよ。」
はぁ。
「同じ .NET 環境だったら JScript より C# だよね。勉強になるよ。趣味にも生かせるし。」
はぁ。

というやり取りの結果いま仕事中です。

はあぁ。
職場の話等がしたければマ板へ。
正規表現で?がエスケープできません。
Regex r = new Regex("\?");  //エラー

いったいどうすれば…_| ̄|○
488最凶VB厨房:04/03/21 04:03
正規表現としての文字列が\?
これをC#としての文字列にすると\\?
以上。
デキタ━━━━(゚∀゚)━━━━ッ!!
>>485
お前にVBのプロジェクトやるからその仕事よこせと
buttonを5*5に表示させようと思って
System.Windows.Forms.Button[5,5] という風に myButton を宣言しました。
ぐぐった結果、これを表示するのに
this.Controls.AddRange(myButton);
とする必要があるらしいことがわかりました。
しかし、そのサンプルと違い、私のmyButtonは [,] なので [] に変換することはできません。
どうしたらいいんですか?
クラスライブラリについての質問なんだが、TabPanelで選択されたタブ部分の色を変えたい場合ってどうすればよいの?
MSN Messanger風のタブのスタイルを使いたいんだが。
>>492
タブのパネル部分とタブ切り替え部分を同じ色にしたいの?
>>493
選んでるタブを強調したいんです。
で、タブの上についてる出っ張り部分の色を変えれないかと思ったんだが
出っ張り以外のところしか色が変わらないんです
>>494
タブの部分だけ色変えることは標準じゃできないよ。
overrideして自分で描画。
496デフォルトの名無しさん:04/03/21 16:09
>>495
んなことくらい知ってるよ
実際どう描画するかを聞いてんじゃんかよ、ぼけ
氏ね
497デフォルトの名無しさん:04/03/21 16:16
ぼけ
氏ね
フォントダイアログに一部のOpenTypeフォントが表示されないのですが、解決法を教えてください。
499424:04/03/21 17:57
>>451
> 宣言したクラス内なら普通にMulticastDelegateクラスのインスタンスとして使える
なるほど!これは知りませんでした。その方法で何とか出来そう。
コード大変参考になります。
ありがとうございました。
>>496
こういう事じゃなくて?
private void tabControl_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
TabControl control = (TabControl)sender;
TabPage tab = control.TabPages[e.Index];

StringFormat format = new StringFormat();
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
format.FormatFlags = StringFormatFlags.NoWrap;

if (e.State == DrawItemState.Selected)
{
e.Graphics.FillRectangle(SystemBrushes.Control, e.Bounds);
e.Graphics.DrawString(tab.Text, e.Font, SystemBrushes.ControlText, e.Bounds, format);
} else {
e.Graphics.FillRectangle(SystemBrushes.ControlDark, e.Bounds);
e.Graphics.DrawString(tab.Text, e.Font, SystemBrushes.ControlLightLight, e.Bounds, format);
}
}
501デフォルトの名無しさん:04/03/21 21:01
まあ、出来たんならいいんだけど、
>>424 MethodInfo method = clickevent.GetRaiseMethod();
これを、clickevent.GetRaiseMethod(true)にしたら取れたっておちはない?
実行中に取得したTypeを元に、
動的にキャストする型を変えることってできるかな?
その型だとナニができるかわからないのにキャストしてどうすんのよ。
504デフォルトの名無しさん:04/03/21 23:26
キャストした時に何型が返ってどうやってアクセスするのん…?
505502:04/03/22 00:57
うーん、例えば、short、int、longのいずれかなんだけど、
どれが渡されるかは実行時まで分からなくて、
でも、やることは、それらが共通して持っているメソッドを使うので、
三通りのコードを書かないように済ませたいということです。
> それらが共通して持っているメソッド

具体的に何?
507502:04/03/22 01:16
>>506
例えば、ToString()
>502=505
そこは普通メソッドをオーバーロードするように作るとこだろ。
(すまんがC#は今一覚えてないので、抽象メソッドとかどうなってるのか忘れたが……)
メソッドの中身の大枠は決まってて細部が違うんならTemplate Methodパターンが(・∀・)イイ!!
509デフォルトの名無しさん:04/03/22 01:29
>>507
何のためにToStringがObjectで定義されてるんだか…
それとも、出してみた例が悪すぎただけか?
>>508
オーバーライドの「書き」間違いである事を祈る…
>>505
その辺の悩みはJavaが過去に通った道だったりする。
デザインパターンをグルっと追ってみると良いかも?
503や504の言ってる意味が理解できてないと見た。

>>507
どういうインターフェースなのかが予め分かってるじゃねーか。
だったらそのインターフェースにキャストすればいい。
その場合はSystem.ValueTypeが共通のインターフェースになる。
JavaはPrimitive Typeがobject派生じゃない、旧世代の言語なので
そのへんの統一を取るのが難しいですね。

しかしながらパフォーマンスを考慮すると、やっぱりprimitive型別に
overloadを用意する羽目になっちまいますが。
>>509
最初、objectにキャストしてやろうとしたんだけど、
objectの ToString には引数が渡せなくて・・・。
514デフォルトの名無しさん:04/03/22 01:48
>>513
じゃIFormattableで。
515デフォルトの名無しさん:04/03/22 01:56
てか、具体的な例にあることがしたいだけなのか
もっと一般的な話なのか良く分からんな…
書いてる事だけなら、shor, int, long なんて全部
longで扱っちゃったらいいんじゃ…とか
516デフォルトの名無しさん:04/03/22 02:12
>しかしながらパフォーマンスを考慮すると、やっぱりprimitive型別に
>overloadを用意する羽目になっちまいますが。
どんなコードになるのか興味あるなあ(使う側が)…
型不明のprimitive型を何型に入れるの?
ってかoverloadは普通静的に型が分かってなきゃ使えんよね。
でも一つの(共通の)変数に入れるんだよね?
517502:04/03/22 02:20
いろいろレスありがとう。

>>515
実際には、プリミティブ型のどれかが object型に入れられて渡されるんです。

なんとなく道が開けた感じがするので、今一度考え直してみます。
取り合えず、うまい方法を思いつくまで、型の数だけ分岐するコードで対処しときます。
>>516
予め型が分かっていて、その型に対する処理を静的に記述することで
パフォーマンスの向上が望めるならば、overloadしたメソッドを用意する
ことは意味があると思う。

使う側も、そのことを意識しているならば、共通のobject型に入れて
おくことはないだろう。意識してないならobjectのままでいいと思う。

要するにその使い分けをするかどうかだな。.NETではprimitive型も
object型としてそのまま扱えるので、とりあえずobject型として
突っ込むことができる。後からprimitive型に特殊化してもよい。
また、その際の書き直しが少なくて済む。
テキストボックスなんかに、現在編集中ならtrueを返すプロパティを加えたいんだけど、
"IsEditing"って名前はコーディング的にも、英語的にも妥当だと思う?
> 現在編集中なら

この条件がそもそも分かりにくい。
フォーカスが当たってるということ?
ユーザーがキーを押してるということ?
で、フォーカスがあるって事ならControl.Focusedがあるしな。
522519:04/03/22 11:24
専用のフィールドを用意しておいて、
初期値状態では false で、
TextChangedイベントが発生すると true に設定、
LostFocusイベントが発生すると、編集終了とみなして false に設定、
編集をキャンセルするメソッド(実装予定)を実行すると false に設定、
編集を確定するメソッド(実装予定)を実行すると false に設定、

という具合。
IsEditingはDelphiのリストビューコントロールで、アイテムが編集中か
否かを表すプロパティとしても使用されているので適切な英語だろう。
1.ListBoxの項目を選択して編集ボタンをクリック
2.編集フォームを出してリストの内容を表示
3.編集フォームの内容を編集
4.OKボタンを押してメインフォームへ戻る

とした時、1で選択したリストを選択した状態にしたいのですが、
どうすればいいでしょうか?
525デフォルトの名無しさん:04/03/22 22:08
>>524
面倒なら、ShowDialog()使えば?
>>523
ほうほう、そうなんだ。
じゃあ、堂々とそう名前付けします。
レスさんくす。

どうも英語に自信が無くて・・・
527デフォルトの名無しさん:04/03/22 22:46
>>525
ShowDialog使ってます。DialogResultがCancelの時は問題ないのですが、
DialogResultがOKの時は、リストを更新しているので、
その後に選択項目をもう一度選択した状態にしたいのです。
528508:04/03/23 00:28
>509
たはは。「覚え」間違い。とゆーか、
ちょっと時々ごっちゃになるねん。
わかってんねん、わかってんねんで? 引数が違うだけのやつがオーバーロード、
それがごっちゃに……
……
わかってんねんで?!
529528:04/03/23 00:29
……ボケ損ねた。寒い……
FontFamily[]を取得した後、シンボル不可、等幅のみ、でフィルタリングできませんか?
質問です。

string a = null;
string b = "";

return (a == b);

がfalseになるのですが、aとbは何が違うのでしょうか?
bの空文字は空っぽなわけですからnullと同値だと思ってたのですが…
>>531
nullとぬるぽは同値ですが、
nullと""は同値ではありません。
難しい。どう使い分けるんだ??
nullは何もさしていない。
""は文字列オブジェクトをさしている。

nullは何もさしていない。
0は数値オブジェクトをさしている。
ちなみに私はOracleマスターです。

の一言があればウケが取れたんだがなー
つまり、""は数字の0と同じで、インド人もびっくりってことですね?
stringとStringはどう違うんやー
と言う疑問が以前ありました。
普通のstring型の配列をデータグリッドに表示させることは可能でしょうか?
539560:04/03/23 07:11
string[,] listes = new string[10,10];
(listesにはすでにデータが入っているものとします。)

private void Button1_Click(object sender, System.EventArgs e)
{
int sel = listBox1.SelecttedIndex;

Form2 editForm = new Form2();

editForm.TextBox1.Text =listes[0, sel];
for (int i = 1; i <= listes.GetUpperBound(0); i++)
{
editForm.listBox1.Items.Add(listes[i,sel]);
}

editForm.ShowDialog();

editFormのタイトルやリストの編集処理

if (editForm.DialogResult == DialogResult.OK)
{
配列の更新などの処理
//リストの更新
for (int j = 0; j <= listes.GetUpperBound((1); j++)
{
listBox1.Items.Add(listes[0,j]);
}
}
editForm.Dispose();
}
540560:04/03/23 07:14
>>539の続きです。

このような処理をした後にメインフォームのlistBox1.Items[sel]を
選択した状態、つまりeditFormを表示する前の状態にしたいのです。
何か良い方法はないでしょうか?

# 思いつくままに書いたので不備があるかもしれませんが、
# やりたい事を感じ取ってくれれば幸いです。

なお、ハンドルの560は間違えました。
>>524=>>527です。m(__)m
>>540
listBox1.SelectedIndex = sel;
いやまともに読んでないからsel+1かsel-1かしらんが。
542デフォルトの名無しさん:04/03/23 07:30
>>540
変数作って選択されていた番号覚えておけばいいだけじゃない?
543530:04/03/23 09:59
APIしかないのかな?
544デフォルトの名無しさん:04/03/23 16:28
System.Reflection.MemberInfo によって
クラスのメンバの列挙はできたのですが、
それが static かどうかを判定する方法はありますか?
545544:04/03/23 16:42
自己レス
MethodInfo の方にありました、失礼。

C言語でバイナリデータにアクセスするときに、
構造体とポインタを使う方法をよく使うと思うのですが、
このようなことをC#で、unsafeを使わないで行うにはどうしたらいいのでしょうか?

最初は、unsafeを使ってやろうとしたのですが、
構造体のメンバに配列を使いたかったのでうまくいかず挫折しました。
547540:04/03/23 18:21
>>541さんの方法で出来ました。
しかし、まさかこんな方法で出来るとは…。
僕が勉強した本では、SelectedIndexはインデックス値を
取得するものとしか書いていなかったのでかなり驚きです。
そっか、逆に数値を入れるのか…。本当に思いもよらなかったです。
ここで教えてもらえなかったら、一生分からなかったような気がします。
一般的に、こういう疑問にぶつかった時って、
どうやって解決していくものなのでしょうか?
何かしらコツとかパターンとかあるのでしょうか?
はぁ...自信を無くしてきました…
>>546
どこかのメーリングリストで話題にあがってたけど、
確か結論は「BinaryReaderで一々読んでいく」だったと思う。
そりゃそうだべ。
クラスごとにシリアライザ書くべし。
>>547
>僕が勉強した本では、SelectedIndexはインデックス値を
>取得するものとしか書いていなかったのでかなり驚きです。
その本捨てようぜ。まあ冗談だけど、やっぱり本はとっかかりに過ぎない。
全ての事柄を薄っぺらい本なんかで解説できるはずもないんだから、
本だけで全てを学ぼうなんて無理。

>一般的に、こういう疑問にぶつかった時って、
>どうやって解決していくものなのでしょうか?
上で言ったように、本はとっかかりに過ぎないんだから、
新しいメソッドの存在を知ったらドキュメントを眺める。
ちゃんと書いてある。

>ListBox.SelectedIndex プロパティ
>ListBox 内で現在選択されている項目の 0 から始まるインデックス番号を取得または設定します。

取得または設定します。
~~~~~~~~~~~~~~~~~~~~~~~~
>>547
ヘルプに、そのプロパティが読み取り専用か、読み書き両用か書いてあるよ。
552546:04/03/23 21:09
>>548, 549
なるほど、ありがとうございました。なんとかやってみます。
Borland C# Builderを使ってC#のプログラム書こうと思ってるんですが、
これにあった参考書を教えてください。
ペタペタやるのは初めてなもので。
>>553
C#Builderではじめる .NETプログラミング入門
http://www.shuwasystem.co.jp/cgi-bin/detail.cgi?isbn=4-7980-0668-8
>>554
ありがとうございます!
早速買ってみます。
556540:04/03/23 23:11
>>550さん
>>551さん
レスありがとうございます。
勉強の仕方事態が分かっていないような感じですね。

>ListBox 内で現在選択されている項目の 0 から始まるインデックス番号を取得または設定します。
多分これを見てもSelectedIndexに数値を入れて選択状態にするとは
思い付かなかったと思います。(涙) この事実に凹んでしまいますが、
がんばってヘルプを眺めながらコツをつかむようにしたいと思います。

船を漕ぎ出したものの、海の大きさに黄昏れてしまいそうです。
557デフォルトの名無しさん:04/03/24 08:08
DataGridコントロールのヘッダーの文字列だけを中央揃えにしたいのですが、独立して設定できないものでしょうか?
開発環境はVS.NET2003 C#です。
.NETアプリってクラックパッチあてられるの?
(゚Д゚)ハァ?
>>557
DataGridColumnStyleのAlignmentを変える
WinFormだとDataGrid→TableStyles→GridColumnStyles
にある目的のもののAlignmentプロパティ
561198:04/03/24 20:34
いろいろいじってみたんだけどどこが悪いのか判りません・・・
ソースをアップするので教えてください。
ttp://up.isp.2ch.net/up/c21edefdccc0.zip
>>561
試してみたけど、ちゃんと動いたよ
563デフォルトの名無しさん:04/03/24 21:10
>562
ということはサーバー側の問題なのかな・・・
564デフォルトの名無しさん:04/03/24 21:26
C# で,テキストボックスに入力された文字列の,フリガナを取得したいので
すがやり方がさっぱりわかりません.ぐぐってみたのですが,それらしい
ソースを見つけられませんでした.

方法を御存知の方,ご教示くださいませんか?

希望はマネージドコードがいいのですが,アンマネージしか方法がないので
あれば,その方法でも助かります.よろしくお願いします.
565デフォルトの名無しさん:04/03/24 21:27
こんにちはC#今はじめたばかりで何にもわかってないものなんですけど
親クラスのコンストラクタを呼び出すのってどうするのですか?
C++でいうと super() です
よろしくお願いします
566565:04/03/24 21:37
ごめんなさい なんか勘違いしてました.
おまけに super() は Java ですね...
無駄に書き込みしてすみませんでした.
567デフォルトの名無しさん:04/03/24 21:50
>>565
もうちょっと勉強してください
親クラスのコンストラクタは必ず呼び出されます
>557
>DataGridコントロールのヘッダーの文字列だけを中央揃えにしたいのですが
ヘッダーだけってのは、無理でないかな。ヘッダー名に空白でもつければ?
569デフォルトの名無しさん:04/03/24 22:15
>>568
ありがとうございます。やはり簡単にはいかないのですね。(TT)
ヘッダー名に空白は、左詰の時はいいのですが、右詰の場合右端の空白は無視されてしまうようです。
MSの人たちは、誰もカッコ悪ーって思わなかったのかなぁ。
>>569
>>560 も読んでちょ。
>>567
お前一言多いよ。
どうして黙って教えてやれないんだ?
意地が悪い嫌われ者なのか?
>>570
ん、違ったか。失礼
573最凶VB厨房:04/03/24 22:51
>>565
省略すると引数のないデフォルトコンストラクタが呼ばれる。
明示的に呼び出すには、
public コンストラクタの名前(string init):base(引数)//this()
{
//サブクラスのコンストラクタの内容。
}
ここでbase(引数)の部分をthis()にするとサブクラスのデフォルトコンストラクタを
呼び出せる。
ようだ。
574デフォルトの名無しさん:04/03/25 03:00
C#でtimeGetTimeのような〜からのミリ秒を得るにはどのようにすれば良いのでしょうか?
DateTimeクラスから計算するということもできるのですが、何か他に
上手い手をご存知の方がいらっしゃいましたらお願い致します
いや無いよ。
timeGetTime関数つくればいいじゃん。
>>564
ぐぐったら出てきたよ。
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=7712

たまに記号が入っちゃうけど。
577デフォルトの名無しさん:04/03/25 11:42
>>570
すみません。ありがとうございます。
560にあるGridColumnStylesを使用しても
HeaderのAlignmentは変更できないような気がしますが、私の知識不足かもしれません。
もし、できましたらもう少し教えていただけませんでしょうか?
サードパーティのアドインにはあるみたいなのですが・・・。m(__)m
578574:04/03/25 12:18
>>575
ないんですか_| ̄|○
それではDateTimeから自分で作る事にしました
どうもありがとうございました
 クラスライブラリを作成している際、プリプロセッサ ディレクティブとでも言うのでしょうか
メソッドやプロパティ等に補足説明を記述していました。
このプロジェクトをビルドしてDLLを他のプロジェクトで参照した所、コーディング中に
先の補足説明が表示されませんでした。
 コンパイルの際に、バイナリには記述されないために参照先では表示されないと思うのですが、
やはり説明がないと不便で悲しいです。

この補足説明を表示させるにはどうすればよいのでしょうか?皆様のお知恵を拝借したいです。
580名無しさん♯:04/03/29 07:12
うへー。pc2の過去ログ消滅だね。(´・ω・`)ショボーン

>>579
XMLドキュメントを出力して、DLLと同じディレクトリに置いておけばよいと思われ。
Hoge.dllならHoge.xmlという名前で。
581名無しさん♯:04/03/29 07:38
あ、pc2をpc5にすれば過去スレも見れた。(・∀・)
早とちりスマソ。
579 名前:デフォルトの名無しさん 投稿日:04/03/25 13:55
MS ACCESSって、ADO.NETのバッチクエリ受け付けてくれるんだっけ?


580 名前:デフォルトの名無しさん 投稿日:04/03/25 16:13
C#(.NET)で、一番活発なメーリングリストってどこ?


581 名前:デフォルトの名無しさん 投稿日:04/03/25 16:16
メーリングリストというか
CodeProjectが最強。



582 名前:デフォルトの名無しさん 投稿日:04/03/25 16:21
かつて最強だったDevelopMentorも死に体に近いしな。


583 名前:デフォルトの名無しさん 投稿日:04/03/25 16:32
Finalizeメンバ関数とはどのようなものなのですか?


584 名前:デフォルトの名無しさん 投稿日:04/03/25 16:33
あとインターフェイスを多重継承することは出来るんですか?
585 名前:デフォルトの名無しさん 投稿日:04/03/25 17:26
VS 2003 .NET C# で開発を始めました。がんばって調べたのですが
どうしてもわからない事がありますのでお力を貸してください。

テキストボックスに入力される文字列の制限をする為に、
MaxLength を設定したのですが、MaxLength は、半角でも全角でも
文字数で制限してしまいます。

これを、文字数ではなくバイト数で制限をかける方法が
わからなくて困っています。

というのは、入力された値はその後、SQL Server に格納するのですが、
SQL Server の型が varchar(15) であれば、その部分にあたる
テキストボックスは、15バイトまで許可したい。
という事を行ないたい為です。
もしバイト数で制限する事ができない場合は、一般的にどのように
プログラムされているのでしょうか? よろしくお願いします。
586 名前:デフォルトの名無しさん 投稿日:04/03/25 18:24
>>585
入力された値に変更があったときのイベントを取得し、
そのときにバイト数のチェックを行う。
長ければ切るようにする。
っとやることは書いてみるが、
Java開発者なのでどのようなイベントか分からん。


587 名前:デフォルトの名無しさん 投稿日:04/03/25 21:27
>>585
System.Text.Encoding.GetEncoding("Shift_JIS").GetByteCount(this.textBox1.Text)

これで textBox1.Text を Shift_JIS エンコードするのに必要なバイト数が取得
できるよ

入力ごとにチェックするなら TextBox.TextChanged イベント。



588 名前:デフォルトの名無しさん 投稿日:04/03/25 21:31
>>583
Finalize は C# だと定義できないはず。
デストラクタを定義すると勝手に呼ばれる。

GC側の挙動を知りたいなら、ファイナライゼーションリストとか
リーチャブルキューを調べるか、『プログラミング .NET Framework』 に
詳しい。
589 名前:585 投稿日:04/03/25 21:53
>>587
ありがとうございます。入力された文字列のバイト数は頂いた
コードでバッチリなのですが、TextChanged の発生は、入力されてしまった
後なので、入力された文字を取り除かなければなりません。

そのやり方がわからないのと、クリップボードの内容を
コピペした場合、制限以上の文字数は切り取らないといけないのですが
そういった事も考慮しなくては、と思っています。

難しい。。。。アドバイスよろしくお願いします。


590 名前:587 投稿日:04/03/25 22:14
>>589
TextChanged イベントで、this.textBox1.Text = Encoding.GetString(
Encoding.GetBytes(this.textBox1.Text), 0, maxByteCount)
みたいな感じで文字数の切り取りはできますね。コピペにも耐えられます。

ただしキー入力のキャンセルをやらないと、テキストボックスの左端に
1文字入れると右端が1文字消えるという妙な挙動になります。

TextBox を継承したコントロールに作り込んでしまえば何とかなりそうですね。
591 名前:デフォルトの名無しさん 投稿日:04/03/25 22:32
プロパティにプロパティを変更できないってのは、どういう意味なんだろう・・・

592 名前:デフォルトの名無しさん 投稿日:04/03/25 22:32
「プロパティのプロパティ」だた

593 名前:デフォルトの名無しさん 投稿日:04/03/25 23:28
>>591
たとえばFormのSizeをいじりたいときに、
Form.Size.Height = 100;
と書いてはだめで、
Form.Size = new Size(0.100);
と書かなければならない。

これでわかるかな?

594 名前:デフォルトの名無しさん 投稿日:04/03/26 00:03
>>593
流れ見ないで反応するけどその例えは馬鹿みたいだな

595 名前:デフォルトの名無しさん 投稿日:04/03/26 01:19
>>594
流れがさっぱりわからないんだけど、
どんな例えなら馬鹿じゃないんだ?

596 名前:デフォルトの名無しさん 投稿日:04/03/26 01:36
>>595
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1041/cpref/html/frlrfSystemWindowsFormsControlClassSizeTopic.htm
横からだけどここ読めば馬鹿さが分かるのでは。
597 名前:デフォルトの名無しさん 投稿日:04/03/26 02:16
C# 2.0: Create Elegant Code with Anonymous Methods, Iterators, and Partial Classes -- MSDN Magazine, May 2004
http://msdn.microsoft.com/msdnmag/issues/04/05/C20/default.aspx

598 名前:デフォルトの名無しさん 投稿日:04/03/26 02:22
発売中
ttp://www.oreilly.co.jp/BOOK/progcsharp3v1/

599 名前:デフォルトの名無しさん 投稿日:04/03/26 03:46
>>596
Width とか Height を使えってこと?

600 名前:デフォルトの名無しさん 投稿日:04/03/26 03:48
>>596
ごめん、まじでわからん。
いや、…なんか見落としてるのか…俺?

601 名前:デフォルトの名無しさん 投稿日:04/03/26 03:50
うーん、>>593の書いてる事の意味って分かってるよね?

602 名前:デフォルトの名無しさん 投稿日:04/03/26 03:52
あ、600,601は595ね。

603 名前:デフォルトの名無しさん 投稿日:04/03/26 03:54
>>599
もしそうなら馬鹿はそっちだって言われそうだが…

604 名前:デフォルトの名無しさん 投稿日:04/03/26 03:59
なんどもすまん、そうか、MSDNの説明が悪いんだな。
よく読んでみたら確かにはっきり言って間違ってる。
605 名前:デフォルトの名無しさん 投稿日:04/03/26 04:55
何何?さっぱりわからん。何をもめてんだ?

606 名前:デフォルトの名無しさん 投稿日:04/03/26 06:10
プロパティってなんですか?getとかsetとか。

607 名前:デフォルトの名無しさん 投稿日:04/03/26 09:32
>>593はWigthがゼロになっているのが
そんなアホなって事じゃないのかな?

608 名前:594 投稿日:04/03/26 09:32
>>593
放置してスマン。

まず「Size」をいじりたい時と言い出して、「Height」をいじっているのが
意味が分からない。Heightをいじりたい時なら分かる。
それと正しい例として、カンマじゃなくてピリオドで書いているのがマヌケかな。

ちょっとツッコんだだけだよ。

609 名前:デフォルトの名無しさん 投稿日:04/03/26 09:39
>>597
英語スラスラ読めるようになりてえ・・・
これ全部読むのにどう頑張っても500時間はかかる・・・

610 名前:デフォルトの名無しさん 投稿日:04/03/26 10:27
>>609
プログラミング技術文書の頻出単語って大体決まってるから結構すぐ慣れるよ。
和訳とセットになってる文書(MSDN関連とか)を教材にがんがれ。
>>582-588
C# で 文字列の ゼロパディングを行なう方法がわかりません。

"ABC" -> "0000ABC" のように指定桁になるまで 0 を埋めるのに
便利な関数があれば教えてください。
591デフォルトの名無しさん:04/03/29 22:30
String.Format
でも調べろよ。ばか
>>590
String.PadLeft
C++で
HBITMAP hbmp = CreateCompatibleBitmap(hdcdisplay,16,16);
してRectangle()とかで描いたBITMAPから
ICONINFO ico;
ico.hbmColor=hbmp;
NOTIFYICONDATA hIcon=CreateIconIndirect(&ico);
Shell_NotifyIcon(NIM_ADD,&icdata);
としていたのをC#に移植したいのですがBITMAPからICONをにするほうほうが分かりません
594593:04/03/30 03:30
× NOTIFYICONDATA hIcon=CreateIconIndirect(&ico);
○ NOTIFYICONDATA icdata;
  icdata.hIcon=hIcon=CreateIconIndirect(&ico);
>>593
どのレベルまで移植したいのかはともかくとして、
BitmapオブジェクトからIconオブジェクトなら
Icon icon = Icon.FromHandle(bitmap.GetHicon());
596593:04/03/30 08:05
FromHandleがありましたか。見落としてました
ありがとうございます

593も594もミスだらけでだめぽ。バイトいってきます…
597デフォルトの名無しさん:04/03/30 14:24
Passport 認証されている掲示板にデータをポストしたいのですが、
どうすればいいのでしょうか?
OnClickの使い方が皆目見当がつきません。
他のイベントが起きたときそこのイベント処理中でButtonインスタンスから
OnClickメソッドを実行すると基本クラスから呼び出せってエラーをコンパイラ
にはかれます。○| ̄|_
>>598
OnClickは呼ぶんじゃなくて呼ばれるもの。
>>599
そうだったんですか。
もう一度勉強しなおしてきます。
ちょっと相談なんだけど、ダイアログボックスを出したときに、
最初にフォーカスが当たるのがTextBoxやComboBoxだとキャレット消えるよね?
ツールバーやショートカットーキーで開くと何ともないけど、メニューの時だけ。
これってどうにか解決してる人いない?
>>601
私の所ではMainMenuからでもContextMenuからでも消えないようだが。
603601:04/03/30 17:03
まじで?
ちょっと手順確認するよ。
メインフォーム以外にダイアログボックスのフォームを作る。
そこにキャレットを持つコントロールを置き、
タブ移動順で最初にフォーカスが当たるようにする。
あとはメインフォームからメニュークリックイベントで開く。
うちはOSが変わろうと言語が変わろうと絶対発生するんだけど環境依存かなぁ。
BorlandのC#BuilderとMicrosoftのVisualC#.NETってのは全く別物でしょうか?
前者をインストールしてC#始めようと思うのですが(ただだったので)、
入門書は後者のほうが多く、前者のものよりわかりやすい気がしたので、
前者の入門書を買おうと思ってるのですが、何かと不都合が生じますか?
入門書見た感じは似たような気がしたのですが、実際のところはどうでしょうか?
前者は後者のパクリなので、入門書に書いてあることはおおかた通ります。
606デフォルトの名無しさん:04/03/31 18:06
>>604
前者のものよりわかりやすい気がして、どうして前者の入門書を買うの??
ってつっこみはさておき。
要は、内容次第だと思うが、初心者ならすなおに前者のものを買ったほうがいいと思うぞ。
607デフォルトの名無しさん:04/03/31 18:41
 Win32APIの GetAsyncKeyState()関数
見たいなメソッドはc#では無いのでしょうか?
このメソッドは自分からキーボードの状態を調べに行くメソッドで、
通常のキーが押されてからイベントが発生して自分のプログラムが
対応するような形式とは逆のメソッドです。

これがあったら良いのですが、、、やっぱり無いですよね?
ヘルプでも全然見当たらないし、、、。そう言うメソッドは、、、。
G#相談室
WindowsアプリでTcp接続したサーバーからのデータ受信を別スレッドで行っています。
Windowsアプリは受信スレッド側にイベント登録して、データ到着イベントでデータ表示しようとしています。
受信スレッドで受け取ったデータはDataSetに格納して、DataGridのDataSourceにするのですが冷害が発生してしまいます。
例外の内容はスレッドがことなるコントロールを親にできませんでした。
しかたないので、Windowsフォーム側のタイマー処理でデータ到着を確認するようにして対応しました。
別スレッドで発生したデータをWindowsアプリで表示する場合には、どのようにするのが定石なんでしょうか?
>>607
能無しのボケが
C#ならそんなもん自分でつくれんだよ
>>605
>>606
どうもありがとうございます。
買いたいのは後者の間違いでした。
C#は初心者なので、おとなしく前者の買います。
612デフォルトの名無しさん:04/03/31 23:48
>>609
Form.Invoke使え。
>>610
荒らさないでくださいね。
自分のスレに帰ってくださいね。
>>612
おおおっ!!
Form.Invokeでスレッド切り替えてFormを更新できるのか
感動したッス
>>607
そういうメソッドはP/Invokeで直接使う。
616デフォルトの名無しさん:04/04/01 00:15
Form の Load イベントで処理するのと,コンストラクタで処理するのは
何か違いがありますか?

Form を new した後に,必ず show をするという前提があれば
Load でもコンストラクタでもいいような気がするのですが,

Form の Load イベントでやるべき事,ってどんな事がありますか?
>>616
ウィンドウハンドル(HWND)を使う処理。
コンストラクタの時点ではハンドルはNULL。
TextBoxに複数行(行数は任意)の文章を出力したいのですが、
改行文字を使っても改行されません。
MultiLineはTrueにしています。
どうすればいいのでしょうか。
619最凶VB厨房:04/04/01 19:39
textBox1.Text="aaaa\r\nbbbbb\r\n";
改行できますが。
\r\n
>>619
>>620
改行は\r\nなんですか。
\nと思ってました。
どうもありがとうございました。
.exeはどうやって作るの?
623デフォルトの名無しさん:04/04/01 21:16
>>622
拡張子に .exeを付ける。
>>622
Windowsアプリケーションとして作ればふつうにEXEになる。
>>624
ありがと!
どこにあるかがわかってなかった・・・。
フォルダ色々探してたら普通に見つかりました。
>>625
どういたしまして。
627デフォルトの名無しさん:04/04/01 21:38
C#のおすすめの本ってなんでしょう?
>>627
誰にでも薦められる本となると、ちょっと難しいかもしれませんね。
大きな本屋さんへ行って実際に見比べて買ってみると良いんじゃないでしょうか?
いろいろ本屋見回ったんですが
当たり前なんでしょうけどみんな文法の解説なんですよね。
そうじゃなくてメモ帳を作るにはこのコントロール使って作るとか
そういう具体例?みたいなのを示した本ってないんですかね。
gotdotnetのサイトは知ってます。
630デフォルトの名無しさん:04/04/01 22:24
フォームのKeyPreviewをtrueにしていても、
コンボボックスにフォーカス入るとフォームのキーイベントが発生しないんだけど、
これってバグ?
>>629
意外と、そういった本が無いんですよ。
ぼくもそういう本を探しているのですが・・・
ただ、フォームに配置してみれば大体の雰囲気がわかるので
あとはMSDN見れば何とかなりますからね。
逆に、今そういうのがあればヒットしそうなんですよね。
WEBにしろ本にしろ。
俺のところでは、コムボボックスのテキストが変ってもイベントが発生しない
イベント関係はどんでん返しが多いですよね。
よく悩まされます。
MSDNをくまなく見ないとわからないことが多いみたいです。
あっちにはこう書いてあったのにこっちには・・・なんてことが
結構あって苦しいです。
C#で作ったアプリって、WindowsならどのPCでも動かせるの?
>>634
すべてのPCで動くかという意味なら、無理です。
CE機で動くか?とか、98で動くか?とか言う意味なら
動きます。
>>634
.NET Frameworkが導入されている必要がある。
対象は Win98、Me、2000、XP、2003 Server。
>>635-636
ありがとうございました。
作ったアプリにマクロスクリプトを実装しようと思うんだけど、
DelphiのDMonkeyみたいにメジャーなものってある?
DMonkeyとは?
640デフォルトの名無しさん:04/04/02 01:05
ぐふ・・・

DataViewって、DataSetで作成したリレーションは意味無くなっちゃうのね・・・
アセンブラに挫折した俺は、N88BASICでプログラミングに目覚めた。
Cになじめなかった俺は、VBに出会って一人前のプログラマになった。
新人はC++に苦戦していたが、C#に出会って目から鱗が落ちた。
DMonkey知らない?
http://www.google.com/search?num=50&hl=ja&lr=lang_ja&q=DMonkey
Delphiでアプリにマクロ機能つけるときはみんなこれ使うんだけどね。
C#っていうか、.NETでは何使ってるの?
textBoxに値を入力し、その値(int型)を処理に使いたいと思っています。
staticなメソッド内で使おうとしているのですが、textBoxの値をint型に変換しようとするとエラーが出ます。
どうすれば直るでしょうか。

public static int test()
{
int i = int.Parse(textBox.Text); // エラー
}

>>642
知らない

>>643
textBoxもstaticにする
System.Convert.ToInt64()
これ使え。多分いけるはずだ。
コンパイルのたびにノートンがdevenv.exeを警告してくるんですが、スクリプト遮断を
無効にするしかないんですか?
647デフォルトの名無しさん:04/04/02 16:42
正直、VC#のデザイナを どこまで使って、自分でコードをどれだけ書くかっていうのが まずわからないんですけど。
Buttonを配列にしたらデザイナで 弄りにくいし。
メソッドやプロパティも手で書くのと、右クリックして追加するのと どう違うのかもわからない。
private string hoge;
public string Hoge { get{ return hoge; } set{ hoge = value; } }
とやる意味も分かりません。
わかりません。助けてください
>>647
> 正直、VC#のデザイナを どこまで使って、自分でコードをどれだけ書くかっていうのが まずわからないんですけど。
好きにすれば、としか言いようがない。

>  Buttonを配列にしたらデザイナで 弄りにくいし。
手でD&Dするのが面倒な数の規則的に整列したコントロールは配列で、とか。
Tagプロパティで制御するのも手(巧いことやらなきゃよけい面倒だろうが)。

>  メソッドやプロパティも手で書くのと、右クリックして追加するのと どう違うのかもわからない。
なにも違いはない。
私は一々ダイアログを使うより手で書いた方が早いから手で書いてるな。

>  private string hoge;
>  public string Hoge { get{ return hoge; } set{ hoge = value; } }
>  とやる意味も分かりません。
あとで弄るのが容易、とか。
(get {return hoge + "\r\n";}としたり、書き込み専用にしたり)
>>642
Windows Script Controlみたいなものか?
.NETでも同じようなのあると思うけど、
.NETが入っているということはC#コンパイラも入っているわけで、
アプリに自作マクロを登録→裏でコンパイル→コンパイルしたdllを使用
とかでもいいんじゃない?
650デフォルトの名無しさん:04/04/02 19:05
ちょっと前のサーバー壊滅に伴って、
過去ログも全部消えてしまったのね、、、。
とほほ、、、。
いつか戻るのかな?
それは良いとして、マウスカーソルリソースファイルとか、
リソースを扱うのってどこら辺で勉強したら良いですかね?
ビットマップリソースとか、カーソルのグラフィックリソースとかは
全然簡単に扱えるのですが、
カーソルのクリック部分の位置をいじるのがどうもできないようなんですが、、、。
.NETの質問です。
System.Windows.Forms.TreeViewのTreeItemのチェック状態を不確定状態に設定するには
どうすればいいのでしょうか。(チェック付いているけど背景灰色のやつ)
現在はListViewを擬似的にTreeに見せかけて作っています。(ListViewの方では不確定状態にできる)
次期.NET FrameWorkにはそれらしいパラメータがあったんですが・・・。
なにか情報ありませんか?
あげてもあげても釣れない・・・
654638:04/04/03 01:06
自分でも探してるけど、使えそうなモノはないねぇ。
Tips集とかで二重起動防止はよく見かけるのですが、
普通は二重起動防止した上で、既に起動してあるプロセスに情報送ります。
例えば起動パラメータにファイルを指定したらそれを起動してあるプロセスで開いたりとか。
どうやって通信したらいいですか?
.NETで作った sshクライアントが
マクロ機能持ってた記憶があるんだけど名前忘れちゃった・・
>>655
そこでリモーティングですよ……と思って調べてみたけどなんかさっぱりわかんねぇ。
自前でTcpClient/TcpListenerとBinaryFormatterでシリアライズ/デシリアライズするとか。


リモーティングの良い資料ってどっかにないっすか?
658デフォルトの名無しさん:04/04/04 01:11
乱数生成のメソッドを作って、
そのメソッドをメインで100回呼び出します。
そのとき、発生される乱数を全部別にしたいのですが、
全部同じになってしまいます。
やり方を教えてください。
>>658
System.Random r = new System.Random();
for (int i = 0; i <100; i++)
   Console.WriteLine(r.Next());

でなにか問題があるって事?
>>658
全部同じになるのは乱数を出すメソッドを作り、
そのなかでいちいちRandomのインスタンスを作ってるからだろ。
シードとして渡してる時刻が同じなら返ってくる乱数も同じ。
乱数出すのに使ってるRandomはローカルではなく、staticかインスタンスフィールドに汁。

>そのとき、発生される乱数を全部別にしたいのですが、
ArrayListにはContains()という便利なメソッドがあり、C#にはwhileという便利な機能がある。
661デフォルトの名無しさん:04/04/04 03:04
>>659
>>660
ありがとうございます。
>>660さんの指摘の通りでした。
RandomをStaticにしたらできました。

それにしても、C#は難しい。
Cのほうがよっぽど簡単な気がする。
>>661
>  それにしても、C#は難しい。
>  Cのほうがよっぽど簡単な気がする。

一度ちゃんとオブジェクト指向を身につけたらCには戻りたくなくなるよ。
663デフォルトの名無しさん:04/04/04 03:51
>>662
そうなんですか。
確かにオブジェクト指向ってのが難しいです。
頑張ります。
>>646
ノートン対策してもまたすぐに違うところで警告でてくる。
結局ノートン使うのやめるのが一番早かった。
665デフォルトの名無しさん:04/04/04 14:30
Windowsのファイル名やパス名の上限を知るにはどうしたらいいんでしょうか?
C++だと、stdlib.hに_MAX_FNAMEのような形で定義されていたんですが・・・・

それらしい名前空間を探ってみましたが、なかなか見つからなくて困っています。
>>646
>>664

devenv.exeを許可にしてあげたら二度と出てこないと思うが。
入力欄としてtextBoxを二つ用意します。
textBox1とtextBox2です。
プログラムを動かしたとき、最初にカーソルが乗っているのがtextBox1で、
タブキーを押したときにtextBox2にカーソルが切り替わります。
この順序を逆にするにはどうすればいいのでしょうか。
>>667
Control.TabIndex
>>668
物知りですね!
ありがとう!
物知りって・・・w
cygwin で使ってる ssh を c#プログラムから操作したいと考えてます。
sshのプロセスをスタートするところまではよいのですが、
パスワードの入力などがどうしてもプログラムからうまくいっていません。

Process.StandardInput.WriteLine(pass)をつかってパスワードを
入力しようと考えているのですが。。

そもそも、ssh起動後のパスワードの入力を促す文字列
「〜 password:」

が、Process.StandardOutputで読み取れません。
ログイン後の文字列は読み取れるのですが。。

c#プログラムからcygwinのsshを操作してログインさせる方法を
教えて下さい。よろしくお願いいたします。。
>>671
どうもsshの Password: は標準出力には出てないらしいな。
標準エラーか、あるいはコンソール直か。
標準エラーならがんばってリダイレクトすればいけるんじゃないか。
っと。Process.StandardErrorがちゃんとあった。
こっちからも取れないんだったらコンソール直指定だろうから
Password: を取り込むのは難しげかねぇ。
sshのソース見ると、/dev/ttyに書き出しているようでした。
ウィンドウズにどう移植されているか解りませんが、
標準入出力・エラー出力 以外の文字は取り込めないんでしょうか?
675デフォルトの名無しさん:04/04/04 20:15
任意の文字列を指定された文字コード、指定されたバイト数でトリムし、なおかつ
マルチバイト文字が中途半端にならないようにするような関数を作るにはどうすればいい?
例)
文字列="ABCあいうえおかきく"

文字コード=UTF8、バイト数=16を指定されたときの出力="ABCあいうえ"
文字コード=UTF16、バイト数=16を指定されたときの出力="ABCあいうえお"
文字コード=SJIS、バイト数=16をしていされたときの出力="ABCあいうえおか"
676デフォルトの名無しさん:04/04/04 20:31
C#版 STL ってありますか?
>>675
汎用的なのは無理じゃない?
Encoding.GetEncoding("Shift_jis").GetString(new byte[]{0x82})
が空文字列を返さない以上。

>>676
System.Collectionsとかで代用できるよ多分。
678デフォルトの名無しさん:04/04/04 22:55
なにかPictureBoxに大きめの絵を貼り付け、
その上に小さめのPictureBoxを配置している場合で
小さい方に貼り付けた絵の余白を透明処理して
大きいほうの絵を表示させる、ってことができるでしょうか?
>>655
自分がやった時は、うまい手が見つからなかったから、APIのSendMessage
使って逃げた。
680デフォルトの名無しさん:04/04/05 08:21
>>678
できるよ。
消したい絵のカラーを透明色に指定すれば良いんだよ。
透明色にするためのそう言うメソッドとかあるし。
681655だけど:04/04/05 09:23
SendMessageでコマンドラインのstring送れますか?
プロセス違うとポインタがどこ指してるのか怪しくなると思うんだけど。
VSで造れるインストーラって、.NET Framework自体もインストールしてくれるの?
684デフォルトの名無しさん:04/04/05 16:37
C#で関数ポインタってどうやって取得すればいいんでしょう?


>>684
デリゲート
デリゲートでどうやってポインタを取得するんですか?
>>686
デリゲートがポインタそのもの。
で、具体的には何をやりたいのさ。
サブクラス化って奴をC#でやろうと思ったんですが
自前のプロシージャアドレスを渡す術が見つからないのです。
>>688
具体的という言葉の意味をしらんのか。
大体C#で必要なことなのかそれ。
ドラッグしている間だけ特定のコントロール上のみ移動可能、みたいな
カーソルの移動制限を付ける方法がなにかあるでしょうか?
>>689
えぇ?
だからサブクラス化するときにプロシージャのアドレス渡す必要があるっしょ?
サブクラス化って手法の意味しらんのか。
大体必要じゃないならきかんだろぼけ。
692デフォルトの名無しさん:04/04/05 22:23
>>691
プロシージャのアドレスを渡す代わりに出利ゲートを渡す
プロシージャのアドレスを記憶しておく代わりに出利ゲートを記憶する
>>691
漏れが知ってるサブクラス化の手法とやらでは
プロシージャのアドレスを渡す必要はないのだが、
具体的にどんな状況でそれが
必要になるのかご高説賜れないだろうか。
二重起動を防止し、コマンドラインを既存プロセスに渡す(VB)
http://www.codeproject.com/vb/net/singleinstance.asp
695679:04/04/05 23:46
>>681
送り先のウインドウハンドルは同じくAPIのFindWindowでクラス名とウイン
ドウタイトルを指定して特定します。クラス名はあらかじめGetClassName
で調べておきます。送信する文字列はStringBuilderに格納しておいて
SendMessage(FindWindow(クラス名,ウインドウタイトル),
    WM_SETTEXT,0,送信する文字列);
てな感じで文字列を送信することができるはずです。
696デフォルトの名無しさん:04/04/05 23:52
VBで作ったActiveX DLLをC#のフォームから呼び出したら
「モードレスフォームは表示できません」って出てるんですが
どうやって回避すればよいのでしょうか?

C#のメインフォームはモードレスであることは確認したのですが…
SetWindowLongでプロシージャのアドレス再設定する以外に方法あるのか・・・
知らなかったよ。
でも質問の内容の答え知らないならスルーしてくれんだろうか。

元々
"C#"

"関数のアドレスを取得する方法はありませんか?"
って具体的に聞いてるのだけど。何に使うのかとか、C#での必要性とか語りはじめたら
長文になるっしょ・・・・

>>692
デリゲートのような機能を欲してるわけではないので。
でもThx.
>>690
WinAPI に ClipCursor なんてのがあるが、C# は知らん。
.NETにないコントロールをサブクラス化したいんだろ
700693:04/04/06 01:03
>>697
>って具体的に聞いてるのだけど。何に使うのかとか、C#での必要性とか語りはじめたら
>長文になるっしょ・・・・
何に使うのかがわからんと答えようがないから聞かれてるんだろぼけ。
どんな目的のために"関数のアドレスを取得する"必要があるのかで手段が異なる。

>デリゲートのような機能を欲してるわけではないので。
デリゲートで事足りる。
APIではLONG型だからといって必ずしも、C#でも
Int32やIntPtr宣言する必要があるとは限らない。
アンマネージとの付き合い方を勉強しなおして
「サブクラス化するときにプロシージャのアドレス渡す必要がある」とか
言っちゃうその頑迷な頭をほぐしてこい。
701デフォルトの名無しさん:04/04/06 04:11
Perlのpack,unpackのような処理をC#で行いたいのですが。
>>697
WndProc のオーバーライドね。

で、Delegate 宣言しておいてその関数を API に渡すことで、関数ポインタ取得の
代わりにするか、unsafe で & オペレータを使うか。
>>701
ようわからんが、
System.Text.Encoding.ASCII.GetString(byte[])
System.Text.Encoding.ASCII.GetBytes(string)
あたり?
ちなみに単に基数の変換なら(2進数>10進数とか)
System.Convert.ToString(int, int)
System.Convert.ToInt32(string, int)
704名無し:04/04/06 08:24
教えてください。
WinXP ProにてC#を勉強したいと思ってます。
ASP.NET Webアプリケーションを作成しようとすると
ASP.NET Ver1.1が実行されてません というメッセージが出ます。
ASP。NETをダウンロードすればこの問題は解決しますか?
それとも他に何か問題があるんでしょうか?
分かっちゃいるが
お前の態度が
気に入らない
706デフォルトの名無しさん:04/04/06 11:03
>>704
C#.net2003スタンダードが1万くらいだから、これ買えばよいと思う。
C#をやるなら、ASP.netより普通にWindows.Formから入ればいいと思うが。
Net1.1はWindowsUpdateから落とせるはず。
ASP.netはProのIISがインストールされてる必要あり。
ヘルプっちゅうのかMSDNっていうのか、
それだけdwonload出来るのでしゅか?
>>707
まず日本語と英語を勉強しようや。
>>702
しつこいんだはげ。でもさんくす。
>>702
あなたにもさんくす。
>>709
落ち着け。
711ひろ:04/04/06 15:18
メニューの開くからダイアログBOXを表示して
ファイルを開いて表示させたいのですが
openFileDialog1.ShowDialog();
と入力しダイアログBOXは表示出来たのですが
そのあとピクチャBOXに表示する処理が分かりません。
どなたかご指導願います;;
Bitmap bmp=new Bitmap(16,16);
Graphics g=Graphics.FromImage(bmp);
g.FillRectangle(Brushes.Black,0,0,16,16);
g.DrawLine(Pens.White,0,0,16,i++%16);// static int i=0;
IntPtr hico=bmp.GetHicon();
Icon ico=Icon.FromHandle(hico);
notifyIcon1.Icon=ico;
ico.Dispose();
DeleteObject(hico);
g.Dispose();
bmp.Dispose();

を繰り返しながらタスクモニタ見るとGDIオブジェクトもりもり消費するんですが
どこがまずいですか?
>>706
>>704が勉強する為だけならC#Builder Personalで
充分だと思ったりするんだがどうでしょ?

いやまぁ、.NET Framework SDKとメモ帳だけでも
いいんだろうけどね、15年前の俺なら兎も角、今と
なっては気の利いたRAD環境が無いと駄目だわ俺…
っていうか、C#って勉強以外に用途あったっけ?
>>715
っていうか、勉強って用途なのか笑った。
クラスのインスタンスが同一かどうかを調べる方法がわかりません。
Cだと、 if( &instance_A == &instance_B ) のようにアドレスを区別することで
区別できると思うのですが、C# ではどうやったらいいのでしょうか?
718717:04/04/07 00:42
すいません。解決しますた。_| ̄|○
719デフォルトの名無しさん:04/04/07 00:51
自己解決するんならはじめから書くなアホ
>>719はスルーよろ。
721デフォルトの名無しさん:04/04/07 03:21
>>718
ちなみにReferenceEqualsと==どちらを使った?
ComboBoxのドロップダウンリスト部分の各行を一段下にずらす方法はないでしょうか?

と言うのも、オーナー描画でリスト部分をカラム分けしてみたんですが、
せっかくだからカラムヘッダーを表示させようとして、つまってしまいました。
Application.EnableVisualStyles();
を適用しているフォームに設定した
notifyIconのショートカットから
openFileDialogを呼び出すと
ヴィジュアルスタイルが適用されません。
仕様なのでしょうか?
何か対策方法があれば教えてください。
m(_._)m
マニフェスト書け
726723:04/04/07 10:13
>>723です。
レスありがとうございます。
無事マニフェストで解決できました。
m(_._)m
727723:04/04/07 10:30
何回もすいません。
>>723で書いたように
notifyIconのショートカットから、
openFileDialogを呼び出すと、
モードレスっていうんですか?
Showメソッドで呼び出したような動きになります。
これも仕様なのでしょうか?

だとすれば実装しない方がいいのかなぁ…。
フォームのTopMostをtrueにしている場合つらいです。
>>727
Formの方にNotifyIcon絡みのプロパティがないことから分かるように、
内部的に別プロセスで動いてるからねー。
Invokeでも無理だし。
729727:04/04/07 11:37
>>728さん、レスありがとうございます。
やはり仕様ですか。
>内部的に別プロセスで動いてるからねー。
なるほどです。
フォームを閉じた後でもアイコンだけ残っていることが
あるのですが、これもそう言った事からと納得しました。
そういうときはメインのフォームにパブリックメソッドを作り、
アイコン側からメソッドを呼ぶ。
メソッドがダイアログを開く。
とやればいいんじゃない?試してないけど。
C#でDLLを作る方法がわかりません。簡単な方法がありましたら
教えて下さい。お願いします。
>>730
VSのIDEを使ってる場合、たいていは
NotifyIconのイベントハンドラはFormのメソッドなわけだが。
>731
MSDNライブラリ見れ
734727:04/04/07 17:35
>>730さん
>>732さんの言うようにopenMainMenu_Click(sender,e);と、
メインメニューの「開く」イベントハンドラを呼んでいます。
で、直接openFileDialog.ShowDialog();としてみたのですが、
動作は同じでした。
Form.Activateしてもだめ?
だめ
defineで定数切れないみたいですが、
なにか変わりになる方法ってありますか?
切るって何だ?

数値、enum、stringならconst
それ以外ならstaticフィールド
c# builderPersonal download edition を落としてきたんですが、
これで開発したアプリって他のPCでも起動できます?
>>739
他のPCに.NET Framework実行環境をインストールすれば
起動出来る。
>>733
ありがとうございます。MSDNを昨日は見てみたのですが
それらしきものが発見できず見落としていたようです。
>>740
おお、そうなんですか。
dobon.net/vb/dotnet/links/freedotnetide.html
に、作成したあらゆるものを配布できないようだとあったので、
混乱してしまいました。

ありがとうございました。
>>742
あ〜、確かにライセンスに

>※無償で提供するPersonalのダウンロード版では、商業開発および作成したプログラムの第三者への配布はできません。

って書いてるね。
じゃ無理だね。
tabControl1に動的に作ったTabPageを、マウスのmiddleボタンを押されたときにマウス座標のTabPageをRemoveしたいんですがやり方がわかりませんでした。
今は変わりに
tabControl1.TabPages.Remove(tabControl1.SelectedTab);
でやってるんですがマウス座標のTabPageをRemoveする方法を教えてほしいです。
お願いします。
>>734
openFileDialog.ShowDialog(this);は?
フォームやパネルの上を可動のコントロールの位置を
終了時に記憶させ、再起動時に終了時の位置に表示することができるでしょうか?
>>746
自前でiniファイルとかに終了時の設定を書き出し、起動時に読み込んで設定する。
レジストリに書き出しても良いし。
>>746
XMLでやりましょう

.NET Framework におけるアプリケーション設定の永続化
http://www.microsoft.com/japan/msdn/net/general/persistappsettnet.asp
C#の使い方がだいぶ分かってきたから、今C++やJavaと
速度比較(ベンチマーク)を取らせて見ている。

一次元配列や実数を扱う計算はC++の半分かそれ以上の
速度は出るみたいだが、整数を扱わせるとかなり遅い。
Javaよりはかなり速い。JITコンパイラが効いている。

メモリリークがないのはJava同様素晴らしいと感じた。
メモリはバカ喰いだがJavaとどっこいどっこいか。

一番困るのはunsafeでついついポインタに手を出したくなる
所。それからC++のコンテナやSTLに相当するものがまだまだ
貧弱だ。

Win32とのインターフェースが面倒くせー。しかし使えるだけ
増しとしよう。糞Javaに比べれば。

というわけで業務で使えと言われたら使うが、個人的には
あまり魅力を感じない。でもC++よりは使いやすいから初心者
はC++をパスしてC#に行くようになるんだろうなー。
しかしやはり正規表現クラスやStringTokenは魅力的だ。
C++だとboostを使わないとライブラリとしてリンクしないと
いけない。

但しManeged C++として.Netで使うならばC++でも利用で
きる。しかし速度は遅くなる。うーむ。
日記でつか?
このスレは日記に決めました。
>JITコンパイラが効
ってどういういみ?
>>753
ネイティブコードは速い、って意味じゃね
>>745さん
レスありがとうございます。ばっちりオッケーでした。
いまいち原理が分かっていなかったりするのですが、
これから調べてみます。ありがとうございました。
まあJAVAでもJITコンパイルしてるわけだが。
さーてRegexクラスでも使ってCGIを書くか。
このスレは日記に決めました。
ウィンドウズメッセージを処理する非表示ウィンドウって作れますか?
自分がやってみたところ、ShowしないとWndProcが働かない、Showすると邪魔って感じです。
>>755
モーダルで表示されてる状態でもNotifyIconから
コンテキストメニューが表示できたりしてないかい。

>>759
NativeWindowとか。
761755:04/04/08 18:40
>>760さん
思いっきり表示してます。
しかも選択できてたりします。^^;;
完成したと思っていたのに、こんなところに穴があったとは…。
とりあえずNotifyIconに設定したショートカットメニューの
問題のある箇所のEnabledプロパティを設定して回避しました。
ありがとうございました。
C++では定数みたいなのを#define hoge 0x04 てな感じで書けたけど、C#では
public const int hoge=4; みたいに書くの? C#では#defineで値を入れられないって
MSDNに書いてあったんだけど。
まあそんなかんじ。
764デフォルトの名無しさん:04/04/08 20:36
質問いいですか?たくさんあるんで申し訳ないですが

(1) C# じゃ C++ と enum の書式が違うんですか?
どうしてもエラーになってしまうんですが。
# C++はかじった程度なので、自分の方が間違っているに 300ペリカ賭けときますね

(2) プログラムバージョンってどうやって取得するんでしょうか?
「ヘルプ(H)/バージョン情報(V)...」 みたいなの作りたいです。
あと設定の方法も教えてもらえれば幸いです。

(3) .NETの言語は、中間言語にコンパイルしますが、
プログラム中に、何かにアクセスする時に必要になるようなパスワードを
書いておくときに、今までのC++などでのソフトと比べて 危なくないですか?
> (3) .NETの言語は、中間言語にコンパイルしますが、
> プログラム中に、何かにアクセスする時に必要になるようなパスワードを
> 書いておくときに、今までのC++などでのソフトと比べて 危なくないですか?
んなもん、中間言語は関係ない。普通に書いたらC++でも同じように危ない。
>>764
>  (1) C# じゃ C++ と enum の書式が違うんですか?
>  どうしてもエラーになってしまうんですが。
>  # C++はかじった程度なので、自分の方が間違っているに 300ペリカ賭けときますね

ならヘルプを見ろよと思うけれども一例。

enum Hoge { A = 1, B = 2, C = 4, D = 8}
Hoge Foo = Hoge.A;
>>764
> (2) プログラムバージョンってどうやって取得するんでしょうか?
> 「ヘルプ(H)/バージョン情報(V)...」 みたいなの作りたいです。
> あと設定の方法も教えてもらえれば幸いです。

AssemblyInfo.csのAssemblyVersionでバージョン設定。
Application.ProductVersionでバージョン取得。
スクリプト処理のために二つの画像を重ね合わせて
加減算させることってできますか?
少なくとも力任せに1ピクセルずつ加減算させることはできるな。
具体的には・・・?
public Color Bitmap.GetPixel(int x, int y);
public void Bitmap.SetPixel(int x. int y, Color color);
772デフォルトの名無しさん:04/04/08 23:59
ArrayList に自前のオブジェクトを入れているのだけれど、ArrayList のインデクサが
Object 型しか返さないので ArrayList を継承した自前オブジェクトを作ったけど
インデクサがうまく出来ないよ。

MyClass myObject = new MyClass();
MyArrayList myList = new MyArrayList();

myList.Add( myObject );

Console.WriteLine( myList[ 0 ].MyProperty );

public class MyArrayList : ArrayList
{
public new MyClass this[ int index ]
{
get
{
return this[ index ];
}
}
}

これだとコンパイルは通るけどランタイムエラーで
System.StackOverflowException がでちゃうよ〜。
>>772
return (MyClass)base[index];
ImageList内に設定した画像の順番を入れ替えることって
できますか?
>>772
ArrayListでなくCollectionBase使おうか。
776デフォルトの名無しさん:04/04/09 01:05
>>773
ありがとん。できました。

>>775
こっちもみてみます。
+=を使ってイベントハンドラを指定するのに、
動的にやっていると、二重に入ったりしませんか?
既に割り当てられていれば+=しない、みたいな書き方は出来ないですか?
ツールバーボタン上にカーソルを動かしたとき、
ステータスバーにヒントを出したいのですが、
どのボタンの上にいるか特定する方法を教えてください。
>>777
イベントは外部からは触らせないようにできてるのでおそらく無理。

そのイベントを持つクラスの側で、eventをaddとremoveとデリゲートで
チェックすればできるかもしらない。
>>778
MouseMoveとかMouseHoverで

foreach (ToolBarButton b in toolBar.Buttons)
{
   if (b.Rectangle.Contains(x, y))
      return b;
}
>>777
私も始めはイベントハンドラを動的に追加削除してたけど、
今は始めに全部追加してから各イベントハンドラ毎に
フラグを立て降ろしでチェックするようにしてる。
>>780
できました!感謝!
それにしても標準ツールバーは不便ですね。
MS製アプリは独自描画が多くてコモンコントロールなんて使わない。
自社で使う気のないツールバー、コモンダイアログ、メニューなど、.NETでは糞。
かといって自社で使う気のコントロールを.NETで公開しない。
せめてIDEを公開したらIDEと同じインターフェイスを作れるコントロールを用意して欲しい。
そんなの見た目だけじゃん
PropertyGridとか。
見た目はあきらめてオーナードロー、
しかし動作はあきらめてWin32というわけにはなぁ。
DoDragDrop中に右クリックでキャンセルしたいのですが、
どこに書けばいいですか?
788デフォルトの名無しさん:04/04/10 16:45
mp3のタグ情報を得るにはどう書けばいいですか?
>>788
shell32.dllを使う方法が挙げられてるな。
ttp://www.vector.co.jp/vpack/filearea/data/writing/dic/name/index.html
>>789
サンスク
タブコントロールの外観をフラットボタンにすると、
ダブルクリックイベントがダブルクリックで発生せず、
もう一回クリックすると発生します。
解決法を知っている方がいたら教えてください。
Panelの縁をPaintイベントで書き、その中のコントロールをDock=Fillにしたいのですが、
中のコントロールがPanelいっぱいに広がって、縁を上書きしてしまいます。
縁部分の内側までしか大きくならないように制限する方法を教えてください。
794デフォルトの名無しさん:04/04/11 18:29
>>793
Panelの大きさが変化したら、その一回り小さい大きさを中のコントロールに設定しる。
もちろんDockはFillじゃだめ。
795793:04/04/11 18:54
DockじゃなくてAnchorいじれってことですよね
796デフォルトの名無しさん:04/04/11 20:13
このスレを見たことでC#厨のれべるの低さがよくわかりました。
797793:04/04/11 20:55
>>794-795
それじゃダメです。
作ったコントロールを使う側が、使い方を考えなきゃいけないのはよくないからです。
>>793
DockPadding
799デフォルトの名無しさん:04/04/12 03:00
文字列からHTMLタグを消去するメソッドって無いんでしょうか?
>799
そんなぁベンリなものは無い
HTMLタグも文字列ということを認識してくだはい
>>799
string result = System.Text.RegularExpressions.Regex.Replace(input, @"<[^>]+>", "");
>>800
無いならコード書くまでだが・・・
.netの売りってクラスライブラリの充実だと思ってたのに、
web系はあまり力入れてないのかな。
と思ったら、正規表現でこんな簡単に出来てしまうのか。
ありがとう801
804デフォルトの名無しさん:04/04/12 09:12
>>799はPHP使い
>>799
Perlを使えばできるよ。
このスレにいるC#厨はアンチUNIXな無知な厨が多いから
このスレで聞いても無駄だよ。
>>801
HTMLにJavaScriptコードがかかれていると誤爆する。

>>802
HTMLパーサーを使えばいい。具体的にどれかは知らないがActiveXでもあるので.NETにもあるはず。
IEコンポーネント(WebBrowser)相当のオブジェクトとかで検索していけば見つかると思う。
DOMオブジェクトを取得してinnerTextプロパティとかで取得することになるのかな?
>>805
PerlスレでC#のでのやり方を聞かれたいの?w
どうせC#でも使える正規表現でのやり方か、
C#でも使えるHTMLパーサーでのやり方でしょ。
C#を知らないのならじゃま。帰った帰った。
C#にもJavaでPerlライクな処理をできるJakarta OROのC#版があればいいのにね
C#厨は短気だなあ・・・
>>808
あったとしてもHTMLにJavaScriptコードの不等号が含まれている場合は無理。
どうしてもほしけりゃPerl.NET経由でライブラリを作ればいい。
J#を使うという手もあるかもね。

>>809
は? どう見てもPerl厨はじゃまでしょ?
それを指摘したぐらいで・・・。どちらが短気なんだか。
>>807
連中の危機感の裏返しだ。
察してやれ。

危機なのは別にC#のせいじゃないけど。
>>805
> Perlを使えばできるよ。
で、君が言いたいPerlを使う場合のやり方は何?
もったいぶったのだから、C#使いが知らないような
すごいやり方を教えてくれるのだろう?
813デフォルトの名無しさん:04/04/12 12:03
祝! 復活記念!

C♯って死滅しちゃうの? Part18
http://pc3.2ch.net/test/read.cgi/prog/1081738694/

C#スレ復活おめでどう。
マイクロソフトのTCO調査は本当に信用できるか?
http://pc5.2ch.net/test/read.cgi/tech/1081730818/

これを見ているとMSがJ2EEと.NETとを比較した例も信用できないんだよね。
かといって第三者の比較結果もないから、
間違いだと言い切れないところが悔しい所だけど。
コピペでスレを荒らすドトネト厨
PictureBoxのサイズをフォームみたいに
ドラッグアンドドロップで変更することってできますか?
>>816
標準では、DockやAnchorを使ってFormに追従させるしか無いんじゃないかな。
>>816
もちろん
>>814
ドトネト厨、そういうレスをコピペするなよ。
自分の仲間のスレを荒らしてどうするんだよ
ImageListの完全な複製の仕方を教えていただけませんか?
まんまイコールではだめみたいです。
821デフォルトの名無しさん:04/04/13 00:22
ActiveDirectoryから現在ログインしているユーザの
ユーザIDを取るにはどうすればいいの?
例えば、ファイル名がHoge.bmpで、ユーザーの入力がHOGE.BMPだった場合、
ディスクにある名前と同じケースに修正する方法を教えてください。
>>822
状況がわからんが、両方ToLower()で比較して等しければuserInput = fileNameとしてやればいいんじゃないかね。
824デフォルトの名無しさん:04/04/13 02:13
任意の整数の数列を打たせて実行した時、
三ケタごとにカンマを入れるようにしたいのですが
なにとぞ良い知恵をお願いします。ポインタでこんがらがってます。
>>824
int a = 2134;
Console.WriteLine(a.ToString("n0"));
>>821
Sambaを使う。
ビットマップやイメージオブジェクトの特定の色の部分を
別の色で置き換えしたいのですが、どうやればいいのでしょうか?
>>827
BitmapならSetPixelで。
お礼がないのは解決してないから?
830デフォルトの名無しさん:04/04/13 11:48
さあねえ
>>826
玄箱を買えば解決するよ。
複数のオブジェクトを連続でクリックして、
その脇に何番目にクリックしたかの数字を
ツールチップみたいにちっこく表示させたいのですが、
何かいい方法がないでしょうか・・・?
DataGridコントロールで、行数が増えた時に
自動的に縦スクロールバーが登場してくれる
ようにしたいんですがどうしたらいいんでしょう?
>>832
動的にLabelを作るとか。
Labelを継承した適当なコントロールの方が良いかな。
タイマを内蔵して一定時間後に自動的に消えるコントロールとか。

>>833
System.Windows.Forms.DataGridなのかSystem.Web.UI.WebControls.DataGridなのかどっちだ。
835833:04/04/13 20:57
>>834
System.Windows.Forms.DataGridです、スマソ。
>>835
デフォルトでスクロールバーが出るはずだけど?
つかスクロールバーを出さなくさせることこそできるのか?
837デフォルトの名無しさん:04/04/13 22:54
ttp://dobon.net/vb/dotnet/graphics/scrollimage.html
でスクロールバーを付けて画像を表示しました。
そこでスクロールバーを触らずに
表示されてる領域を動かしたいんだけど
どうすればいい?
>>837
Panel.AutoScrollPosition
System.Windows.Forms.DataGridのセルのひとつを
編集不可にしたり、色を変えたりしたいのですが
どうすればいいんでしょうか?
>>839
DataGridTextBoxColumnを継承したクラスを作って、
CommitやPaintTextをオーバーライドして希望の処理を追加。
あとはDataGridTableStyleクラスの解説を良く読んでDataGridにスタイル設定。
841 :04/04/14 00:51
エクスプローラのように、ファイルの拡張子から
種類を取得するにはどうしたらいいですか?

例)
ビットマップ イメージ
Microsoft Word 文書
>>841
public static void Main(string[] args) {
   const uint SHGFI_TYPENAME = 0x400U;
   SHFILEINFO info;
   string path = @"c:\test.doc";
   if (SHGetFileInfo(path, 0, out info, (uint)Marshal.SizeOf(typeof(SHFILEINFO)), SHGFI_TYPENAME) == IntPtr.Zero)
      w("error");
   else
      Console.WriteLine(info.szTypeName);
}

[DllImport("shell32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr SHGetFileInfo(string path, int attributes, out SHFILEINFO info, uint infoSize, uint flags);

[StructLayout (LayoutKind.Sequential, CharSet=CharSet.Auto)]
public struct SHFILEINFO {
   public IntPtr hIcon;
   public int iIcon;
   public int dwAttributes;
   [MarshalAs(UnmanagedType.ByValTStr, SizeConst=260)]
   public string szDisplayName;
   [MarshalAs(UnmanagedType.ByValTStr, SizeConst=80)]
   public string szTypeName;
}

ところで個人的にはWin32APIの構造体とかのメンバの表記をそのまま書くのは嫌いだ。
szTypeNameじゃなくてTypeNameと書きたい。
おっと、
else
   w("error");

else
   Console.WriteLine("error");
だな。
844 :04/04/14 01:52
>>842
サンクス!
別のスレで質問してみたんだけど
なんとなくスレ違いな気がしたのでこっちで質問です
マルチポストになってしまって申し訳ない

C#で書いたアプリを配布する時のインストーラなんだけど
アプリのインストール時に
MDACと.NET Frameworkも自動でインストールできるようにしたいんだけど
やり方わかる人居ない?
.NET Frameworkは何とかできるようになったんだけど...
マージモジュールが何たらって書いてあるんだけどいまいち良くわからんです
>>842
>szTypeNameじゃなくてTypeNameと書きたい。
同意。

つか、.NETで使うなら同じ名前にする必要はない気がする
同じ名前の構造体を作るが、別にプロパティで簡単な名前を付け、
マーシャリングを行うgetとsetを書く。
>>848
それ(・∀・)イイ!
tryの中でreturnしちゃった場合、finallyはどうなりますか?
catchの中でreturnしちゃった場合、finallyはどうなりますか?
>>850
必ず(returnする前に)実行される。
チェックボックスと、それに対応するテキストボックスがあり、
チェックボックスのCheckedプロパティの状態と
対応するテキストボックスをEnableプロパティを同期したいのです。

しかし上のような例のものが大量にある場合、
各チェックボックスのイベントで
this.TextBox2.Enable = this.CheckBox2.Checked;
とずらずら書いていくのは大変です。

共通のメソッドで、どのチェックボックスの
Checkedプロパティが変化したのかを判断し、
対応するテキストボックスのEnableプロパティに反映させるには
どういった手法をとれば良いのでしょうか?
初心者ならsenderかTagだろうな。
もうちょっとがんばればIExtenderProviderで。
854デフォルトの名無しさん:04/04/14 12:21
>>852
senderで呼び出したオブジェクトを特定して、後はtagを上手に使えばOK
TextBoxやCheckBoxを配列にしてその添え字にtagを利用する。
>>854
senderを使えばTagの出番は無いような。
856850:04/04/14 12:35
わかりません。

try
{
...
return Hoge(fileStream);
}
finally
{
fileStream.Close();
}

ストリームを読むHoge()を呼んでreturnする場合、
Hoge()を実行してからfinallyに逝きますか?それともfinallyが先ですか?
>>856
それくらい自分で試そうよ。
>>856
using System;
public class Test {
  static int test2() {
    Console.WriteLine("test2");
    return 2;
  }
  static int test1() {
    try {
      Console.WriteLine("try");
      return test2();
    } catch (Exception) {
    } finally {
      Console.WriteLine("finally");
    }
    return 5;
  }
  static void Main() {
    Console.WriteLine(test1());
  }
}
---- 実行結果 ----
try
test2
finally
2
859850:04/04/14 15:58
大変参考になりました。
860845:04/04/14 17:18
>>846
ありがとう
何とか出来そうな気がしてやってみてるんだけど...
やっぱり良くわからんです

MDACのインストールに関しては
起動条件を設定して
インストール時にメッセージを出して
ユーザにインストールを促す方法と
必要であれば自動でインストールしてしまう方法の
2通りのやり方があるってことなのかな?

できれば自動でインストールできるようにしたいのだけど
可能ならもう少し教えてもらえませんか?
昨日DataGridコントロールについて質問した者です。
スクロールバーの問題は解決したのですが、
ユーザーがグリッドに入力したものをプログラム内で
取得したいのですが、dataGrid[1,1]のようにしたところ
InvalidOperationException例外が発生して、DataTableに
連結されていないDataGridから読み取ることはできないという
エラーメッセージが発生したのですが、これの原因はなんでしょう?
Crystal Reportsってメジャーなソフトなのかと思ったら、解説サイトとか極端に少ないね。
別に、国内ではメジャーでも無いのかね・・・
>>862
それなりにメジャーでは在ると思うけど
VBとかにも昔からバンドルされてたしね
ただ、自分の周りでは使ってる人はほとんどいなかったけどね
最近の、それも製品版はどうなのかわからないけど
昔のバンドルされてた奴はカナリ使いにくかった
VSでコンパイルして300KBくらいのバイナリが出来るのに、
コマンドラインでcscを使うと50KBのバイナリになりました。
できあがったモノはまったく同じように動作しているようです。
一体何がこのようなサイズ差をもたらしたんですか?
オプションはこれだけです。
/t:library
/out:bin\make\foo.dll
/optimize+
*.cs
865デフォルトの名無しさん:04/04/15 22:17
>>862
自分でコード書いたほうが、結局見通しがよくて好きなのだが・・・。
Crystalに限らず帳票ツール使っている?
>>865
帳票ツールはWingReportが結構お気に入り
基本的に単票形式のツールなので
自由度が高い
全部自分でコードを書くとなると罫線とかのデザイン部分は
結構(カナリ)負荷が大きくなるんだけど
その部分だけはツールに任せるみたいな感じで使えるのが良いと思う

まぁ好みの問題かもしれないけどね
onPaintイベントの無いコントロール(ツールバーやメインメニュー)の
外観を独自に描写するにはどうすればいいでしょうか?
TextBoxなどで、文字カーソルを挿入から上書き状態に変える方法ってないですかね。
>>867
MainMenuやContextMenuは
MenuItemの派生クラスでOwnerDrawをtrueにした上でOnMeasureItem&OnDrawItemをオーバーライド。

ToolBarは普通にControlから派生してるけど?
>>869
ありがとうございます!
早速試してみます。
クラスウィザードにイベントの追加がないんですが、どうやって書くんですか?
>>871
もちろん手で書く。
一々クラスウィザード使うだなんて非効率な。
873デフォルトの名無しさん:04/04/18 21:50
指定したパスがファイルなのフォルダなのか区別するメソッドを持つクラスってありますかね?
例えば

string path1 = @"C:\Windows";

if (Hoge.IsFile(path) == true)
{
 MessageBox.Show(paht + "はファイルです");
}
else
{
 MessageBox.Show(paht + "はフォルダです");
}

みたいな感じで。この場合は「フォルダです」表示になりますね。
URLクラスに"IsFile"というメソッドがあるんですが、これは違うみたいです。
>>873
File.Exists()とDirectory.Exists()使うしか無いと思う。
まあFileクラスやDirectoryクラスのメソッドでtry-catchでもいいけど。
>>873
System.IOのFileInfoクラスのAttributesプロパティで
FileAttributes.Directoryの値を持っているか

System.IOのFileクラスのGetAttributesプロパティで
得られたFileAttributesがFileAttributes.Directoryの値を
持っているか
876873:04/04/19 10:42
ありがとうございます。
AttributesでOKでした。

Attributesから値を取り出すには&でマスクする必要があるんですね。
最初はそれが分からず、混乱してしまいました。
右クリからのコンテキストメニューのイベントで、
メニュー項目でなく右クリックしたオブジェクトの情報をsenderにして
発生させることはできますか?
>>877
それはsenderの役目ではないので、
((ListView)(((MenuItem)sender).GetContextMenu.SourceControl)).SelectedItem
などで取得しましょう。
> ((ListView)(((MenuItem)sender).GetContextMenu.SourceControl)).SelectedItem

あ、ちょっと間違い。
((ListView)(((MenuItem)sender).GetContextMenu().SourceControl)).SelectedItems[0]
メニューをオーナードローしているのですが、
サブメニューの三角マークを勝手に描画されて困っています。
コレを描画させない方法を教えてください。
>>880
少なくともManagedの範囲じゃ無理だな。
多分Win32APIでも無理じゃないかな。
>878
あんがと(*^ー゚)ノ
参照しているアセンブリのバージョンが違っているとき、
必要としているアセンブリとそのバージョン一覧を表示死体のですが、
そのアセンブリも開発中なのでバージョンアップが頻繁で、
リテラルで持つのは抵抗があります。
なんとか、そういう情報をズバっと取得できないかな?
884デフォルトの名無しさん:04/04/20 15:49
現在スマートクライアントを作成しています。
そのなかでDrag&Dropをしたいのですが、コントロールの
AllowDropプロパティをtrueにすると、それだけでエラーが
出てしまいます。
これをうまく回避する方法はないでしょうか。
あと、Focusメソッドでコントロールにフォーカスを渡したときも
実行時エラーとなってしまいます。

スマートクライアントって凄いですね。でもこのエラーは
よくわかりません・・・

どなたか解決方法をお教えください。
よろしくお願いいたします。
>>883
いいやり方は思いつかないので原始的に。

アセンブリ名でファイル検索、
見つかったらアセンブリかどうかをチェックしてリフレクションで取得。

ちなみにアセンブリのチェックについてはここ参照。
http://blogs.msdn.com/suzcook/archive/2004/03/17/91715.aspx
886885:04/04/20 16:41
必要なアセンブリ一覧は Assembly.GetReferencedAssemblies で。
887名無しさん♯:04/04/20 16:53
こりゃあすげぇわ。( ゚д゚)ポカーン

http://pinvoke.net/
フォームの背景に画像を使ってるんですが、
メニューバーの部分だけ背景画像が表示されません。
メニューバーの背景を透過、あるいは描写するにはどうしたらよいでしょうか?
オーナードローするしかないでしょうか?
889デフォルトの名無しさん:04/04/20 19:25
>>887
怪しげなサイトかと思ったら、ほんとにすごいですね。
英語なのでどうでも良いんですが。
890デフォルトの名無しさん:04/04/20 19:26
>>887
日本語で書き込んでもいいのでしょうか?
>>890
UTF-8だから書けるね。
親フォーム ParentForm において、

ChildForm c = new ChildForm();
c.Show();

のように子フォームを表示しています。MDI というわけではないです。

で、その子フォーム(ChildForm c) が閉じられた時に、閉じられた事を
親フォームが関知して処理を行ないたいのですが、どのようにしたら実現できるのか
方法がわかりません。

delegate や event など調べてみましたがどう使っていいのか
いまいち理解できませんでした。

上記機能を実現する方法をアドバイス頂けないでしょうか?
>>892
c.Closed += new EventHandler(ChildFormClosed);
として、
private void ChildFormClosed(object sender, EventArgs e) {
}
894892:04/04/20 21:48
>>893 できました。
なんか自分が情けなくなってきました(w
ありがとうございました。
データベースに連結しているフォームで、レコードが更新されるときに
入力値の検証をさせるのって意外と難しいですね。
タイミングばっちりのイベントはあるんだけど、それをキャンセルさせる手段が無い・・・。
>>895
ん?ValidatingイベントでCancelEventArgsが飛んで来ない?
リストボックスのアイテムにコンボボックスを埋め込むにはどうしたらいいのでしょうか?
こんにちは。

マルチディスプレイ用スクリーンセーバーを作成したいのですが、
マルチディスプレイ以前にスクリーンセーバーの作り方が全く
解りません←おぃ

C#でスクリーンセーバーを作るためのヒントとなるようなサイトを
ご存知の方がいましたらお教えください。
よろしくお願いいたします。

あ、あとマルチディスプレイについても・・・(汗

できたら必ずフリーで公開いたしまする・・・
実行ファイルの拡張子EXEをSCRに変えるだけ。
ブツはそれぞれ好きなように実装しろよ。
>>898
System.Windows.Forms.Screen
>899

どちらかといえば実装の方でサンプル等あれば助かります。
(プレビュー部分とか起動状態とか・・・)

>900

感謝です!
なるほど、それぞれのスクリーンと、合成したスクリーンが得られるんですね。
マルチディスプレイの設定を色々変えて試してみます。

あぅ、合成したスクリーンではありませんでした。
相対座標ですね。
ふむふむ・・
自らが、/debugオプションでビルドされたかどうかを判断し、
実行時の動作を変えたいのですが、どうやって知るのがいいのでしょうか?
>>903

#if DEBUG
MessageBox.Show("これはデバッグ版です");
#endif

とか
因みにcsc.exeでコンパイルする場合/d:DEBUGオプションが必要。
つか/debugかどうかじゃなくて/d:DEBUGかどうかを判断するんだけど。
906903:04/04/21 23:28
いろいろ調べたんですが、デバッグ版かどうかではなく、
デバッガがつながっているかで判断させることにしました。
ありがとうございました。
Visual Stuido .NET 2003 + C# です.

とあるクラスに

public enum Fields
{
// 略
}

とあり,クラスライブラリとして dll を作成しています.

その dll を別のプロジェクトで参照設定しているのですが,
オブジェクトブラウザやインテリセンスで Fields があらわれません.
インテリセンスを無視してコードを書くと Fields を参照している部分も
問題なくコンパイルが通ります.

で,参照設定において該当 dll のローカルコピー の true/false をカチカチ
きりかえたりすると,その後,見えなかった Fields などがインテリセンス
やオブジェクトブラウザで見えるようになります.

ただ,このプロジェクトを一度閉じ,再度開くと,やはり Fields などが
見えてきません.

これは何に原因があるか,解決方法があれば,
御存知のかた,教えて頂けないでしょうか?
NUnit使ってる人いる?
ここに使い方載ってるけど上から4つめのスクリーンショットが
あるとこに書いてある
-----------------------------------------------------------------
ServerAppの名前をダブルクリックし、選択されたコンポーネントの部分に
ServerAppの名前があることを確認してから[OK]ボタンをクリックする。
-----------------------------------------------------------------
ってのができん。
アセンブリを参照するにはdll拡張子を指定する必要があるとかダイアログが出る。
どうしたらいいんだ・・・
>>908
VSの制限で、参照設定できるManagedProjectはDLLのみである、らしい。
どうにもヘルプの記述が見当たらないんだが。
//もちろんcsc.exeでコンパイルするときに/r:hoge.exeは有効。
だからServerAppをクラスライブラリにしてやればいい、んだが。

なんか解決策でもあるのかね。
910908:04/04/23 01:18
んー、それだと、実際アプリを動かそうと思ったら
dllを動かすためのプロジェクトも作ることになるよね・・・
そもそも、このサイトでは、普通のアプリプロジェクトで
できるような風に書いてあるけど、
書いたヤツちゃんと試したのかと問いつめたい。
実際アプリを動かすときにプロジェクトのプロパティ、出力の種類をいじってやればなんとかなることはなる。
912908:04/04/23 01:31
それやった覚えあるような・・・
でも、テストとアプリの実行繰り返す度に毎回やらないとダメじゃなかったけ?
DateTimeに、文字列なり、数値なり、それが日付として正しい値かどうか調べるメソッドって無いですよね?
コンストラクタやパースで例外ひろうやり方だと、遅くって・・・
914デフォルトの名無しさん:04/04/23 07:29
>>913
ホント例外って遅いよね。
メソッドないなら自力で実装すれば?
#がどうのというよりオブジェクト指向の質問なんだが、
例えばフォームを継承したビュークラスと実際に計算を
行う計算クラスを作った場合、入力された値のフォーマットチェックとか
は普通どっちのクラスでするものなんだ?
>>915
通常は計算クラスにのみ記述する。
その理由はその計算クラスを別の場面で再利用することを考えてみれば分かると思う。

ちなみに数値入力のみ可能なテキストボックスとかの場合では
「ビュー」でもチェックしていると考えることも出来る。

結局のところ、まずはドキュメントクラスでチェックしろということです。
>>915
計算って数値計算のこと?
だったら計算機能のインターフェイスは数値型になるだろうから、
文字列のフォーマット云々のチェックはフォーム側になる。
>>913
Regexでなんとかならんかな。例外よりは速いと思うが。
しょーもない質問でスマソ
C++で作ったクラスをC#から呼び出すにはどうすればいいのでしょうか?
ちなみにマネージドC++とかは使ってなく、STLのみを使用しています。
enum ShortCutを全部ComboBoxに並べて選ばせたいんだけど、
設計時ではなく、実行時にリストアップする方法を教えてください。
DLLなら、「DllImportAttribute」つかえばいいよ。
詳しくはMSDNみればのってるよ。
>>920
Shortut[] shortcuts = (Shortcut[])Enum.GetValues(typrof(Shortcut));
>>922
こういうの見るとC#最高だなと思う。
JAVAとかでもできるんだっけ?
Javaにはそもそもenumがない。
あっ。パクったんだっけ?
すいません、上でマルチモニタについて質問した者です。
Screen.AllScreensですべてのモニタ情報が得られるのですが、
一個多く得られてしまいます。
これって何を表しているのでしょうか。
初心者質問で申し訳ありませんが、どなたかお教えください。
よろしくお願いいたします。
>>925
私のシングルモニタな環境では1つしか返ってこないが。

ttp://www.atmarkit.co.jp/fdotnet/dotnettips/003screen/screen.html
飽くまで論理的な云々って話も載ってるな。
二つの個々のモニタと両方を合わせた広大な一つの仮想モニタとか?
モニタを二つに区別して考える必要が無い場合とかを考えるとありかも。
928920:04/04/24 09:34
>>922さん、できました。あとはKeysにしてstringにしておなかいっぱいでした。
ありがとうございます!
929864:04/04/24 20:34
VSでデバッグして、リリース版をコマンドラインで、という感じでいいんでしょうかね。
なにかわかる方よろしくお願いします。
>>929
vsのコード最適化はデフォでDebugでFalse、ReleaseでTrueだから
931864:04/04/24 23:28
Releaseビルドに比べて圧倒的に小さいということだったんですが、
説明不足ですみません。
やっぱりVS持ってるのにわざわざコマンドラインでビルドしてみる人もいないってことですかね。
だとしたら、みなさん一度やってみてはいかがですか?
本当にあり得ないほど小さくなりますよ。
VS.NET 2003 proをインストール中に、エラーが発生してインストールが出来ません。
エラー1933というものが出て
ファイルを更新出来ませんでした〜
というメッセージが出ます。
MSのHPにいっても、VS.NETの対策が出ていませんでした。
どなたか原因わかるかたご教授お願いします。
スレ違いだ!
結果が同一で過程が異なるいくつかのメソッドを比較して、
どの方法が一番速いか測定する方法を教えてください。
デジカメのサムネイル画像情報を取り出したいと考えています。
ファイルの中で画像のある場所はわかったので、
以下のような感じでやってみたのですがうまくいきませんでした。

ストリームから一部抜き出して画像表示する方法をお教えください。
よろしくお願いいたします。


if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
Stream myStream;
myStream=openFileDialog1.OpenFile();

myStream.Seek(0x2001,SeekOrigin.Begin);  //ここでアドレスを指定

pictureBox1.Image = Image.FromStream(myStream);

myStream.Close();

}
>>937
一旦MemoryStreamにその部分だけ書き出す。
940937:04/04/27 00:14
>938

うっ、確かに・・・やってみます。
ちなみに上のはDelphi的な使い方でした。

あと、.NETのImageにExifを簡単に読み出す機能があるのですが、
これって当たり前と言えば当たり前の気がするのですがImageに読み込める
ファイル形式じゃないと使えないのでしょうか。

いやデジカメのファイルがExifに対応した独自形式(RAW)なので、
Exifを簡単に読み出せそうで読み出せないむずがゆさが・・・

うー




Iビームの位置の位置ってどうやって取得するんでしょうか。
942デフォルトの名無しさん:04/04/27 15:32
う、変な文章になってしまった。
入力補佐でコンボボックスをIビームの位置に出したいんですが、リッチテキストの
Iビームの位置の取得方法がわかりません。

よろしくお願いします。
>>942
>  Iビームの位置の取得方法がわかりません。
Iビームって言うと要するにマウスカーソルのことだけど、
そうじゃなくてキャレットだよね?

キャレット関係は.NET Frameworkはどうも弱いんだよね。
Win32APIのGetCaretPosを使うのがいいのかな。
>>943
やってみます。ありがとうございました。
す、すいません、
byte配列に入っている値を、double型に変換するのはどうしたらよいのでしょうか・・・
基礎的な質問ですいません・・・
946デフォルトの名無しさん:04/04/27 16:24
>>945
キャストしたら。
byteからdoubleなら暗黙に型変換してくれるけどな。
byte配列の配列中の8バイトをdoubleに変換したいのです。

byte>文字列変換でいうところの
string s= Encoding.ASCII.GetString(b,0,8);

みたいな感じです。
>>945
System.BitConverter
それです!
ありがとうございました!

あと初心者質問連続で申し訳ないのですが、あるStreamから別のStreamへ部分を
コピーする方法はどうしたら良いのでしょうか。
んなもんReadしてWriteするだけだろ
952デフォルトの名無しさん:04/04/27 17:11
質問です

stringの配列にデータを格納してたんですが、印刷しようとすると文字化けるんです。
おそらくUTF-8になってるんですが、
これをstringのままシフトJISに変換できませんでしょうか?
>>952
string型は内部的にUnicode。
なんか他のところが間違えてるんじゃない?
954デフォルトの名無しさん:04/04/27 18:10
他のとこ…
上記のデータをデータグリッドに表示させる場合は、別に文字化けなんてしないんですがねぇ。
ぬー。

ということは、プリンタクラスのほうでしょうか?
http://www.gotdotnet.com/japan/student/column/firststep/firststep2.aspx
ここを読みながらC#を学んでいる途中なのですが、
Windowsフォームにメニューバーを追加するのはどうすればいいのでしょうか?
ツールボックスの「MainMenu」をD&Dして「新規作成」「編集」などを作ってみて、
その後ビルドすると反映されてなく、メニューバーが存在しません。
どなたか、メニューバーを追加する方法を教えていただけないでしょうか?
よろしくお願いします。
>>955
>  ツールボックスの「MainMenu」をD&Dして「新規作成」「編集」などを作ってみて、
作るって何をどう?

MainMenuをD&D>「ここへ入力」に文字列入力>ビルド
957950:04/04/27 19:34
ストリームのコピーなんですが、もちっとスマートな
方法ないですか・・・?


byte[] bc=new byte[256];

int mi=(int)Math.Floor((double)copysize/256);


fromStream.Seek(startpos,SeekOrigin.Begin);

for (int i=0;i<=mi-1;i++)
{
fromStream.Read(bc,0,256);
toStream.Write(bc,0,256);
}


fromStream.Read(bc,0,(int)(thumbsize-mi*256));
toStream.Write(bc,0,(int)(thumbsize-mi*256));
958950:04/04/27 19:36
あ、thumbsizeはcopysizeの間違いです
959955:04/04/27 19:36
>>956
まさにそのとおりに文字列を入力してやってみました。
舌足らずですいません。
VS.NETのスクリーンショットです。
どこかがおかしいのでしょうか?
ttp://up.nm78.com/data/up002612.jpg
>>957

int read;

while ((read = fromStream.Read(bc, 0, bc.Length)) != 0)
 toStream.Write(bc, 0. read);
>>957
byte[] bc = new byte[copysize]じゃ駄目なのか……?
962デフォルトの名無しさん:04/04/27 20:08
以前お聞きしたのですが、レスがなかったのと、
未だに解決していないのでもう一度書かせてください。
DataTable内にAutoIncrementプロパティをtrueに設定している列があります。
(仮にIDNOとする)
このDataTableをClearしてもう一度Fillすると
IDNO列に自動で割り当てられる値がどんどん増えていってしまい困っています。
再読込する毎に1から振り直したいのです。
どうすればいいでしょうか?
よろしくお願いします。
963名無しさん♯:04/04/27 20:56
>>962
どうせ元データベースのAutoIncrementと全然違うナンバー振られるんだから、
あんま気にしてもしょうがない。
dexplorer.exeで「言語のフィルタ」を使ってC#のコードだけ表示にしても
別ページに行ったり更新したりすると元の全言語表示に戻ってしまいます。
常にC#のコードだけ表示したいんですけどどうすればいいんですか?
VSを使わないで他のアプリからcscコマンドを呼んでコンパイルさせたいのですが
ソースや参照が数百もある場合どうすればいいでしょうか?
Cで言うところのmakefileはC#ではどのような仕組みなのでしょうか?
>>966
nmake.exeならcscでも使えるけど?
Microsoft.CSharp.Compilerクラスもあるけどさ。
968デフォルトの名無しさん:04/05/04 03:00
質問です。
MFCで作成したCWndから派生させたウインドウを
WindowsFormに貼り付けることは可能でしょうか?
969968:04/05/04 03:40
次スレたってるようなのでそちらで質問します。
>>966
というか、makefile自体はCの物じゃないし、
どの言語、ときに言語以外にも使えるツール。
埋め
埋め
ぬるぽ



ぬるぽ
975デフォルトの名無しさん:04/05/04 14:00
C#のサイトを検索するとギターのサイトがいっぱいでてくるね
とあるツールでbmp吐き出して、別のツールで減色して、
またまた別のツールでgif圧縮とかやったことあるなぁ…makefileで

  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ ←>>974
 (_フ彡        /
Mutexで複数起動を制限してるとき、
SocketやTcpClientインスタンスが他からの送信をAcceptすると
何故かその時点でMutexの所有権を放棄してしまう。
ぬるぽするとガッって、意味わかんね。何が楽しいの?
試験的にポートスキャナを実装したいんですが
GUI部分は置いておいて
ネットワーク部分はどんなクラスを使ったらいいか
見当もつきません。どなたかお知恵を!
Socketつかっとけ
>>981
アドバイスありがとうございます。
>>979
少なくともム板でやるようなことじゃないね。ム板で叩いてるのはただのアホ。
984デフォルトの名無しさん:04/05/05 00:35
.NetってFTPのライブラリって標準では無いですよね?
これだ!っていうFTPライブラリを知っている人がいたら教えてください。
やっぱ自作しか無いんですかね?
>>984
困ったときのcodeproject.

ttp://www.codeproject.com/csharp/ftp.asp
987984:04/05/05 18:25
>>985
>>986
ありがとうございます!

次期バージョンでは標準ですか、やっぱ要望が大きかったのかな。
POP3もホスィ…
埋め