1 名前:デフォルトの名無しさん [2006/10/07(土) 17:28:33 ] このスレッドは どんなに「くだ」らない.NETプログラミングに関する質問でも 誰かが優しくレスをしてくれる「すれ」っどです。 質問者自身何がなんだか分からない質問でも勇気をもって書き込んで ください。お礼は.NETアプリケーションの普及と初心者の救済を お願いします。
592 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:55:29 ] Valueはstringで大丈夫か? DBNullの可能性はないのか
593 名前:デフォルトの名無しさん [2008/06/09(月) 00:19:00 ] SQLCm.CommandText = " SELECT かな FROM shuwa WHERE 指文字 = '001' " という事でしょうか?エラーは相変わらずです。。 さらに、また疑問がありまして・・・自動生成されるプログラムについてもいまいち理解しきず、今まで、コメント扱い にして作業していたのです。ヘルプや関連サイトを見てはいるんですが、これは必要なんでしょうか? 1 Private Sub Shuwa_Table_1BindingNavigatorSaveItem_Click・・・ 2 Private Sub Form1_Load・・・・でTODO: このコード行はデータを 'ShuwaDataSet._shuwa_Table_1' テーブルに読み込みます。必要に応じて移動、または削除をしてください。 コメントを外すとビルドエラーで1でHANDLES句には、それを含む型または基本型の1つの定義されたWithEvents変数が必要です。 とでています。
594 名前:デフォルトの名無しさん [2008/06/09(月) 00:32:54 ] もう、そのままコードうpしちゃいなよ〜
595 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:56:05 ] っ [教えてgoo] もう来んな。
596 名前:デフォルトの名無しさん [2008/06/09(月) 00:58:01 ] うまく伝えられずすみません。以下がコードになります。 Imports System.Data.SqlClient '接続クラスの作成 Public Class Form1 '自動生成されるプログラム() Private Sub Shuwa_Table_1BindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Shuwa_Table_1BindingNavigatorSaveItem.Click Me.Validate() Me.Shuwa_Table_1BindingSource.EndEdit() Me.Shuwa_Table_1TableAdapter.Update(Me.ShuwaDataSet._shuwa_Table_1) End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'TODO: このコード行はデータを 'ShuwaDataSet._shuwa_Table_1' テーブルに読み込みます。必要に応じて移動、または削除をしてください。 Me.Shuwa_Table_1TableAdapter.Fill(Me.ShuwaDataSet._shuwa_Table_1) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Cn As New SqlConnection("server=(local);Data Source=ユーザ名;Initial Catalog=shuwa;") Dim SQLCm As SqlCommand = Cn.CreateCommand SQLCm.CommandText = " SELECT かな FROM shuwa WHERE 指文字 = '001' " Dim Value As String Cn.Open() Value = SQLCm.ExecuteScalar Cn.Close() MsgBox(Value) End Sub End Class
597 名前:デフォルトの名無しさん [2008/06/09(月) 01:00:19 ] ttp://www.atmarkit.co.jp/fdotnet/basics/adonet02/adonet02_02.html ここ読んでみそ
598 名前:デフォルトの名無しさん [2008/06/09(月) 01:02:47 ] 連続すみません。 592さん!StringをSqlDataReaderに変えたところ、ログインエラーはでなくなりました! ありがとうございます!!
599 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 01:11:20 ] エラーメッセージちゃんと読んでたのか?
600 名前:デフォルトの名無しさん [2008/06/09(月) 16:13:12 ] 質問させて下さい。 C#にて、.NET Framework 2.0にServis Packが適応済みであるかを調べたいのですが 上手くいきません。 開発環境は Visual Studio 2005 開発環境OS Windows XP Pro SP3 インストール済みの.NET Framework ・2.0 ・2.0 lang ・2.0 SP1 ・2.0 SP1 lang System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion() にてバージョンの取得を試みたところ、SP1がインストールされている環境下でも取得されるバージョンは「2.0.50727(SP無し)」 教えてエロい人!
601 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:37:39 ] バージョンの下にビルド番号があるみたい 2.0.50727.832 2.0.50727.1433 エライ人じゃないから、これ以上はわからん
602 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:30:51 ] ループを使用する場合、変数の宣言はループの外側ですべきですか、 それとも内側でしょうか。 Dim s as String For i as Integer = 0 to 10 s = Cstr( i ) & "回目" Console.writeline(s) Next か、 For i as Integer = 0 to 10 Dim s as String = Cstr( i ) & "回目" Console.writeline(s) Next ということです。前者の方が領域の使い回しにはなりそうですが、 どこかでGCの為には毎回宣言すべきというのも見た気がして…
603 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:33:25 ] Objectdatasource の insert メソッドをコードから呼んだ時は identity の値って取得出来るの? insertメソッドってint型しか返さないし select メソッドを直後に呼んだら正しい値が返って来るとは限らないような。
604 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 00:47:59 ] >>602 stringをGCw
605 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 05:15:42 ] >>602 変数のスコープは小さく
606 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 06:08:16 ] >>602 前者でも文字列本体の領域が使いまわされるということは全くないから、 安心しろ。どっちも同じようなもんだ。 というわけで、変数の有効範囲が小さい後者がよしとなる。
607 名前:デフォルトの名無しさん [2008/06/10(火) 12:22:38 ] >>601 ありがとう!エロすぎるよ!!!!1111
608 名前:デフォルトの名無しさん [2008/06/10(火) 12:27:20 ] >>601 ありがとう!エロすぎるよ!!!!1111
609 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 13:29:10 ] Thread の扱いについて。 Thread t = new Thread(new ThreadStart(worker)); t.Start(); void worker() { : } などとしてスレッドをスタートさせ、worker が終了するとスレッドも消滅するそうですが、 インスタンス t はどうなるんでしょうか。t はまだ有効で、t.Start() でまたスレッドをスタート させることができるのでしょうか。 毎回インスタンス作り直してもガベージコレクタが回収してくれるんでしょうけど、 ちょっとこの辺が気にかかってます。
610 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 13:53:16 ] まず試してみればいいじゃない
611 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 15:05:18 ] >>602 領域云々では全く差はない。 よってスコープを広げるメリットはない。
612 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 15:06:35 ] >>609 インスタンスは残ってるけど再起動はできない。 よってほっとくのが吉。
613 名前:609 mailto:sage [2008/06/10(火) 15:09:56 ] >>610 そのつもりではいるんですが、今は手が回らないんで、先行して質問してみました。 また、再スタートできたとして、それでよいのか単なる偶然かも気になるところなんですよね。 …て書いてると回答が。 >>612 ありがとうございます。では再起動させる時は作り直すようにします。 どうも Win32 でやってた頃の癖が染みついてて、作ったインスタンス 後始末しないと気持ち悪かったりするんですよね。
614 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 07:00:35 ] 一つのFormにTabControlを用い、複数のページをタブで切り替えられるようにしています。 各タブにはスピンボタンがいくつかあり、そこに入力された値はpropertybindingで記録しています。 なのですが、起動時に一番初めに表示されるタブのページに、全タブのスピンボタンの値の合算を 表示するようにしているのですが、これが起動時は正しく合算後の値が表示されているのですが 一度でも初期表示のページのスピンボタンを操作すると、合算の値が起動後に一度でも開いたタブのみの 合算値になってしまいます。 ちょっと分かりづらい説明だと思いますが、要は各タブに貼り付けられたスピンボタンのvalueの値が、 一度でもそのタブを開かないとMy.Settingsから書き戻されないようなのです。 どうも、起動した瞬間はvalueに関連づけたMy,Settingsの値が入っているようなのですが 起動→操作可能になるまでの間にvalueの値が0になっているようなのです。(My.Settingsには値が保持されている) 0にするような操作は一切行っていないのですが、propertybindingの値を読み込み保持させるには、どうすればいいのでしょうか? もう5時間くらいずっと悩んでいるのですが、何をしても全く解決できません。
615 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:08:38 ] タブコントロールって最初の奴以外は、選択されない限りインスタンスが作られないんでなかったか 回避策としては、タブの親玉のPreInit?だかで一旦非表示にして、全タブを前面に持ってくる もっとスマートなやり方あるかもだが
616 名前:614 mailto:sage [2008/06/12(木) 03:30:42 ] >>615 ちょっと不格好だとは思いますが、Form1_Loadの中で Me.TabControl1.SelectedTab = TabPage2 Me.TabControl1.SelectedTab = TabPage3 という風に一度全てのタブに切り替えるようにすると、初めから値が入った状態で操作できるようになりました。 ありがとうございました。
617 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:29:39 ] visualbasic2008ですが、初期状態でPictureBoxに画像Aを表示させておいて、 クリックすると画像Bに数秒だけ切り替えて音声ファイルを再生し、また画像Aに戻るプログラムを作りたいのですが Dim strm As System.IO.Stream = My.Resources.se01 Dim player As New System.Media.SoundPlayer(strm) PictureBox1.Image = My.Resources.B player.Play() PictureBox1.Image = My.Resources.A という風に記述すると上手く画像が切り替えできません。 player.Play()の後にsleepを入れてみましたが、どうも画像を切り替える前に音再生の所で処理が止まっているようです。 要は、 ttp://saionji.net/hozon.htm のフラッシュのような事がしたいのですが、画像を上手く切り替え、かつマウスの連打にも対応させるにはどうすればいいのでしょうか?
618 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 17:10:26 ] 考え方を切り替えて,ゲームみたいに自分でループ回してフレーム単位でやった方が簡単だよ もしくはWPF使う
619 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:21:17 ] DirectX場合、GDI関数のようにGUIスレッドからしか操作できないという制限はあるの? 別に出来るなら自分でループまわすのが一番自然なんだけどな。
620 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 22:49:53 ] webサイトを作ろうとやっているわけなんですが、 アップの後に確認してみたところ、どうしても Parser Error Message: Could not load the assembly 'App_Web_default.aspx.cdcab7d2'. Make sure that it is compiled before accessing the page. と出てきてしまい <%@ page language="C#" autoeventwireup="true" inherits="_Default, App_Web_default.aspx.cdcab7d2" %> が悪いと出てくるわけなんですが、どうすればいいのか理解ができない状況です・・・ もし、ここが悪いんじゃね?っていうのがあれば教えていただければ幸いです。
621 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 23:21:24 ] ム板にもASP.NETスレはあるから行ってこいよ。 どうせマルチなら何ヶ所しても同じだろ。
622 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 15:07:13 ] C++のマネージ配列を強制的に開放することはできないのでしょうか?
623 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 17:11:11 ] 参照をはずしてあとは祈れ
624 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 17:23:26 ] 解放を制御したかったらアンマネージドでやれ
625 名前:デフォルトの名無しさん [2008/07/10(木) 03:15:04 ] C++とかで直接書くのではなく、.NETをつかう利点てなに?
626 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 05:27:56 ] マイクロソフトは.NETにユーザー押し込めて囲いたいだけだろな それに乗るか乗らないかだよね
627 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 11:49:15 ] C++は文法が難しすぎて
628 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 12:18:08 ] C++と.NETの2者選択ってのじゃなくて済み分けてるけどね。 .NETは生産性が高く、実行コストが高い。 C++は生産性が低く、実行コストが低い。 十分テストが出来て広く多数に使ってもらう用途にはC++。 WEBや企業内システムのような用途には.NETが向いてる。
629 名前:デフォルトの名無しさん [2008/07/12(土) 01:08:58 ] array<Byte>の全体にmemset相当のことをしたいんだけど、どうすればいいの? ループで回して1つずつセットした → かっこ悪い pin_ptrしてmemsetした → 納得いかん ForEachした → 大げさ過ぎる
630 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 02:25:49 ] >>629 かっこ悪いと一緒なんだが static class Util { public static T [] setAll<T>(this T [] ar, T val) { for (int i=0; i<ar.Length; i++) ar[i] = val; return ar; } } double [] ar = new double[10].setAll(123.45);
631 名前:629 mailto:sage [2008/07/12(土) 15:36:08 ] やっぱし、そういう手しかないのね。 0にしたい時だけはClearでいいようだけど。 初期状態を0xffにする時とかがねぇ。
632 名前:デフォルトの名無しさん [2008/07/12(土) 18:04:01 ] System.IO.BinaryReaderで開いたファイルをシークさせるにはどうすればいいのだろう。 素直に考えるとhoge.BaseStream.Seek()なんだろうけど、msdnヘルプ見たら 注意:読み取り中または BinaryReader の使用中に基になるストリームを 使用すると、データの損失や破損の原因になることがあります。 たとえば、同じバイトが 2 回以上読み取られたり、バイトが読み 飛ばされたり、文字の読み取りが予期しない結果になることがあります。 って書いてあるからちょっと不安。
633 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 07:49:32 ] >>631 C++でも構造体の初期化にはmemset使うなって流れになってるけど、 配列はどうなんだろ。スレ違ですまそ。
634 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 11:43:59 ] >>632 シークが必要になったら、BinaryReaderは破棄して、元になったストリームをシークする。 んで、そのストリームから別のBinaryReaderを作って完了。 FileStream fs( "hogehoge", FileMode::Open); BinaryReader br1( %fs); // ここでbr1から好きなだけ読む fs.Seek( 0, SeekOrigin::Begin); // 先頭にシーク BinaryReader br2( %fs); // ここでbr2から飽きるまで読む
635 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 11:45:13 ] NetworkStreamのようにSeekできないのはどうすればいい?
636 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 11:51:37 ] メモリなりファイルなり一度どこかに蓄える
637 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 11:55:10 ] >>633 C++はプログラマの責任においてできることの範囲が広いわけで、 パフォーマンスや保守性など、各種要因を天秤に掛けて決めるべきかと。 C++/CLIは.NETの制限の中にあるんで、基本的にはmemsetは御法度なんだけど、 せめてArrayにFillメソッドがあってもいいような気もする。
638 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 22:40:50 ] >>633 ネイティブC++でも構造体の初期化にmemset非推奨ってーのは、 多分アライメントの関係で下手をすると尻切れになりかねないからだと思われ 例えば合計6バイトの構造体だと、実際のサイズは8バイトになると思うが この構造体を配列にして初期化しようとすると、sizeofの実装によってはズレが生じかねない ましてや.NETだと間に何が挟まってるか知れたもんじゃない スレチだからこの辺で
639 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 23:11:10 ] 「思われ」みたいなヲタク口調の奴って気持ち悪いな。 なんだよ「思われ」って。 想い想われかw
640 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 01:11:15 ] と、何にでも噛み付く狂犬がキャンキャン吠えてます
641 名前:デフォルトの名無しさん [2008/07/14(月) 13:28:50 ] C言語の"%5d"に相当するToStringのフォーマット指定はなんて書くざますか? "%05d"相当にしかならんのですが。
642 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:03:06 ] .PadLeft(5) つなぐとか
643 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:05:40 ] ググったらわかりました。 ToStringじゃできないのでString.Formatを使うらしい。 つか、MSDN分かりにくすぎだろ。
644 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 21:14:15 ] >MSDN分かりにくすぎだろ。 そういう感想の人もいるんだな。 いや別に煽ってる訳じゃなないし、たぶん俺が麻痺しちゃってるんだと思うけど すくなくとも書式指定に関してはそういう不満は覚えなかったな。 だいたい>>641 みたいな需要って(DOSの時代ならともかく)いまどきあまり ない気がするよ。
645 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 06:22:12 ] WriteLineやStringFormatで使える書式 位置 ( , 桁数 ) : フォーマット ToStringで使えるのはファーマットの部分だけ 漢字等の幅広文字も1文字で数えるから総桁数はあんまり使わないよね。
646 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 09:44:50 ] ToString().PadLeft(5) は無視か。
647 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 19:46:28 ] 他に手がないならともかく、さすがにそれはなぁ。
648 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 21:43:53 ] すいません質問です。 StringのReplaceを大文字小文字を無視してすべて置換する方法はありませんかね?
649 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 22:02:03 ] ない
650 名前:デフォルトの名無しさん mailto:sage [2008/07/21(月) 20:11:57 ] ないな…あってもいいと思ったんだが。 手抜くなら、Regex.Replace関連で代用かな…
651 名前:デフォルトの名無しさん [2008/07/22(火) 23:34:14 ] セットアップウィザードを使ってインストーラーを作成しています。 ReadMe.txtのショートカットをプログラムメニューに配置したいのですが、アイコン関係がよく判りません。 手順としては、 アプリケーションフォルダにReadMe.txtを追加する。 ReadMe.txtのショートカットを作成する。 このショートカットをユーザーのプログラムメニューに配置する。 (プロパティはいじっていません。) 実際にインストールしてみると、問題なくReadMe.txtは表示されるのですが、アイコンが、%APPDATA%\Microsoft\Installer \xxx.exeにあるアイコンが表示されます。 他のプログラムメニューに登録されているReadMeのように、txtファイルに関連付けられたアプリケーションの アイコンが表示させたいのですが、どこをいじればよろしいでしょうか? よろしくお願いします。
652 名前:デフォルトの名無しさん [2008/07/23(水) 15:10:07 ] Microsoft.Office.Tools.ExcelとMicrosoft.Office.Interop.Excelの違いがよくわかりません。 それを知りたいのと、 単純にCUIでExcelファイル(.xls)を読み込んでバイナリデータにコンバートしたい場合、 どちらを使えばいいのでしょうか?
653 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 17:55:38 ] Visual Basic 2008 Express Editionをインストールして 新しくプロジェクトを作成してみると、以前までコードが自動生成されていたのが 生成されなくなってしまいました。 ex) Public Class Form1 End Class のような感じでしか出力されていない状態です。 何か設定を弄らないといけないのでしょうか?
654 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 18:41:07 ] >>653 今頃それに気づくということは以前というのはVS2002とか2003なのか? プロジェクトのすべてのファイルを表示でForm1.Designer.vbが表示されるからそこにいろいろ入ってる。 Sub Newを書かないときにInitializeComponent()を誰が呼んでるのだという問題だったらまた話が違う。
655 名前:デフォルトの名無しさん mailto:sage [2008/07/26(土) 21:21:10 ] >>654 以前に使用していたのは2005です。 問題の解決ができまして 原因は私の勘違いでボタンオブジェクト作成⇒自動挿入と思っていました。 ボタンオブジェクトでダブルクリックしないといけなかったという… お答えくださりありがとうございました。
656 名前:デフォルトの名無しさん mailto:質問 [2008/08/09(土) 15:06:32 ] 質問です。 フォルダAppの中にBase.dllとModA.dllが存在しています。 このフォルダのdllはすべてVB.NET(1.1)で書かれており、 Base.dllの中には継承フォームの親クラスなど、 ModA.dllの中にはBase.dllを利用(参照)して作った実際の画面クラスなどがあります。 Base.dllは頻繁に更新されており、 ModA.dllの参照に設定されているバージョン番号よりもかなり新しい状態です。 現状、この内部だけの動作なら問題なく動いています。 現在、新しいWindowsアプリを作成中で、 C#で作ったアプリからModA.dll内の画面クラスを System.Reflectionを使用して動的に呼び出したいのですが、 Base.dllを継承したフォームを呼び出そうとした瞬間に 「Base.dllが見つかりません。」というExceptionを投げられてしまいます。 ・Base.dllとModA.dllは必ず同じAppフォルダに入っている ・Appフォルダそのものの位置は移動可能 ・新アプリでは、Appフォルダの位置をユーザーに指定させる ・新アプリの位置も移動できる方が望ましい。 という条件で、上記のExceptionが出ないようにすることは可能でしょうか? 助言をお願い致します。
657 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:36:19 ] >>656 いろいろ書いてる割には見事にポイントをはずして要領を得ないね。 とりあえず言えることは、「出来るはず、やり方が悪い」
658 名前:656 mailto:質問 [2008/08/09(土) 20:31:55 ] >>657 では、正しいやり方を教えてください。
659 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 20:53:21 ] それは657にエスパーであれっていってるのと同義だと思うけど
660 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 20:57:54 ] C#が1.1なのか他のバージョンなのか。 リフェレクションはAssembly.LoadFromを使っているのかそれとも別の方法か? リフェレクションで読み込んで呼び出している部分のソースをさらす。 VBで同じ手法のリフレクションを使って実現できているのか。 「Base.dllが見つかりません。」じゃなくてスタックトレースを出せ。 E伊東さんとお知り合いか? とりあえず、このくらいは書いとけよ。
661 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:44:55 ] リフェレクションえろいな
662 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:47:14 ] >>656 無理。 依存してるライブラリが更新されたらコンパイルしなおす必要がある。 さもなくば、動的にクラスを構成しないといかん。
663 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:16:46 ] 厳密名を使ってるなら話は別だがPublicKeyToken=nullのときはVersionのチェックはない。
664 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 20:55:34 ] LoadFromが原因だろう。 厳密名とかの話じゃない。 LoadFromで読んだ場合、自動的に同じフォルダのBase.dllを 読んだりはしてくれない。 AssemblyResolveなどで自分でハンドリングして読み込むか、 事前にBase.dllもLoadFromで読んでおくことはできる。 でも、アプリのフォルダを自由に指定とかなってくると、 たぶんどっかでトラぶってにっちもさっちも行かなくなると思うぞ…
665 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 19:50:24 ] フォーム1で使っている変数(数字の1〜100)を フォーム2にとばして使いたいのですが、どうすればいいのかわかりません。 自分で調べた所、プロパティを設定すればいいとのことでした。 ttp://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard47.htm ここを参考にして色々とやってみたのですが、 どうもうまく実際に使っているXの値を別のフォームに送れません。 どうか、ヒントをください。
666 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 20:13:58 ] [ヒント] プログラミングに王道なし。 いやまじめな話、そのレベルから掲示板で解説しろってそりゃ無理あるぞ。
667 名前:656 mailto:質問 [2008/08/11(月) 22:59:52 ] >>660 C#は1.1です。 try { Assembly a; a = Assembly.LoadFile("C:\App\ModA.dll"); foreach(Type type in a.GetTypes()) { if(type == typeof(インターフェース)) { return true; } } } catch(Exception e) { MessageBox.Show("エラー発生"); } ソースはこんな感じです。スタックトレースってのはよく分かりません。 ごめんなさい。 >>664 Base.dllを先に読み込めばいいんですね。 明日試してみます。
668 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 23:05:34 ] ってしかもLoadFileじゃねーかよ
669 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 23:28:49 ] >a = Assembly.LoadFile("C:\App\ModA.dll"); もしかして〜 a = Assembly.LoadFile(@"C:\App\ModA.dll"); とか a = Assembly.LoadFile("C:\\App\\ModA.dll"); で直ったりして
670 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 23:44:47 ] まさかね まあBase〜っていってるから違うと思うけど。 しかしなー、LoadFromやLoadFile系はトラブるんだよなー できればフォルダを自由に指定ってのはやめた方が無難だけどなー
671 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 23:50:07 ] LoadFileはいろいろ制限が多いし、 LoadFromは署名がないと相対パスしかダメなんだっけ。 やっぱ構成ファイルを書きまくるとか。
672 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 00:25:37 ] MSDNから >LoadFile は、LoadFrom メソッドとは異なり、ファイルを LoadFrom コンテキスト内には読み込みません。 >また、読み込みパスを使用して依存関係を解決することもできません。 ModA.dllのあるディレクトリから依存のあるBase.dllを探してくれない
673 名前:656 mailto:質問 [2008/08/12(火) 00:41:21 ] >>669 書き込みミスです。@付きになってます。すみません。 LoadFromにすれば直るのでしょうか? >>664 の先に読み込むというのが気になるので、 それをまず試してみようと思います。 どちらにしても今すぐ確認はできませんので、 確認し次第再度書き込みます。 いろいろ助言をありがとうございます。
674 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 00:45:38 ] >>664 はLoadFileの制限ぽい感じだな
675 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 00:53:41 ] C#でアプリ作ってるのですが、.NET Framework入ってない環境で起動した場合、 強制終了になる前に任意のメッセージ出して終了するにはどうすればよいでしょうか?
676 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 08:07:28 ] 環境を調べるネイティブアプリ作って、入って無ければエラー出して終了、 入っていればC#アプリを起動するとか。
677 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 13:27:53 ] >>676 そのつもりでDOSスタブみたいな形で埋め込めればいいなぁと あれこれ模索してたりしてたんですが、やっぱ分けるしかないでしょうか。
678 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 14:33:44 ] >>677 先頭のほうにmscoree.dll::_CorExeMainを呼ぶjmp命令があるから、 その飛び先を変えてやればいいと思う。 ちなみに、XP以降のWindowsローダーはマネージドアセンブリを読み込んだ場合、 このネイティブなスタブコードを実行せずに、_CorExeMainから直接実行し始める。
679 名前:678 mailto:sage [2008/08/12(火) 15:15:17 ] 何が言いたいのかよく分からない文章になってたけど、 要するにXP,Vistaあたりでは必要なバージョンのランタイムがないときに、 実行前に任意のメッセージを出すことはできない言うことです。 スタブコードを書き換えるのはやったことがないけど、そこに感染するウイルスがいくつかあるんで、 もしかしたらアンチウィルスソフトウェアに文句言われる可能性はあるかもしれないですね。
680 名前:656 mailto:sage [2008/08/13(水) 00:01:05 ] LoadFromを使用して、先にBase.dllを読み込んでおけば 無事動くようになりました。 新たな問題はいくつか出てくるようになりましたが、 今のところ少しずつ解決していけてるので大丈夫だと思います。 丁寧な回答ありがとうございました。
681 名前:DD mailto:sage [2008/08/20(水) 13:29:19 ] ASP.NET2.0のGridViewで質問があります。使用言語はC#です。 1つの画面に以下のコントロールがあります。 ・TextBox (TextBox1) ・Button (Button1) ・GridView (GridView1) ・SqlDataSource (SqlDataSource1) TextBox1に検索する主キーの値を入れ、Button1をクリックすると、 その主キーの行の背景色を変更する、といったことをやりたいと思っています。 GridView1のSelectedRowStyleのBackColorに適当な色を指定して DataBoundイベントでGridView1.DataKeys[i].Valueをループで検索。 見つかったらGridView1.SelectedIndex = iとすることで ほぼやりたいことは実現できています。 この状態でGridView1のAllowPagingをTrueに設定し、 Button1クリック時に、検索してヒットした行のあるページに 自動的に切り替えるにはどのようにすればよいのでしょうか? 現状のコードでは、現在のGridView1のページしか検索出来ないためうまく出来ません。 どなたかご教授願えないでしょうか?
682 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 14:15:56 ] >>681 PageIndexで表示したいページを設定できる
683 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 09:19:12 ] VC# 2005とWindows Forms(.Net Framework 2.0)でOfficeライクにお絵かきできるコントロールを探しています。 実はVisioのDrawing Control(ActiveXベース)がやりたいことを網羅しているのですが、 アプリケーションを動作させる全ての端末にVisioを入れなければいけないので 泣く泣くあきらめました。 www.c-sharpcorner.com/UploadFile/mgold/VisioInDotNet12032006222024PM/VisioInDotNet.aspx 実行環境が無料で何か良いコントロールをご存知の方は お教え頂けますでしょうか。よろしくお願いします。
684 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 22:54:37 ] VC++2005EEとForm(.NET2.0)で作ったアプリを配布したいのですが どのような配布形式が一般的でしょうか? VS.net2003bootstrapper plug-inのようなものがあれば使いたいです。
685 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 02:37:40 ] .NET2.0はかなり普及してるし、そのままでも良いとは思う。 必要ならこの辺を参考に ttp://dobon.net/vb/dotnet/deployment/dotnetbootstrap.html
686 名前:DD mailto:sage [2008/08/25(月) 18:12:57 ] >>682 PageIndexで表示したいページを設定できることは分かっております。 問題なのは、DataBoundイベントでGridView1.DataKeys[i].Valueをループで検索した場合、 現在のPageIndex内のデータしか検索できないのです。 やりたいのは、全てのページを検索し、ヒットしたらそのページを表示することです。 DataBoundイベントではなく、何か別のイベントで検索する必要が あるのではないかと思うのですが、 そのイベントが何なのかが分かりません。 どのようにしたら良いのでしょうか?
687 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:01:53 ] GridViewではなく、DataSource自体をぐるぐる回って調べていくとか。 泥臭いかw
688 名前:DD mailto:sage [2008/08/27(水) 13:39:15 ] >>687 例えばDataSource自体をぐるぐる回って調べるとしたら、 どのイベントを捕まえればよいんでしょう? 実はそれをやろうとしてみたんですが、どのイベントで処理すればよいのか 分からなくて・・・。
689 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 23:57:48 ] 一端DataViewに取って、後はそれ使えば? 常識的に考えて並びは一緒だから、現在のページ×1ページあたりの行数+indexで行けるハズ
690 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 10:34:42 ] >>687 泥臭いも何もそれが正しいやり方だと思うんだが。 >>688 イベントって、Button1のクリック以外に何があるん? GridViewのDataSourceにセットしたものがDataTableオブジェクトだった場合、 Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound If e.Row.RowIndex = -1 Then Return If e.Row.Cells(1).Text.Contains(Me.TextBox1.Text) Then ' 検索ワードが入っている行の背景を緑に e.Row.BackColor = Drawing.Color.LightGreen End If End Sub Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Dim rIndex As Integer Dim tbl As DataTable = CType(Me.GridView1.DataSource, DataTable) For rIndex = 0 To tbl.Rows.Count - 1 If tbl.Rows(rIndex)(1).ToString().Contains(Me.TextBox1.Text) Then ' 検索ワードが見つかったらループから抜ける Exit For End If Next ' ページインデックスを算出 Dim pIndex As Integer = rIndex \ Me.GridView1.PageSize ' GridViewに算出したページインデックスをセット Me.GridView1.PageIndex = pIndex ' 適応実行 Me.DataBind() End Sub
691 名前:DD mailto:sage [2008/08/28(木) 18:27:18 ] >>689 一端DataViewに取る、その方法が分からないんです(T_T) そこのところ、ご教授願えないでしょうか。 >>690 Dim tbl As DataTable = CType(Me.GridView1.DataSource, DataTable) とありますが、当方C#なもので、よく意味が分かりません(^^ゞ C#で書くと DataTable tbl = (DataTable)GridView1.DataSource; なのかな、と思って試してみましたが、GridView1.DataSourceがNULLでうまくいきませんでした。
692 名前:DD mailto:sage [2008/08/28(木) 18:42:28 ] >>689 >>690 おかげさまで解決いたしました! 以下のコードでDataTableに取り出すことが出来ました。 DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty); DataTable table = dv.Table; 丁寧な解説、どうもありがとうございました。