C♯相談室 Part25
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん♯
2005/07/26(火) 13:37:30(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
過去スレは>>2-5あたり。
関連リンク
http://onigiri.s3.xrea.com:8080/csharp/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D
0153デフォルトの名無しさん
2005/08/08(月) 23:53:55DESのキーはどこに…
0154デフォルトの名無しさん
2005/08/08(月) 23:54:010157デフォルトの名無しさん
2005/08/09(火) 02:53:45そのテキストの一番右側までいくと勝手に
次のセルが選ばれてしまう。これを簡単に辞めさせる
方法はないのでしょうか?うっかり右キー押したら
編集ENDとか虚しすぎます
0158デフォルトの名無しさん
2005/08/09(火) 04:40:39抽象クラスつくって、それを継承するクラスを書いているんだけど…
この抽象メソッドの実装を書くときに、自分でコピペしないとダメですか?
自動で継承もとからメソッドの概要copyしてくれる機能とかないでしょうか。
イベントハンドラのTAB押下での自動追加は便利だったんで、
そんな追加方法があるなら知りたいなぁ。
0159デフォルトの名無しさん
2005/08/09(火) 07:08:050160デフォルトの名無しさん
2005/08/09(火) 07:39:520161デフォルトの名無しさん
2005/08/09(火) 12:22:270162デフォルトの名無しさん
2005/08/09(火) 13:36:110163デフォルトの名無しさん
2005/08/09(火) 15:06:18終わらせるということになったのですが、どれくらいのペースで進めたら良さそうかということと
お勧めの入門書などがあったら教えていただけないでしょうか?
0164デフォルトの名無しさん
2005/08/09(火) 15:31:16http://pc8.2ch.net/test/read.cgi/tech/1119115838/
0165デフォルトの名無しさん
2005/08/09(火) 16:28:39手前のイメージの背景を透明にしました。(MakeTransparent使用)
しかし手前のイメージの透明背景部分には
フォームの背景が見えます。
奧のイメージを見せるにはどうしたら?
0166デフォルトの名無しさん
2005/08/09(火) 16:36:160167デフォルトの名無しさん
2005/08/10(水) 17:22:381列目:TemplateColumn 2列目:EditCommandColumn(編集、更新、キャンセル)
というDataGridがあるんですが、DataBindする前に、ソースの中でEditCommandColumn列の前に
↓のように連結列を動的に挿入してます。
dataGrid.Columns.AddAt(1,col1);
そうすると、編集とキャンセルは正常に動作するんですが、
更新をクリックすると何故かキャンセルのイベントハンドラに飛んでしまいます。
どなたかお助けを・・・。
//編集
private void EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
dg.EditItemIndex = e.Item.ItemIndex;
ListDataBind();
}
//更新
private void UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//アップデート処理
}
//キャンセル
private void CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
dg.EditItemIndex = -1;
ListDataBind();
}
private void ListDataBind()
{
dg.Columns.AddAt(1,col1);
dg.Columns.AddAt(2,col2);
dg.Columns.AddAt(3,col3);
dg.DataBind();
}
0168デフォルトの名無しさん
2005/08/12(金) 00:11:150169デフォルトの名無しさん
2005/08/12(金) 18:07:080170デフォルトの名無しさん
2005/08/12(金) 18:17:130171デフォルトの名無しさん
2005/08/12(金) 18:19:22一応、プロパティの説明を全部読んでみましたがそれらしいものはありませんでした。
しかし、もしあったら悔しいので、自分で各列の幅を記録するコードを書く前に聞いてみようと思い質問しました。
0172デフォルトの名無しさん
2005/08/12(金) 18:23:43dllというものを知り、フリーで公開されているのを使ってみようと思ったのですが、どのメソッドを使って読み込み、呼び出すかわかりません。
MSDNでもdllに関する記述はたくさんあるものの、関係のないものしか見つかりませんでした。
基礎的なサンプルソースをいただけませんか?
0173デフォルトの名無しさん
2005/08/12(金) 18:30:51DllImport
http://wisdom.sakura.ne.jp/programming/cs/cs65.html とか
http://www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32api.html とかどうだろう。
0174デフォルトの名無しさん
2005/08/12(金) 18:40:33> ListViewの列の幅を、アプリを閉じても保存してくれるようなプロパティってないでしょうか。
フォームの位置とか保存してくれるプロパティも無いだろ?
ていうか"保存"は動作だからプロパティにはならないんじゃね?
>>172
ちなみにそれが.NETで書かれたDLLなら参照設定に追加するだけで自由に扱えるぞ。
0176デフォルトの名無しさん
2005/08/12(金) 20:34:45漏れはC++/Win32だとオーナーデータにしてタブ区切りのテキストファイルに吐いてたな。
結局、レジストリなりINIファイルなりに保存するのがセオリーかと。
0177デフォルトの名無しさん
2005/08/12(金) 21:09:55なるほど!こんなに簡単に使えるんですね
これは便利です、助かりました
ありがとうございました
0178171
2005/08/12(金) 21:50:11アドバイスありがとうございます。
列幅は、テキストファイルに吐き出さそうかと思ってました。
それはできるだけレジストリを使わずに、フォルダごとゴミ箱へとか、フォルダごとバックアップできるようにと考えたからですが。
そのため、テキストファイルが18個もできてしまい、更に、ユーザに簡単に開いていじれるようになってるっていうのはどうなの?という
疑問もわいてきて、どうしようか迷っていたところでした。
既存のメーラーがどのように設定を保存してるのか、フォルダを開いて探しましたがそれらしいファイルが見あたらないので
そういったソフトはやはりレジストリに保存してるのでしょうかね。フォルダの中のファイル数が少ないのですっきり見えます。
とりあえずは、テキストで作ってみて、フォルダの中のファイル数の具合や使い勝手なども考えて、どちらに保存するか
決めようかと思います。
0179デフォルトの名無しさん
2005/08/12(金) 22:11:33http://ukamen.hp.infoseek.co.jp/Programming/ConfigFile/
0180デフォルトの名無しさん
2005/08/12(金) 22:19:540181デフォルトの名無しさん
2005/08/12(金) 22:23:330182デフォルトの名無しさん
2005/08/12(金) 22:29:45素直にxml使えばいいのに……
0183171
2005/08/12(金) 22:38:12>>179
参考サイトどうもありがとうございます。
>>180
そうですが、なんだかどんどん設定ファイルが増えるなと不安になってたんです。
現在設定ファイルが、5個。今回のカラム幅は、ListViewが3つあるので、更に3つファイルを作ろうかと思ってました。
>>181
やはりtxtはまずかったでしょうかね。
>>182
xml使えば設定の管理が楽になるのでしょうか。それならぜひ使いたいです。
今のところは
http://dobon.net/vb/dotnet/programing/storeappsettings.html
にある、設定をクラスで管理して、XMLファイルに保存という方法にしようかと傾いています。
この方法で、いくつもある設定ファイルを1つにできたらうれしいなと思います。
NETはXMLを扱う機能が充実しているそうで、サンプルコードが短かったので扱いやすそうなので、一度この
方法でやってみようかと思います。
0184デフォルトの名無しさん
2005/08/12(金) 22:44:45[ListView1]
Column0Width=AAA
Column1Width=BBB
[ListView2]
Column0Width=CCC
Column1Width=DDD
[ListView3]
Column0Width=EEE
Column1Width=FFF
INIファイルを呼ぶのは一般的にはAPIコールになるけど
ググればそれなりにサンプルが出てくると思う
まあXMLベースのほうがいいだろうけど。
0185171
2005/08/12(金) 22:51:21アドバイスありがとうございます。
iniファイルの中身はそのように記述するのですね。
XMLのほうを推奨ということなので、とりあえず、XMLでいってみようと思います。
外部に書き出しとなると、txtかcsvしか扱ったことがないので、何もかもtxtで書き出してしまってました。
とにかく、ファイルが多くて不恰好なのでXMLの方法で1つにまとめられるようにやってみようかと思います。
0186デフォルトの名無しさん
2005/08/12(金) 23:12:09それはそれでありな気が
0187171
2005/08/12(金) 23:19:57それでいいなら修正しなくていいから楽でいいんですけど。
設定ファイルのクラスの設計と、書き直す箇所とか考えると、txtで書き出しまくるのが標準だったらと思うこともないですね。
フォルダ開いたらファイルだらけってどうかなと、ファイルが増えるたびにちょっぴり不安な心持になってたので。
ありならありでそのまんまにしちゃおうかなという気持ちも半分あるし、XML扱う方法やっといた方がいいかなという気持ちも半分です。
0188デフォルトの名無しさん
2005/08/12(金) 23:23:250189デフォルトの名無しさん
2005/08/12(金) 23:26:560190171
2005/08/12(金) 23:35:00皆さん、アドバイスありがとうございます。
>>188
フォルダに入れちゃえば、ごちゃごちゃファイルが多い件は解決ですね。
そうしちゃおうかな。この方法ならすっきりするし、苦労もしなくてすみますね。
今夜は横になりながら考えて明日決断しようかと思います。
>>189
SpecialFolder.LocalApplicationData をざっとぐぐったところ。
どうやら隠しフォルダなのですかね。
見えないのならよけいに好都合ですね。
フォルダの中身がすっきりする上に、表示させる設定にすれば見えちゃうのかもしれませんが
ファイルの中身をいじられにくいのもいいですね。
0191デフォルトの名無しさん
2005/08/12(金) 23:35:51ところでXmlSerializerのインスタンス作るのって何であんなに重いんだろうね?
0192デフォルトの名無しさん
2005/08/13(土) 00:43:55ListView(詳細)のオーナードローのサンプル↑をコンパイルしてみたのですが
マウスカーソルをListViewの上に持ってくると、マウスカーソルの指す領域の
ItemのSubItemが消えてしまいます。(消えるのははじめ一回だけで再描画後は消えない)
どこがおかしいのでしょうか?
0193171
2005/08/13(土) 14:23:18アドバイスありがとうございます。
なるほど、ユーザにフォルダの存在が見えなかったら、バックアップがしやすいメリットがなくなってしまいますね。
とりあえず、カラム幅の記録のみをXMLで保存してみようということにしました。
XML保存への変更が面倒だったら、Settingsフォルダを作ってそこにまとめてファイルを入れとこうと思います。
0194デフォルトの名無しさん
2005/08/13(土) 18:59:41mm.From = "[email protected]";
mm.Fromは、送信者のメールアドレスを入れますが、では送信者の名前はどのように書けばいいのでしょうか。
なんとなく、mm.From = "名前 <[email protected]>"; かなと思ったのですが
使っているメーラーの差出人のところが、名前 <[email protected]> のような記述なので。
0195194
2005/08/13(土) 19:13:04今度はOutlook Expressで確認したら、ちゃんと名前の欄に、名前 と載っていました。
mm.Name = "名前";
と書ければわかりやすいのに。と思います。
とりあえず
mm.From = "[email protected]"; の部分を、mm.From = "名前 <[email protected]>";
に書き換えようと思います。
何か、勘違いしていることなどありましたらご指摘いただけるとうれしいです。
どうもお騒がせいたしました。
0196デフォルトの名無しさん
2005/08/13(土) 19:42:19System.Web.Mail.MailMessage mm = new System.Web.Mail.MailMessage();
// 送信者
mm.From = "送信者のコメント <[email protected]>";
で合ってるよ。
e-mailのタグをベースにプロパティ名称を付与しているから、仕方がない。
0198デフォルトの名無しさん
2005/08/15(月) 18:57:22引数eに何を入れればいいのかわからず困ってます。
menuItem1_Click("基本設定", e); のように書いて呼び出そうとすると、ビルド時に
'e' は クラスまたは名前空間 'test41.Form1' に存在しません。 と、エラーが出るので
"基本設定"の部分はこれで大丈夫なのかなと思うのですが、eの部分に何を書いたらいけるでしょうか。
ちなみに"基本設定"は、メニューの[設定&S]-[基本設定&K] のテキスト部分です。
0199デフォルトの名無しさん
2005/08/15(月) 19:02:34それ以前に、普通のメソッド呼び出しすら分かってないような予感たっぷり
面倒だし、menuItem1_Click(null, null) で良いよ
0200デフォルトの名無しさん
2005/08/15(月) 19:03:230201198
2005/08/15(月) 19:11:47皆さんアドバイスありがとうございます。
menuItem1_Click(null, null);
menuItem1_Click(null, EventArgs.Empty);
menuItem1_Click("基本設定", EventArgs.Empty);
どれも試しましたが、どれも成功しました。
正直いって、なんで全部いけるのか、さっぱり理解できてませんが、今度から、既存のイベント発生のメソッドを呼び出すときは
面倒なので、null, null でいこうと思います。
0202デフォルトの名無しさん
2005/08/15(月) 19:14:49いや、199 の身でなんだが、(this, EventArgs.Empty) を薦めるよ
もしくは、menuItem1_Click の処理を別なメソッドに分けて、分けた方のメソッドを呼び出すんだ
0203デフォルトの名無しさん
2005/08/15(月) 19:16:190204198
2005/08/15(月) 19:23:50ご親切にどうもありがとうございます。
お勧めの、menuItem1_Click(this,EventArgs.Empty);
に書き換えました。
0205デフォルトの名無しさん
2005/08/15(月) 20:10:07ハンドラ直接呼出しよりPerformClickの方がいいと思われ。
0206デフォルトの名無しさん
2005/08/15(月) 20:12:480207デフォルトの名無しさん
2005/08/15(月) 20:15:070208デフォルトの名無しさん
2005/08/15(月) 20:59:100209デフォルトの名無しさん
2005/08/15(月) 21:03:340210198
2005/08/15(月) 21:10:46アドバイスありがとうございます。
menuItem1.PerformClick();
でも呼び出せました。こちらに書き換えようと思います。
0211デフォルトの名無しさん
2005/08/15(月) 23:04:270212デフォルトの名無しさん
2005/08/15(月) 23:52:240213デフォルトの名無しさん
2005/08/16(火) 09:37:48public:
virtual void func() = 0;
こういうのC#でどう書くんでしたっけ
public abstract void func();
にしたら抽象クラスに非抽象関数入れられないって蹴られたよ…
徹夜明けで参考書調べる余裕ないんだわ。頼む…
0214デフォルトの名無しさん
2005/08/16(火) 09:49:56> 抽象クラスに非抽象関数入れられない
こんなエラーメッセージをcsc.exeは吐かないので、スレが間違ってるんじゃないか?
0215デフォルトの名無しさん
2005/08/16(火) 09:59:23逆
0216デフォルトの名無しさん
2005/08/16(火) 13:02:31クラスを抽象クラスにすれば解決
0217デフォルトの名無しさん
2005/08/16(火) 13:38:27public Form1()
{
InitializeComponent();
MessageBox.Show("てすと");
}
これだと、メインフォーム生成前に表示されてしまいます。
static void Main()
{
Application.Run(new Form1());
MessageBox.Show("てすと");
}
これだと、メインフォームを閉じた後に表示されてしまいます。
protected override void WndProc(ref Message m)
{
if(m.Msg == 0x0001) //WM_CREATE
{
MessageBox.Show("てすと");
}
}
ウィンドウプロシージャで、フォームが生成されたのをキャッチして表示させようと思ったのですが
これも、メインフォーム生成前に表示されてしまいます。
WM_SHOWWINDOW(0x0018)にもしてみましたが、こちらは生成前と生成後の2回も表示されてしまいます。
どのように書いたらメインフォーム生成後にひょうじさせることができるでしょうか。
0218デフォルトの名無しさん
2005/08/16(火) 13:45:19Application.Idleイベントにハンドラ追加して、
そのイベントハンドラで追加したハンドラ削除&したい処理をする。
0219デフォルトの名無しさん
2005/08/16(火) 13:49:300220217
2005/08/16(火) 13:59:30アドバイスありがとうございます。
>一つ確認したいが、"生成"じゃなくて"表示"だよな?
すみません、表現が正確じゃなかったですね。表示です。
無事メインフォーム表示後に表示させることができました。
0221デフォルトの名無しさん
2005/08/17(水) 12:39:14ダイアログ A を表示した時点で
スクリーンセーバが起動中であっても解除し、
Aが表示されている間はスクリーンセーバを起動させない。
Aが表示されていない間は、時間経過後(画面のプロパティで設定する分)
スクリーンセーバを起動する。(ほうっておけば起動される)
[やってみたこと1]
ダイアログA表示中、タイマー(100ms周期)で座標0,0にマウス移動し、直後に移動前座標に戻る。
Point oldPos = new Point(System.Windows.Forms.Control.MousePosition.X,System.Windows.Forms.Control.MousePosition.Y);
System.Windows.Forms.Cursor.Position = new Point(0,0);
System.Windows.Forms.Cursor.Position = oldPos;
↑だと、画面のプロパティのプレビューを解除することは出来ましたが、
時間経過後(画面のプロパティで設定する分)に表示される、本当(?)の
スクリーンセーバでは解除ができません。
[やってみたこと2]
座標(0.0)から座標(100.100)にループにて順に移動させるも、やはりダメ。
うまいことやる方法、ありますでしょうか?
0222デフォルトの名無しさん
2005/08/17(水) 13:07:380223デフォルトの名無しさん
2005/08/17(水) 20:46:47例えば、以下のような場合に、<Name>の次に<Age>を入れたいのです。
<Address>
<Name/>
<Tel/>
</Adress>
<Tel>の次に入れるなら、SelectSingleNodeで<Address>を取得し、
AppendChildすれば、自動的に最後である<Tel>の後に入ります。
でも、<Name>の次に入れるには、どのようにしたら良いのでしょうか?
そもそも、Xmlでこのようなことを求めること自体、間違ってます?
0224デフォルトの名無しさん
2005/08/17(水) 21:04:070225223
2005/08/17(水) 21:09:13MSDNにおける以下の引数の意味が理解できなくて使えなかったのですが、
newChild 挿入する XmlNode 。
refChild 参照ノードである XmlNode 。 newNode は、 refNode の後に配置されます。
ここに書いてありました〜
http://dotnetjunkies.com/WebLog/sayadhashim/archive/2004/08/17/22287.aspx
0226デフォルトの名無しさん
2005/08/17(水) 21:40:42COM化したDLLをIEのOBJECTタグを使って自動インストールさせ、
DLLのメソッドを使えるようにしたいと思っています。
色々テストしてみたのですが、
作成したインストーラを別のローカルマシンで実行したところ、
きちんとインストール・DLLのメソッドも実行できました。
しかし、OBJECTタグを使ってDL→インストールしようとすると、
「インストールしますか?」というメッセージはでるのですが、
まるで何もインストールされてないように、そのDLLのメソッドを使うことができません。
レジストリのClassID登録がローカルでインストールしたときと違っているようです。
(NameSpaceとClassが登録されていません)
イメージ的にはC++のOCXみたいに使いたいのですが…
0227デフォルトの名無しさん
2005/08/17(水) 21:57:51ttp://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=31966
これかな?
0228デフォルトの名無しさん
2005/08/18(木) 20:55:28フォームの左上にあるアイコン、タスクバーに表示されるアイコンの設定はできたのですが。
アプリケーションのアイコンの設定がわからず困ってます。
参考書に、リソースビューを表示して設定する方法が書いてあるのですが、肝心のリソースビューを表示してみても
中身はまったくの空でどうしようもありません。
この参考書はC++.NETの参考書だからだめなのでしょうか。
C#でアプリケーションのアイコンの設定はどのようにすればできるでしょうか。
0229デフォルトの名無しさん
2005/08/18(木) 21:04:42VSだとプロジェクトのプロパティにあるだろ
ちなみにこのアイコンリソースをプログラム上から利用するにはWin32APIが必要になる
//あれ、/win32resが必要だったっけ? >プログラムから利用
0231デフォルトの名無しさん
2005/08/18(木) 22:35:42stringに読み込むにはどうしたら良いでしょうか?
0232デフォルトの名無しさん
2005/08/18(木) 22:45:02無ければデータの初めにBOMが無いかどうかチェック
見つからなければmeta要素でContent-Typeが定義されていないかチェック
それで見つからなければ自前で判断
文字コード判別にはこことか
ttp://www.gprj.net/
0233デフォルトの名無しさん
2005/08/18(木) 22:51:44C#の標準でコンバータが用意されていたりはしないのですね。
ありがとうございました。Microsoft最悪ですね。
0234デフォルトの名無しさん
2005/08/18(木) 23:06:510235デフォルトの名無しさん
2005/08/18(木) 23:12:29これだけ文字コードが乱立しているのだから、あってもおかしくないとオモタ。
0236デフォルトの名無しさん
2005/08/19(金) 00:39:090237デフォルトの名無しさん
2005/08/19(金) 00:51:340238デフォルトの名無しさん
2005/08/19(金) 01:46:580239デフォルトの名無しさん
2005/08/19(金) 02:11:43「日本語」って限定すれば結構高確率で出来るけど言語限定しないと難しいし。
UTF16とか完璧に判別無理なのあるし
何で未だに文字化けがあるのかと小一時間(ry
そんなん標準で用意されてもその、なんだ、困る
0240デフォルトの名無しさん
2005/08/19(金) 03:41:03今は組み込まれたけど以前はなかった。
0241デフォルトの名無しさん
2005/08/19(金) 08:14:09てかそれってまさか日本語だけとか言うなよ・・・
0242デフォルトの名無しさん
2005/08/19(金) 08:49:54メソッドとか探してみたのですが見つからなかったので困っております
(最悪、クリップボード経由で貼り付ける方法もあるのですが、できれば普通にやりたいです)
0243デフォルトの名無しさん
2005/08/19(金) 10:29:060244デフォルトの名無しさん
2005/08/19(金) 12:43:08ファイル バージョン・作成日時・サイズ がチップに表示されますが
ファイル バージョンが、1.0.2056.38066
と長々しいので、1.02にしたいのですが、そういった設定はどのようにすればいいのでしょうか。
後、皆さんバージョンはどのようにつけているのでしょうか。
これはだいぶ機能を追加したからバージョンを1アップしようとか、これはちょっとした改変だから0.5だけアップしとこうとか
そういったどんぶり勘定でバージョンの数字をアップしているのでしょうか。
0245デフォルトの名無しさん
2005/08/19(金) 13:11:08AssemblyInfo.csの[assembly: AssemblyVersion("1.0.*")]
0247デフォルトの名無しさん
NGNGあるけど、探せなかった。
0248243
2005/08/19(金) 14:15:43バルーンツールチップ
http://www.codeproject.com/cs/miscctrl/notifyiconex.asp
0249デフォルトの名無しさん
2005/08/19(金) 15:52:43つ[MLang]
Introduction to MLang
ttp://msdn.microsoft.com/workshop/misc/mlang/overview/overview.asp
ここの"Code Page Detection"あたりかな。
0250デフォルトの名無しさん
2005/08/19(金) 16:10:59無難に2000,XPのみ対応を謳っておいたほうがいいでしょうか。
0251デフォルトの名無しさん
2005/08/19(金) 16:16:1398でも動くが一部機能しない。
■ このスレッドは過去ログ倉庫に格納されています