[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/28 13:59 / Filesize : 282 KB / Number-of Response : 982
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

VB.NET質問スレ (Part12)



1 名前:前スレ972 [2005/07/17(日) 20:33:58 ]
VB.NETの質問全般です

過去スレ
VB.NET質問スレ (Part11)
pc8.2ch.net/test/read.cgi/tech/1114217190/
VB.NET質問スレ (Part10)
pc8.2ch.net/test/read.cgi/tech/1109343613/
VB.NET質問スレ (Part9)
pc5.2ch.net/test/read.cgi/tech/1106577850/
VB.NET質問スレ (Part8)
pc5.2ch.net/test/read.cgi/tech/1102512868/
VB.NET質問スレ (Part7)
pc5.2ch.net/test/read.cgi/tech/1096683017/
VB.NET質問スレ (Part6)
pc5.2ch.net/test/read.cgi/tech/1088812165/
VB.NET質問スレ (Part5)
pc5.2ch.net/test/read.cgi/tech/1078134703/
VB.NET質問スレ (Part4)
pc2.2ch.net/test/read.cgi/tech/1065269043/
【老若】VB.net質問スレ【男女】 (Part3)
pc5.2ch.net/tech/kako/1056/10562/1056281084.html
【老若】VB.net質問スレ【男女】 (Part2)
pc2.2ch.net/tech/kako/1043/10436/1043629429.html
【老若】VB.net質問スレ【男女】
pc2.2ch.net/tech/kako/1025/10258/1025848458.html

932 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 21:37:23 ]
自分でコントロール作ればいいんだよ。
ラベルなりなんなり継承して。
そんなの三分もあれば出来るよマジで。

933 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 21:47:14 ]
windows.formsなアプリで、起動直後に設定ファイルの有無の判断を行ない、
設定ファイルがある場合フォーム(A)を表示、なければ設定用のフォーム(B)
を表示といったアプリケーションを作りたいと思っています。

この時、A.exeを起動して設定ファイルのチェックをし A.exe のフォームを
表示せずにB.DLLを表示させられなくてつまづいています。
A.exeのフォームが必ずでてしまいます。

A.exe を起動しつつ、A.exeのフォームを表示したくない場合には
どのようにすべきでしょう?


934 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 21:51:38 ]
>>928
現在無し。2005から。

935 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 22:02:53 ]
モジュール作ってプログラムのプロパティのスタートアップの設定で
そのモジュールにする
で、そのモジュール(のmain)でApplication.Run(_form1)の前にForm2.Showdialogかな?

936 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 22:03:34 ]
>>933
適当なクラスにMainって共有メソッドを作って
そいつをプロジェクトのスタートアップにすべし。
っていうか、こんなのドトネトのTips紹介してるサイトをちょっと巡れば
調べがつくでしょ。

937 名前:933 mailto:sage [2005/11/08(火) 22:06:53 ]
ありがとうございます。
自分で Main メソッドを作ればいけるんですね。
助かりました。

938 名前:デフォルトの名無しさん mailto:sage [2005/11/08(火) 23:16:16 ]
オプション画面を作る時、左側のツリー選択で右側の画面を切り替える場合は、新しいフォームのインスタンスを作って右側だけに呼び出すという形でいいのでしょうか?
それとも、もっと一般的な形があるんでしょうか?

939 名前:デフォルトの名無しさん [2005/11/09(水) 00:08:57 ]
>>938
Formを普通のコントロールにして右にLoad

TopLevelだっけかな?

940 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 00:10:23 ]
ナンノコチャw



941 名前:デフォルトの名無しさん [2005/11/09(水) 00:15:10 ]
TopLevel = FalseにしないとForm内にFormを追加できねぇ

942 名前:904 [2005/11/09(水) 12:10:31 ]
1つのソースで完結する(ビルドできる)ソースファイル2つを
1つの実行ファイルにまとめたい(ソース1でソース2に記述したクラスを
呼び出す?)のですがMSDN見てもやり方がまったくわかりません

実際こういうことは不可能でソース2を解体してソース1に組み込まないとだめなのでしょうか?

943 名前:904 mailto:sage [2005/11/09(水) 14:10:58 ]
>>942は解決できました
ありがとうございました

944 名前:デフォルトの名無しさん [2005/11/09(水) 16:21:38 ]
今日VB.NET始めたばっかですが質問させてください
テキストボックスに入力した値を変数xに入れて
別の変数nを10のx乗させて変数yに格納したいんですが
Dim y As Double = n * E(x)
これだとだめでした
どうしたらいいんでしょうか^^;

945 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 17:03:23 ]
べき乗するなら
^
を使う
10^2 は 10の2乗^^


946 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 17:15:50 ]
E(x)って書くと、「xを引数として関数Eをコールする」か「配列Eのインデックスx番の値」って意味になっちゃう。

階乗演算子は ^
10のx乗は 10^x

変数nを10のx乗するってのは意味がわからんけど、察するに以下のようにすればいいと思う。
Dim y As Double = n * (10^x)

947 名前:944 mailto:sage [2005/11/09(水) 17:44:30 ]
>>945-946
できました!
ありがとうございます^^

948 名前:デフォルトの名無しさん [2005/11/09(水) 19:56:38 ]
ファイル→新規作成→プロジェクト→新しいプロジェクト→OK
とすると「オブジェクトでサポートされていないプロパティまたはメソッドです。」
と出て、新しく始める事ができません。
どうか、解決策を教えてください。

949 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 20:16:06 ]
開発環境を入れ直せ。

950 名前:デフォルトの名無しさん [2005/11/09(水) 20:37:23 ]
>>949
ありがとうございます。さっそく、やってみます。



951 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 20:47:01 ]
>>938
PanelかUserControlを派生させて、そこにそれぞれの画面を作る。
Formにそれぞれを重なるように配置して、表示するのを変えるにはそのコントロールをBringToFrontする。

952 名前:948 [2005/11/09(水) 21:23:14 ]
探したのですが、どこで開発環境の変更をするかわかりません。
誰か、教えてください。

953 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 21:26:12 ]
変更って何?

954 名前:948 [2005/11/09(水) 21:28:43 ]
間違えました。入れ直す、でした。

955 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 22:33:41 ]
vb.net で作成した DLL(Windows.Forms) を、参照設定する事なく、
インスタンスの生成を行ないたいのですが(フォームの表示をさせたい)
実現させる方法はありますか?



956 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 22:38:20 ]
System.Reflection.Assembly.LoadFromでアセンブリをロードして、
そのAssemblyでGetTypeして型情報を取得、
System.Activator.CreateInstanceでその型のインスタンスを作成。

957 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 23:02:51 ]
ありがとうございます。

GetType する時にクラス名がわかっていないといけないようですが、
クラス名がわからなくてもアセンブリのインスタンスを生成する
なんて事はできないでしょうか?



958 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 23:11:48 ]
型名も分からないのにインスタンスを作るってのもなかなか有り得ないと思うが……。
Assembly.GetTypesでType配列を取得して、それぞれBaseTypeを遡っていって調べてみるとか。

> アセンブリのインスタンスを生成する
これは意味不明だ。

959 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 07:48:54 ]
>>952
VisualStudioをアンインストールして
もう一度インストールする

960 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 09:38:57 ]
あるDBのマスタテーブルからデータを読み込む(書き込む機能は不要)クラスを作るとした時。
このデータの読み込むタイミングは以下のどちらが一般的でしょうか?

・コンストラクタでマスタのCodeを渡して読み込む
・コンストラクタでは何もせず、DataRead(Code)のようなメソッドを持ちそこで読み込む

上司に「コンストラクタは初期化なんだから何もせず、読み込むメソッドを持った方がいい」と指摘をうけたのですがどうなんでしょう。
なんか「初期化」の意味を取り違えてるような気がしないでもないのですが・・・
作る側としては読み込むメソッドを持つと、使う側で呼び忘れてエラーの元になってしまうと思ったので
コンストラクタで読み込んでしまうような作り方をしていました。




961 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 09:45:39 ]
一般的にはその上司の言が正しい。
特に処理が重くなる場合はコンストラクタに実装するのは避けるべき。

962 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 12:27:53 ]
ケースバイケースだろうけど俺は>>960の設計の方をむしろ推すね。
要するに読み込みを非同期にすりゃいいだけでしょ?
客から注文もらってから問屋に注文だすような店なら最初からイラネ。

963 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 12:58:49 ]
コンストラクタではまず重い処理はやるべきではない。
次に、どっちにも対応すればいいんだから・・・。

上司コンストラクタ − インスタンス生成だけ
>>960コンストラクタ − 生成して検索関数呼ぶ
検索ぱぶりっく関数 − 検索実行

面子潰さず、自分の意見通しつつ。

964 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 16:32:06 ]
textboxコントロールがフォーカスを受け取った時にコントロールの
背景色を変えようと思っているのですが、
フォーカスを受け取ったイベントとして、
Enter を使うべきか、GotFocus を使うべきか、どちらを
使うべきでしょうか?


965 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 16:39:18 ]
Enterを使うべきだとあちこちに書かれてると思うんだが。
GotFocus使ったらフォームをアクティブにしたときも発生したりするぞ。

966 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 17:09:41 ]
VB.NETのIF文で最初の条件がFALSEの場合2番目以降の比較は行なわないように
記述する方法はありますか?
dim x as boolean = false
dim y as boolean = true
if(x and y = nothing) then
の場合、xがFALSEなのでyの値が何であっても条件に該当しないので
このように最初の条件がFALSEになった場合、それ以降の条件判断を
して欲しくないのですが。IF文を2つにわけるしかないでしょうか?
よろしくお願いします。

967 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 17:15:09 ]
AndAlso
ちょっとはリファレンス見ようぜ

968 名前:960 mailto:sage [2005/11/10(木) 17:48:52 ]
>>961
>>962
>>963
レス感謝です。

「コンストラクタには重い処理を書くべきではない」ってのを今日まで知りませんでした。
1万件のレコードを、960に書いた2通りの方法でそれぞれ試してみましたが時間的な差は無かったです。
なにか実感できるようなサンプルってありますか?

969 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 18:02:03 ]
厳密にはデバッグできなくなるって理由でないの?>コンストラクタに書かない

970 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 18:29:26 ]
>>968
>「コンストラクタには重い処理を書くべきではない」ってのを今日まで知りませんでした
単に961の俺様ルールだと思うよそれ。
だってそんなルールに何の合理性のないじゃん。
すくなくとも無条件にいつでも合理的とはいえないよ。

というか、重いなら単に非同期で処理すればいいだけの話で
どうせ必須の引数なら最初から受け取っておく、必須の処理なら最初からやっておく
これが普通の考え方でしょう。
もちろん「特に理由がない限りにおいては」ね。



971 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 18:35:08 ]
つ コンストラクタの使用方法のガイドライン

972 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 01:03:50 ]
Cで作った xxx.dll 中の

typedef struct {
  int a;
  int b[50];
} X;
int test(X *z) {}

な関数を、VBで、

Structure X
  Dim a As Integer
  Dim b(50) As Integer
End Structure
Declare Function test Lib "xxx.dll" (ByRef z As X) As Integer

として使おうとしたのですが、VBでは構造体に固定長配列が使えないらしく、
エラーが出てしまいます。
構造体の中では b() だけ宣言して後でReDim b(50) しても、
アドレス的に a に連続しないのか、test を呼び出したときに落ちます。
どうしたらいいでしょうか。

973 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 03:50:01 ]
C#.NETでは書けて、VB.NETで書けないものってありますか?

974 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 04:40:09 ]
>>972
Imports System.Runtime.InteropServices 'コードの先頭で宣言

<MarshalAs(UnmanagedType.ByValArray, SizeConst:=50)> _
Dim b() As Integer

>>973
VB2005で可能になるけど、カスタムイベント、演算子のオーバーロード、XMLドキュメントあたり。

975 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 09:27:36 ]
つうか、コンストラクタで非同期処理なんてしてほしくないよな。


976 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 12:58:19 ]
>>973
unsafe コード

977 名前:デフォルトの名無しさん [2005/11/11(金) 15:05:20 ]
質問です。

データグリッドで、1つのセルに文字を打ったとき、
打たれた文字を判別することはできますか?

データベースと連携させていて、aと打たれたらaから始まるコード(商品コードなど)を
そのセルの部分でコンボボックスで表示させたいのですが。

978 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 22:33:10 ]
>>973
using

979 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 22:54:59 ]
>>977
データグリッドの編集中のセルの正体はTextBoxだから
そのTextBoxへの参照を取得すればなんでもできるんじゃない?

TextBoxへの参照を取得する方法は・・・忘れたけど別に難しくないというか
裏技的なものは何もなく、なにかのオブジェクトのプロパティで明示的だったと思う。

ていうかデータグリッドの使い方紹介してるサイトなんていっぱいあるでしょ。
こんなところで質問しなくても。

980 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 23:19:59 ]
>>968
常に全件を抱え込むオブジェクトならどっちで実装しても差は無いと思う。
けれど、Formで使用するマスタデータを管理するクラスなんかだと常に全件が必要なわけ
でもないからメソッドやプロパティが呼び出された時に初めて実際にDBへアクセスするとい
うProxyパターンを適用するのも一つのやり方。
Formを開くたびにマスタ読み込みで数秒待たされるというのはUIの設計としてもマズイ。




981 名前:最凶VB厨房 mailto:sage [2005/11/12(土) 09:38:46 ]
次のスレッドはこちら

VB.NET質問スレ (Part13)
pc8.2ch.net/test/read.cgi/tech/1131755402/






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<282KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef