VB.NET質問スレ(Part33)

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
前スレ

VB.NET質問スレ(Part32)
http://pc12.2ch.net/test/read.cgi/tech/1258592769/l50

テンプレは >>2-4 あたり
2デフォルトの名無しさん:2010/01/17(日) 23:36:02
MSDN
  http://msdn.microsoft.com/ja-jp/library/ms229284.aspx
どぼん!のVB道のトップページとTipsページ
  http://dobon.net/vb/
  http://dobon.net/vb/dotnet/index.html
Insider.NET
  http://www.atmarkit.co.jp/fdotnet/index.html
宇宙仮面の C# プログラミング
  http://uchukamen.com/
.NET TIPS
  http://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html
緑のバイク ★ 初めてのC# プログラム全般
  http://homepage3.nifty.com/midori_no_bike/CS/
VB.NETとC#でデザインパターン
  http://hccweb1.bai.ne.jp/tsune-1/
匣の向こう側
  http://www.ne.jp/asahi/nami/mei/index.html
WisdomSoft
  http://wisdom.sakura.ne.jp/
じゃんぬねっと
  http://jeanne.wankuma.com/
どっとねっとふぁん - C# Tips And Samples -
  http://homepage3.nifty.com/dotnetfan/index.html
  http://dotnetfan.org/
C#プログラミングTips
  http://www.atmarkit.co.jp/fdotnet/csharptips/index/csharptips_index.html
3デフォルトの名無しさん:2010/01/17(日) 23:36:21
CodeProject
  http://www.codeproject.com/vb/net/
the GotDotNet Home Page
  http://www.gotdotnet.com/
KEN's .NET
  http://www5b.biglobe.ne.jp/~yone-ken/VBNET/index.html
Cetus Links: 19,498 Links on Objects and Components / .NET
  http://www.cetus-links.org/oo_dotnet.html
HIRO's.NET
  http://vbdotnet.fc2web.com/index.html
@IT:特集 .NET開発者のためのオンライン・リソース・ガイド
  http://www.atmarkit.co.jp/fdotnet/special/onlineres/onlineres_01.html
.NETでいきまっしょい!
  http://santamartadotnet.hp.infoseek.co.jp/
これがほしかった!厳選サンプルツール集
  http://anetm.com/dev/tools/vbdotnet.htm
ぬーやんのdotNET講座
  http://www.geocities.jp/nuu_yan/dotNET/index.html
PINVOKE.NET
  http://www.pinvoke.net/
WinAPI Database for VB Programmer
  http://www.winapi-database.com/
4デフォルトの名無しさん:2010/01/17(日) 23:36:39
Windows Api programming in C# , VB.NET, and VB6. Examples of P/Invoke and DllImport with Source code
  http://custom.programming-in.net/
CodeZine
  http://codezine.jp/
ConvertCSharp2VB
  http://www.kamalpatel.net/ConvertCSharp2VB.aspx
@IT:.NET Tools
  http://www.atmarkit.co.jp/fdotnet/tools/index/index.html
SharpLibrary Redirector
  http://www.sharplibrary.com/
MSDN アカデミック アライアンス 技術資料
  http://www.microsoft.com/japan/msdn/academic/articles/
「300 秒でズバリ !!」&「10 行でズバリ !!」シリーズ
  (VS2005) http://www.microsoft.com/japan/msdn/thisweek/300x10/
  (VS.NET 2003) http://www.microsoft.com/japan/msdn/thisweek/wednesday/
PAPA'n VB
  http://papanvb.i-love-vb.net/
  (旧コンテンツ) http://www.mitene.or.jp/~sugisita/index_old.html
VB レスキュー花ちゃん
  http://www.bcap.co.jp/hanafusa/dotnet/index.html
VB中学校
  http://homepage1.nifty.com/rucio/main/main.htm
初心者から中級者のためのVB
  http://www7b.biglobe.ne.jp/~vb_beginner2008/

テンプレここまで
5デフォルトの名無しさん:2010/01/18(月) 16:01:55
VB.Timer
は.NETには存在しないの?
6デフォルトの名無しさん:2010/01/18(月) 16:09:28
えっ
7デフォルトの名無しさん:2010/01/18(月) 17:37:00
System.Windows.Forms.Timer
ただし精度は全く当てにならないから時間計測には使っちゃダメ
8デフォルトの名無しさん:2010/01/18(月) 19:20:18
MonthCalendarを複数月表示にしている場合、
表示範囲を取得するのはどうすればいい?

たとえば12ヶ月分ドーンと出てるときに、2010/01〜2010/12が今表示されてるー、みたいな感じ

SelectionRangeで取れるのは選択中の日付なんだよな…
9デフォルトの名無しさん:2010/01/18(月) 19:28:53
vb2008にてプロジェクトに対してユーザースコープでプロパティ(例:propA)を設定しました。
このpropAの規定値(My.Settings.Reset()で設定される値)を取得する方法は用意されているのでしょうか?
10前スレ998:2010/01/18(月) 19:36:02
前スレ>>999さん

ありがとうございます。
やっぱりネットに向けてポートを開放するのは危険ですよね。

以前、勤めていた会社では本社にあるサーバーから、支店のパソコンの
Windowsフォームアプリにマスタのデータを引っ張っていました。
そんなシステムを自作したいと思っているのです。

その時はISDN回線でした。
似たようなことをするには、どういったプログラムを組めば
よろしいのでしょうか?ヒントが掲載されたサイトだけでも
ご教示いただければ幸いです。どうかよろしくお願いいたします。
11デフォルトの名無しさん:2010/01/18(月) 19:41:46
>>8
GetDisplayRange
12デフォルトの名無しさん:2010/01/18(月) 19:48:59
>>9
My.Settings.Properties("プロパティ名").DefaultValueとか
13デフォルトの名無しさん:2010/01/18(月) 19:55:09
>>12
おお!ありがとうございます!
ライブラリの中を探しまくったのに、こんな近くにあったなんて。。
14デフォルトの名無しさん:2010/01/18(月) 21:48:02
前スレの1000
>>http://pc12.2ch.net/test/read.cgi/tech/1263738929/1000
gj ナイスタイミングだ
15デフォルトの名無しさん:2010/01/19(火) 08:23:27
String変数に
a,b,c
d,e,f
g,h,i
が格納されています。つまり、カンマ区切りの行が3行、それが1つの変数に入っています。
これを、DataTableオブジェクトに入れるシンプルな方法はありますか?
16デフォルトの名無しさん:2010/01/19(火) 08:52:43
>>11
できた!
ありがとうありがとう
17デフォルトの名無しさん:2010/01/19(火) 08:58:04
http://smdn.invisiblefulmoon.net/programming/tips/activate_window_by_hotkey/

ここのサイトのCtrl+Alt+SpaceのところをF11に変えたいんですけど
どこを変えればいいんですか?
18デフォルトの名無しさん:2010/01/19(火) 09:56:29
>>15
俺にはこれが限界。

For Each r As String In 元の変数.Split(Microsoft.VisualBasic.ChrW(&HD))
    If r.Trim() = "" Then
        Exit For
    End If
    Dim row As DataRow = テーブル.NewRow()
    row.ItemArray = r.Split(","c)
    テーブル.Rows.Add(row)
Next

区切りが CR じゃなく CR+LF だと、最初の Split がもちっと面倒。
19デフォルトの名無しさん:2010/01/19(火) 10:28:32
>>18
ありがとうございます。うまく動きました。

&HDがvbCrですね。
20デフォルトの名無しさん:2010/01/19(火) 10:32:14
これまでWindowsXp+VS2005でやって来ていて、そのときは、ソリューション
をソースで実行(Debug)しても、それからそれでできたExeファイル
を直接ダブルクリックで実行しても、同じ動作をしていました。
ところが、WindowsVista+VS2005にしてやってみると、ソースで実行(Debug)
すると動くのに、できたExeファイルを直接ダブルクリックして動かすと
Xmlファイルの読み込みで失敗するのですが、こういったことはXpでは
経験がありません。これ解決したいのですが、Vistaでは何か新しい制約
があるのでしょうか。(使用Framework=2.0)

これはVS2005からVS2008に移行すると解決するでしょうか?よろしく
お願いします!
21デフォルトの名無しさん:2010/01/19(火) 11:48:09
権限で引っかかってるだけじゃねーの
22デフォルトの名無しさん:2010/01/19(火) 17:15:40
>>20
・UACで怒られる
・32bit⇔64bitでエラー
とか?
23デフォルトの名無しさん:2010/01/19(火) 18:28:14
>>21-22
ご指導ありがとうございます。数回試したのですが、>>20のような状況で
そのときのメッセージでは確かに「アクセス許可がない」といったものが
出ていました。

その後でまたやってみたところ、今度は該当のXmlファイルの中の特定の箇所
の文字(0x01)がNGだという内容のメッセージがソースでのデバッグでも出る
ようになり、それがどうやっても取れないのであきらめて、新しくファイルを
削除して初期からやり直してみたところ、今度はソースでもExeファイルでも
正常に読み込みできるようになりました。状況がはっきりわからず完全対策が
打てないのですが、またやっていく中で調べてみます。よくわからずすみません
です。ありがとうございます。
24デフォルトの名無しさん:2010/01/19(火) 19:41:06
すみませんの直後にありがとうございますと書く人は
たいていうつ病。
早目の精神科受診を勧める。
25デフォルトの名無しさん:2010/01/19(火) 20:15:45
VB2008を使ってます。
印刷するときのページサイズ、印刷可能範囲、ページ余白とかはプロパティで取得できますが
具体的にその値ってどこから得られるのでしょうか?
26デフォルトの名無しさん:2010/01/19(火) 21:07:51
プリンタドライバから。
27デフォルトの名無しさん:2010/01/21(木) 00:54:07
ASP.NETで質問です。
開発環境のVisualStudio2005上で実行した場合、
つまりVS内蔵の(?)WEBサーバー機能で動かした場合は意図したように動き、
Webサイトのコピーを使って本番環境(Windows2008)に丸ごとコピーし、
ブラウザにhttp://サーバー名/と打ち込んで実行させると
動きが変わります。
どのようなアプリかというとImageとButtonコントロールが配置されてあり、
ImageのImageURLプロパティで画像へのパスを設定し、表示させています。
Buttonに関しては配置しているだけでコードを追加していないため
押されるとPostBackが発生し、画像が最新のものに更新されます。
つまりある定期的に差し替えられるファイルをブラウザで最新のものを見たいので
更新ボタンを付けただけのアプリです。
本番環境ではなぜかファイルを差し替えた後更新ボタンを押すと
カチッと音がしてリロードされるのですがなぜか画像は差し替え前のままで更新されません。
F5キーを押すと更新されます。
画像のフルパスへ直接アクセスした場合は新しいものが表示され、
その後にASP上のボタンを押したら画像も更新されます。
本番環境は勝手に画像をキャッシュしてボタンを押してもキャッシュを表示しているように見えます。
ちなみに本番環境をWebに公開設定し、携帯から利用した場合はなぜか正常に動作します。
Imageコントロールがキャッシュしてるのかと思いコントロールではなく
ただのImageタグに変えても結果は同じでした。
本番環境とVSの環境で何が違うために挙動が変わるのでしょうか。
また、どうやって対処すべきでしょうか。
28デフォルトの名無しさん:2010/01/21(木) 03:44:39
>>7ふーん
29デフォルトの名無しさん:2010/01/21(木) 03:52:02
DataTable.Select メソッド (String, String)
filterExpression
行にフィルタをかけるために使用する基準。
sort
列と並べ替え方向を指定する文字列。
--------------------
だと行はしぼれてもすべての列が抽出されちゃうけど
特定の列だけ得るにはどうすれば
30デフォルトの名無しさん:2010/01/21(木) 04:17:52
>>29
カラム構成が変わったら、それはもう別のテーブルなわけで
「新規テーブル作成、必要なカラムを作成、行のコピー」を
自分で書くしかない。
31デフォルトの名無しさん:2010/01/21(木) 04:55:35
自分で
32デフォルトの名無しさん:2010/01/21(木) 08:09:51
>>27
キャッシュをクリアする
33デフォルトの名無しさん:2010/01/21(木) 08:34:44
>>27
>>32 の言うように↓の一行追加で直ると思うよ
 <meta http-equiv="Pragma" content="no-cache" />
34デフォルトの名無しさん:2010/01/21(木) 15:51:13
>>27
<img src="/images/hoge.jpg?20100121155100">
とかすればいいよ
35デフォルトの名無しさん:2010/01/21(木) 15:57:44
ABC:
Do
dim Sum1 as integer ・・・@
Sum1=Sum1+1
go to ABC
Loop
だとSum1の値が@の部分で0にならないけどなんで
36デフォルトの名無しさん:2010/01/21(木) 16:04:26
まずはそんな糞コードを捨てるところから始めろ
37デフォルトの名無しさん:2010/01/21(木) 16:11:28
dim Sum1 as integer = 0
にしないとだめだよ
38デフォルトの名無しさん:2010/01/21(木) 17:09:54
どうせブレークポイントを@の行に付けてるとかだろ。
39デフォルトの名無しさん:2010/01/21(木) 17:41:07
Dim sum1 As Integer
Dim sum1 As Integer
同じ変数のDim文が複数あるとエラーになるのに
>>35みたいなのがエラーにならないのは変だよね。
40デフォルトの名無しさん:2010/01/21(木) 21:25:14
過去のしがらみというやつです
41デフォルトの名無しさん:2010/01/21(木) 23:00:20
いや違うだろ。スコープから勉強し直せハゲ。
4227:2010/01/21(木) 23:27:03
>>32
>>33
試してみましたが症状は変わりませんでした。
念のため下記3行を追加しましたが同じでした。
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="-1">

>>34
"20100121155100"がどこから来るのかわかりませんでしたが
画像のパスに日時をパラメータと入れることで更新前ファイルと更新後ファイルの
ファイル名が変わり、ブラウザがキャッシュを利用しなくなるという理屈ですね。
これでうまくいきました。
ありがとうございます。
開発環境(VS上)ではなぜキャッシュを使わなかったかは置いておいて、
ボタンによるpostbackとF5の更新では動きが違うんですね。
postbackだとキャッシュを利用し、F5だとキャッシュが非利用のため画像が更新されます。
一応ブラウザ(IE8)のキャッシュをOFFにするとファイル名にパラメータを入れるようなコードは不要になりますが、
そもそも今回の減少はサーバー側のキャッシュが効いている事が問題でしょうか。
それともクライアントのブラウザ側でしょうか。
画像ファイルにパラメータつけることで問題自体は回避できましたが
正攻法はどのようにすべきでしょうか。
43デフォルトの名無しさん:2010/01/21(木) 23:31:37
HTTPをちゃんと勉強した方がいい。

304が帰ってきてるだけだろ。
44デフォルトの名無しさん:2010/01/21(木) 23:50:28
proxyがキャッシュしてるならパラメータをつけるしかない
45デフォルトの名無しさん:2010/01/22(金) 11:30:09
専用帳票への印字位置調整値を app.config の中に書いてます。
スコープはアプリケーションです。

My.Settings 〜 で値を取得して利用していますが、
exe 実行中にメモ帳で app.config の中身を書き換えても
起動時の情報がキャッシュされているのか即座には反映されません。

一旦 exe を落として再起動かけると大丈夫ですが。

印字位置の調整だもんで、数値を弄って印刷させてみて〜
の繰り返しになるんですけど、exe の再起動を伴うと大変です。

My.Settings.Reload とか My.Settings.Reset とか怪しいと思って
app.config の中の値を利用する前に呼び出してみたんですが変化ありません。
何か一発で効くメソッドとかありませんか?
46デフォルトの名無しさん:2010/01/22(金) 12:57:59
>>45
>app.config の中身を書き換えても
それは Visual Studio で実行する直前に、
bin\Debug\(exeファイル名).config または
bin\Release\(exeファイル名).config にコピーされる元ファイル。
実際 (上記いずれか) の .config ファイルの方を書き換えないと。
47デフォルトの名無しさん:2010/01/22(金) 13:52:05
いろいろ調べたのですが、わからないので質問させてください。
VB.net、VisualStudio2008で制作しています。

半透明の丸い形のフォームを作ったのですが、
フォームの縁にジャギーが残ってしまい、
フォームの縁にアンチエイリアス処理を行いたいと考えています。

アンチエイリアス処理を行った円形の描画はできたのですが、
それをフォームにしようとすると、
アンチエイリアスの効果がフォームのBackColorに適応されてしまいます。

パスにアンチエイリアス処理をかけることは難しそうで、
パスを使ってフォームの形自体を変える事もできませんでした。
48デフォルトの名無しさん:2010/01/22(金) 14:12:26
SplitContainerでPanel1Collapsedにしてる時にパネル2に
Fillしてるコントロールがサイズ変更に追従しないのだけど
どうすればいいでしょ
49デフォルトの名無しさん:2010/01/23(土) 15:27:57
HttpWebRequestクラスとGttpWebResponseクラスで某サイト専用のブラウザのようなものを作っているのですが、
あらかじめ登録したIDとパスワードでログインをしてからアクセスしないとだめなのですが、
どうもうまくいきません。
ヤフーでログインを試みたら正常にログインしてその後のアクセスも正常にできたので
リクエストのPORTやクッキーの使い方は致命的には間違っていないようなのですが
何がわるいのかわかりません。
ログインしようとしているサイトは親ドメインでログインを一括して受け付けているようなのですが、
実際アクセスしたいドメインとは違うため、クッキーコンテナから必要なクッキーを選び出す段階で
必要なクッキーが得られていないのではないかと思うのですが、そういう場合はどうしたらよいでしょうか?
(POST後にいくつかのクッキーは帰ってきています。)

IDやパスワードをPOSTするアドレスは
ttps://www.google.com/accounts/ServiceLogin?
なのですが、
実際にアクセスしたいのは
ttp://www.youtube.com/
のアドレスです。
service=youtubeを付けてPOSTしています。
50デフォルトの名無しさん:2010/01/23(土) 15:32:23
ieHttpHeadersやらWiresharkやらで、送受信されてる内容を
比較してみろよ。
51デフォルトの名無しさん:2010/01/23(土) 16:27:47
>>49
今のとこのソースとユーザーIDとパスワードをうpしてくれたら
直してあげるよ。
とりあえずそこまでが面倒くさいから。
52デフォルトの名無しさん:2010/01/23(土) 16:52:24
webbrowserでログインさせるんじゃだめ?
5349:2010/01/23(土) 17:13:47
レスありがとうございます。
>>50
httpの閲覧ツールは使っているのですが、内容から原因は特定できませんでした。
httpの閲覧ツールでも一回のポストででログインが成功しているので
クッキーの使い方に問題があるような気がしてきました。
>>51
IDとパスワードはちょっとまずいような気がするのですが・・・
>>52
それだとログイン後のクッキーをローカルから持ってきて
HttpWebRequestで使える型の変数に入れるところまでが難しそうです。
(その後のアクセスはクッキーを使ってHttpWebRequestクラスとGttpWebResponseクラスを使いたいため)
54デフォルトの名無しさん:2010/01/23(土) 17:48:13
まあCookieContainerの使い方が間違ってるだけだろうね
55デフォルトの名無しさん:2010/01/23(土) 17:56:03
だから比較してみろ、って言ってんだよ。
56デフォルトの名無しさん:2010/01/24(日) 14:53:47
リモートホストとサーバーネームの違いは?
57デフォルトの名無しさん:2010/01/24(日) 19:07:27
Microsoft Visual Studio 2008とかSQL Serverとかをいったんアンインストールしたいんだけども、どう自動アンインストールツールをダウンロードすればいいのでしょうか?
58デフォルトの名無しさん:2010/01/24(日) 19:17:15
にほごんでおk
59デフォルトの名無しさん:2010/01/24(日) 19:21:53
>>58
なんだオマエ?名を名乗れ!
60デフォルトの名無しさん:2010/01/24(日) 19:26:21
フォーマットすればいいんじゃね?
61デフォルトの名無しさん:2010/01/24(日) 22:18:28
>>57
まともにインストールできてるなら
「プログラムの追加と削除」からアンインストールするね、普通の人は。
62デフォルトの名無しさん:2010/01/24(日) 23:18:01
知的障害者相手にするの止めようよ。
63デフォルトの名無しさん:2010/01/25(月) 12:23:13
メディアプレイヤコントロールをフォームに貼り付けたアプリは
配布した相手のパソコンがどんなのでもちゃんと音なる?
64デフォルトの名無しさん:2010/01/25(月) 12:29:07
相手のパソコンにサウンドボードやスピーカーが装備されていなければ
音は鳴らないだろうなJK
65デフォルトの名無しさん:2010/01/25(月) 12:42:07
あいてがwmpもってないとどうなるやら
66デフォルトの名無しさん:2010/01/27(水) 14:08:06
フォーム2を、フォームのプロパティでFromBoderStyleを「None」にした状態で
Alt+Tabキーで表示されるウインドー切り替え画面に表示させたくないのですが
どうしたらよろしいでしょうか

調べてみたんですけどFromBoderStyleを「FixedToolWindow」にすればいいのらしいですが
FromBoderStyleは「None」のままにしたいです

教えてくださいエロい人
67デフォルトの名無しさん:2010/01/27(水) 14:15:55
FromBorderStyleは分かりません
68デフォルトの名無しさん:2010/01/27(水) 14:17:59
FromBoderStyleを「FixedToolWindow」にする
69デフォルトの名無しさん:2010/01/27(水) 14:37:40
CreateParamsをオーバーライドして、
MyBaseから取ってきたCreateParamsのExStyleにWS_EX_TOOLWINDOWを追加
ShowInTaskbarもFalseにしとかないと効かないっぽいが
70デフォルトの名無しさん:2010/01/27(水) 19:49:51
VB2008からACCESS2007のマクロを実行するにはどうすればいいんでしょうか。
comのMicrosoft Access 12.0 Objcet Libraryを参照追加してもAccess.ApplicationClassが使えません
71デフォルトの名無しさん:2010/01/29(金) 16:20:32
(1)Form1上のボタンをクリックして、Form2クラスのFormをインスタンス化して、名前(Text)を付けて開く。

(2)デスクトップ上に開いているFornの名前(Text)をListBox1にすべて表示する。 ←ここまでは出来る。

(3)ListBox1で選択したFormを閉じる。

(3)を実行するにはListBox1で選択された名前のForm(Text)を閉じるようにすればいいと思うんですが
Formの名前(Text)を指定して閉じるってどうすればいいのでしょうか?
72デフォルトの名無しさん:2010/01/29(金) 18:11:09
どうやって取得してるんだよ?

取得方法がわかるんだったら、(3)の方法も思いつきそうなもんだけどな。
73デフォルトの名無しさん:2010/01/29(金) 18:32:31
>>72の言うことはもっともなわけだが・・・

例えば取得してるところでフォームのインスタンスと名前をもつ情報をListBoxのデータに結びつけて
それで処理するっちゅうのはいかが?
74デフォルトの名無しさん:2010/01/30(土) 01:27:18
(2) で Application.OpenForms を使ってるなら
(3) は Application.OpenForms("name").Close() でやればいいだけの話であって。
75デフォルトの名無しさん:2010/01/30(土) 16:47:17
それって何が返るんだ?
76デフォルトの名無しさん:2010/01/31(日) 07:54:14
argオブジェクト
77デフォルトの名無しさん:2010/01/31(日) 12:47:16
Dim Encoder As System.Text.Encoding = System.Text.Encoding.GetEncoding("shift-jis")

Dim req As HttpWebRequest = CType(WebRequest.Create(ItaUrl), HttpWebRequest)

Dim res As WebResponse = req.GetResponse()

Dim resStream As Stream = res.GetResponseStream()
Dim sr As StreamReader = New StreamReader(resStream, Encoder)

Dim result As String
result = sr.ReadToEnd()

この方法でhtmlを受け取っているのですが、時々最後の行で
「負の値ではない数値が必要です。」というエラーが出るのですが
これの対処方法を教えて頂きたいです。リクエストをやり直すかレスポンスを待つなどの方法で
エラーを単純に飛ばさずにhtmlを取得したいです。
78デフォルトの名無しさん:2010/01/31(日) 16:10:00
ファーストサーバが無料サービスを終了。

Microsoft の WebMatrix(ASP.NET開発者向け支援ホスティング)を
引き継いだのに、勝手に終了宣言。
後任のサービスなし。

無料でASP.NETアプリおけるところ、
オススメを教えてください。

以下のスレではいいところが見つかりませんでした。↓
(無料ASP.NETホスティング)
http://pc11.2ch.net/test/read.cgi/hosting/1264392839/
79デフォルトの名無しさん:2010/01/31(日) 17:46:17
1つのサイトならWindowsXPでも外部に公開できるASP.NET用無料Webサーバーソフトがあるだろうがそれ使え
80デフォルトの名無しさん:2010/01/31(日) 18:14:13
それじゃセキュリティの弱い自分を
世の中の皆様にさらけだしてしまうだろうがw

ハードのセキュリティを考えずに自分の作ったシステムを
代理で稼動してくれるところに意義があるのに。
81デフォルトの名無しさん:2010/01/31(日) 18:43:49
こけつをえずばこじをえずっていう
82デフォルトの名無しさん:2010/01/31(日) 22:46:23
いわない
こけつはいらない
こじもいらないが
83デフォルトの名無しさん:2010/01/31(日) 23:52:12
「おケツに入れずんばイボ痔も癒えず」と言ったのはタマネギ何号だったか…
84デフォルトの名無しさん:2010/02/01(月) 04:14:00
3。

はい次の方ー
85デフォルトの名無しさん:2010/02/01(月) 16:46:06
ComponentOne って全然話題にならないな。
みんな使ってないのか?
86デフォルトの名無しさん:2010/02/01(月) 20:34:39
MS製でないライブラリはそもそもスレ違い
87デフォルトの名無しさん:2010/02/01(月) 21:57:27
VB6以前に比べると、コンポーネントの拡張もしやすくなったし、そもそもいろいろ準備されてるし。
あんまり、サードパーティ製のコンポーネントを買おう、とも思わなくなったなぁ。
88デフォルトの名無しさん:2010/02/01(月) 23:26:33
キッチンタイマーのような物を作っています
テキストボックスを作り、クリックすれば今の時間+5分としたいのですが、うまくいきません
戻り値は"hh:mm:ss"になります。
どうすればいいんでしょうか・・
Private Sub TextBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Click
TextBox1.Text = Format(CDate(Now) + CDate("00:05:00"), "hh:mm:ss")
End Sub
また↓だとstring型で結合されちゃいます。超初心者でごめんなさい。全然出きなくて泣きそうです。お願いします。
TextBox1.Text = CDate(Now) + CDate("00:05:00")
89デフォルトの名無しさん:2010/02/01(月) 23:33:09
おい例えば今日に今日を足すってどんな計算なんだ?
90デフォルトの名無しさん:2010/02/01(月) 23:50:03
>>88
釣りじゃないよね?
はい、どうぞ
TextBox1.Text = DateAdd(DateInterval.Minute, 5, Now)
91デフォルトの名無しさん:2010/02/01(月) 23:51:49
TextBox1.Text = Date.Now.AddMinutes(5).ToString("hh:mm:ss")
92デフォルトの名無しさん:2010/02/01(月) 23:53:37
Now+Now
と思っているのですが違うみたいですね。文字列で連結されちゃいました
date型って計算する時はdouble型に変換されると思ってたんですが、あれはvbaだけの仕様なのですね
now+1だと翌日になったりしてたと思うのですが
VBになって仕様が変わったようで、見た目が似てるだけに、混乱しております。おたすけ下さい
93デフォルトの名無しさん:2010/02/02(火) 00:05:07
>>92
それぐらい調べる能力もないのかしら・・・?

VB使いの底辺って恐るべし・・・www
94デフォルトの名無しさん:2010/02/02(火) 00:17:50
助け舟が2艘出てるのにスルーだしな・・・
95デフォルトの名無しさん:2010/02/02(火) 00:21:05
>>88です
>>90ありがとうございました!
>>93精進します!
もうVBAの子とはしばらくわすれて、1から勉強し直します
余談ですが、vbaだとnow+nowで2120/3/8になりました。単純にシリアル値同士足してるのでしょう
96デフォルトの名無しさん:2010/02/02(火) 00:30:07
余談なんてどうでもいいこと書くくらいなら、>>91にも目を通せよ。
9790:2010/02/02(火) 01:09:21
>>95
釣りじゃなかったのね。

ちなみに表示は91みたいにする場合は
 TextBox1.Text = DateAdd(DateInterval.Minute, 5, Now).ToString("HH:mm:ss")
です。年月日も入れるときはToString("yyyy/MM/dd HH:mm:ss")

93の人が言うように『DOBON.NET』や『VBレスキュー(花ちゃん)』などが分かりやすいので
人に聞く前に調べた方が早いですよ。

VBAやVB6は、適当に書いても何となく動いちゃいますが、正確に書かないとOSや環境に
よって違う動きになったりしますよ。
98デフォルトの名無しさん:2010/02/02(火) 09:35:10
俺も大昔同じ失敗をしたことがあるな
原因は+演算子のオーバーロードの仕様が違うってことでok?
99デフォルトの名無しさん:2010/02/02(火) 11:24:23
それ以外何かあるか
100デフォルトの名無しさん:2010/02/02(火) 12:14:22
Date.Now.AddMinutes(5).ToString("hh:mm:ss")

DateAdd(DateInterval.Minute, 5, Now).ToString("HH:mm:ss")

は、どちらの記述が望ましいの?
101デフォルトの名無しさん:2010/02/02(火) 12:23:59
DateTime同士の加算は意味的に間違ってる
減算やTimeSpanとの加算は可能
102デフォルトの名無しさん:2010/02/02(火) 12:26:33
常にDateTimeのメソッドを使うのが望ましい
103デフォルトの名無しさん:2010/02/02(火) 12:43:50
>>101
加算が間違ってて、減算はまちがってないのか?
その意味的違いとやらを教えて欲しいが
104デフォルトの名無しさん:2010/02/02(火) 12:56:30
よく分からんが多分言いたいのは

 時刻-時刻=時間
 時刻+時間=時刻
だが
 時刻+時刻=無意味
ってことだろ。
105デフォルトの名無しさん:2010/02/02(火) 13:10:41
DateTimeは時刻しか表せないからな
昔みたいに時間を兼ねてない
時間を表すのはTimeSpan
106デフォルトの名無しさん:2010/02/02(火) 14:09:26
時刻と時間をあらわすものが同じという仕様がそもそも狂ってたわけで
107デフォルトの名無しさん:2010/02/02(火) 16:37:14
>>103
絶対量である 2007/01/05 12:30 に
2010/02/02 16:35を足すとか
2倍するとか
そういう演算に意味があるというなら
むしろこっちが教えて欲しいくらいだ。
108デフォルトの名無しさん:2010/02/02(火) 19:49:12
hhhh
109デフォルトの名無しさん:2010/02/02(火) 22:28:03
>>107
時刻を絶対_量_って言うとそれはそれでちょっと問題があるとおもうが...
絶対量に対する演算が無意味だっていうなら
加算でも減算でも同じく無意味だろ

加算か減算かが意味をもってるんじゃなくて>>104が言うように
+と-という演算子の表す意味が違ってるって話だろう
>>104には時刻-時間=時刻ってのも書いといてほしかったな
110デフォルトの名無しさん:2010/02/02(火) 22:34:46
時刻が座標で、時間がベクトルだと考えれば
時刻+時間 も 時刻-時間 も同じ事だな
111デフォルトの名無しさん:2010/02/02(火) 22:35:22
基数と序数の違い
2番目+3番目<>5番目
112デフォルトの名無しさん:2010/02/02(火) 22:46:05
位置に位置は足せない
113デフォルトの名無しさん:2010/02/03(水) 01:06:31
時刻-時刻=時間なんだから、時刻+時刻=時間で整合性がとれるんだろうけど
実際は時刻+時刻は時間にならないのがおかしいんだろうな

でも、時刻-時刻は直感的にも時間なんだが
時刻+時刻は直感的には時間にならないよなぁ
114デフォルトの名無しさん:2010/02/03(水) 01:22:12
もういいよ、それ
115デフォルトの名無しさん:2010/02/03(水) 02:39:29
負の時刻なんて概念が一般的には存在しないって事と、ここがVBスレだって事考えてから書けボケ
116デフォルトの名無しさん:2010/02/03(水) 13:52:40
紀元前
117デフォルトの名無しさん:2010/02/03(水) 13:55:15
質問させて下さい。
DataSetから特定の1行だけを別のDataSetに入れる方法を教えて頂ければ
と思います。

FromDataSet.Tables(0).Rows(0)=ToDataSet.Tables(0).Rows(0)

こんな感じでやると勿論エラーが出ました。
VB6から.netに挑戦しようと思うのですが躓く事ばかりです。。。
118デフォルトの名無しさん:2010/02/03(水) 16:20:22
ホットキーを使ってF12を押したときにフォームが非アクティブな時にフォームをアクティブにするようにしたんですが
フォームがアクティブなときにF12を押すとフォームが非アクティブになるようにするにはどうすればよいですか?
119デフォルトの名無しさん:2010/02/03(水) 17:16:51
>>117
既存行を別のテーブルに新しい行として追加したいなら
追加先テーブル.Rows.Add(元の行.ItemArray)
120デフォルトの名無しさん:2010/02/03(水) 20:19:11
>>116
恐ろしい程的確な屁理屈。w
121デフォルトの名無しさん:2010/02/03(水) 20:55:58
それ以前に、負の時刻なんて概念をだれが持ち出してるんだよ
122デフォルトの名無しさん:2010/02/03(水) 21:06:37
>>121
うるせえ
123デフォルトの名無しさん:2010/02/04(木) 01:46:28
俺俺、俺だよ!
124デフォルトの名無しさん:2010/02/04(木) 11:44:35
>>115の負け
125デフォルトの名無しさん:2010/02/04(木) 23:29:44
VBの質問かどうか微妙なんですが、
WindowsXP上であるアプリA(例えばWindows MediaPlayer)のウインドウが開いていて
自作のアプリBから、そのAのウインドウのハンドルを調べて、BからAのウインドウ
に図形を描画させてみようとしたのですが、何も描けませんでした。
そこでお聞きしたいのですが、そういうことは技術的に可能でしょうか?
原理的に不可能なら、諦めます。よろしく
126デフォルトの名無しさん:2010/02/04(木) 23:32:00
微妙どころか100%スレ違いです
127デフォルトの名無しさん:2010/02/04(木) 23:50:08
可能 相手が再描画したら終了
128デフォルトの名無しさん:2010/02/05(金) 12:00:41
助けてくださいな

FieldInfo..::.GetValue メソッドを使って構造体の中の構造体をとってきた
※A構造体インスタンスの中のB構造体インスタンス

そして、取ってきたB構造体を編集してみたら

A構造体の中のB構造体には変化がなく
取ってきたB構造体だけが変わっていた

FieldInfo..::.GetValueで、Aインスタンスの中のBインスタンスを取ってきて
編集するだけでOKって感じにはならないもんなんでしょうか
129デフォルトの名無しさん:2010/02/05(金) 12:17:40
うん、ならない 構造体は値型だから
130デフォルトの名無しさん:2010/02/05(金) 13:36:30
>>129
ダメかーありがとう
131デフォルトの名無しさん:2010/02/06(土) 13:08:51
VB2003/2005 2000/XP
普通にエクスプローラーから起動した場合はいいのだけど、スタートアップ
から起動するとtopmostが効かないのは何故?
内部からどんだけtopmost=trueやbringtofrontしてもダメなんだけど
132デフォルトの名無しさん:2010/02/06(土) 17:33:25
最近.netへ移行した者ですが、どこからも参照されなくなったオブジェクトは消えますよね?
コード長いので割愛しますが、あるユーザーコントロールをtabpageに入れて
tabpageをtabpagesに入れた奴をtabpages.removeで削除すると、
当然タブの表示が消えるんですが、ユーザーコントロールのファイナライズが呼び出されていませんでした。
アプリケーションを終了するときに呼び出されてしまいます。これはどこからか参照されているままだろうということなんでしょうか?
tabを中クリックしたときにremoveを呼び出しているので、その時にnothingすればいいんだとおもいますが・・。
133デフォルトの名無しさん:2010/02/06(土) 17:39:39
nothingではなく、disposeですね。
134デフォルトの名無しさん:2010/02/06(土) 17:42:21
ファイナライザなんていつか勝手に呼ばれるものに過ぎん
135デフォルトの名無しさん:2010/02/06(土) 21:00:01
大抵の実装ではDisposeするとファイナライザの呼び出しは不要になるので呼び出されなくなる
136デフォルトの名無しさん:2010/02/06(土) 21:10:23
プロセスが終了すれば解放されるっしょ。
ちょっとしたツールなら気にする必要もなし。
137132:2010/02/06(土) 23:33:55
いつか勝手に呼び出されるものだったんですね。すぐに呼ばれると勘違いしていました。
やりたいことはタブを中クリックされたときに、タブに張り付けてあるユーザーコントロール内の
データグリッドビューコントロールのある値が空白のときに、タブを閉じないで警告を出すという動作をさせたかったんですが、
タブを閉じようとする操作はtabcontrolが受け取ってタブをRemoveさせています。
ユーザーコントロールにはtabcontrolから何らかの方法で知らせる必要があるようですね。ありがとうございました。
138デフォルトの名無しさん:2010/02/06(土) 23:54:15
フォームデザイナの画面でポトペタしたコントロールだったら、
Form1.Designer.vbにフィールドが作られていて、そこに参照が残っている。
139デフォルトの名無しさん:2010/02/06(土) 23:59:13
disposeのイデオムはややこしいからねぇ。
VBのはC++/CLIのようにもうちっとラップして欲しかった。
140デフォルトの名無しさん:2010/02/07(日) 00:05:40
わかんないんだったらそのへんに手を出しちゃだめ
かえってパフォーマンスが落ちたり余計な問題を抱えたりするだけ
C++/CLIは言語の目的上リソース管理が重要だからちょっと親切になってるけど
VBみたいに分かってない人でも使えるようにするためじゃない
141デフォルトの名無しさん:2010/02/07(日) 00:28:26
何がイデオムだw
イデオムって言いたいだけだろw
142デフォルトの名無しさん:2010/02/07(日) 00:31:37
ここでアニオタ浮上。古すぎ?
143デフォルトの名無しさん:2010/02/07(日) 00:48:47
まあIDEがコメント付きのスケルトン自動生成してくれるし、
そうややこしいということはないと俺は思うけどね。

ところであのスケルトン、既に呼ばれたかどうかのフラグをフィールドにしてるのが
個人的にはダサいと思う。

せっかくVBではメソッド内static変数が使えるんだから、そっちを使って欲しかった。
144132:2010/02/07(日) 01:20:12
>>138
ポトペタではないです。自前のコードでユーザーコントロールをnewして
tabpage.controlsに入れて、
tabcontrol.tabpagesにtabpageを入れてます。
145デフォルトの名無しさん:2010/02/07(日) 07:56:10
オレはSQLサーバー好きなんだが
クライアントでちまちまやるだけならまだしも
サーバーで公開するには高額なライセンスが発生するから
なにかおすすめの無料データベースは?
146デフォルトの名無しさん:2010/02/07(日) 10:16:56
>>143
http://msdn.microsoft.com/ja-jp/library/system.idisposable.dispose%28VS.80%29.aspx
>Dispose 以外のインスタンス メソッドでは、リソースが既に破棄されている場合に、ObjectDisposedException をスローできます。
ということで、ほかのメソッドか参照するため
147デフォルトの名無しさん:2010/02/07(日) 19:36:02
>>145
PostgreSQLかな
148デフォルトの名無しさん:2010/02/07(日) 20:10:01
なるほど
149デフォルトの名無しさん:2010/02/07(日) 21:46:08
VB初心者です。
VBでWindowsフォームアプリケーションを2つ作りました。
1つ目はテキストボックスに入力されたデータを変換して、またテキストボックスに出力するというもの
2つ目はWebclientでhtmlデータを持ってきて解析してDatagridviewに出力するというものです

これが2つともすごいメモリ使用量なんです!
OSはXPなんですが、1つ目のは14,000K、2つ目にいたっては最大で23,000K程使ってます!
これって自然ですか?
なにかメモリ使用量を節約する方法などありましたら教えてください。
150デフォルトの名無しさん:2010/02/07(日) 21:47:44
そんなもん。気にすんな。
151デフォルトの名無しさん:2010/02/07(日) 22:18:30
実際にそれだけ使ってるわけじゃないから気にするな
ウィンドウを最小化したりすると大幅に減ったりする意味のない数値
152デフォルトの名無しさん:2010/02/07(日) 22:24:40
そうですか・・・。メモリの解放など全く気にせず作ってたもので、
それが原因かもと思ったのですが。

あまり気にしないようにします。
ありがとうございます。
153デフォルトの名無しさん:2010/02/08(月) 00:41:06
ワーキングセットはむしろOS的には実際にそれだけ使ってる数字だと思うが。
まあいいたいことは分かるけど。
154デフォルトの名無しさん:2010/02/08(月) 10:56:54
>>149
PictureBoxに画像を表示して消して表示してを繰り返すと、あっという間に
メモリ使用量が100MBを超えます。

メモリを自動的に解放するのが待てないときは、GC.Collect() で手動で
解放するといいと思ってます。
155デフォルトの名無しさん:2010/02/08(月) 11:02:20
IDisposableはDisposeしろよ
156デフォルトの名無しさん:2010/02/08(月) 23:24:56
iniファイルから読み込んだ数値を表示させる、というプログラムを組んでみたのですがうまく動きません
セクションは"[ini]"でキーは"ko"です。5が返ってきて欲しいのですが0になります
どこが悪いのでしょうか?
カレントフォルダで表示される
C:\Documents and Settings\名前\デスクトップ\aaa\bosstimer\bosstimer\bin\Debug
の中にiniは入っています。

iniファイルの中身は
[ini]
ko=5
の二行だけです。ファイル名は
bosstimer.ini
です。
コードは↓です

Public Class Form1
Public Shared Function GetPrivateProfileInt( _
ByVal lpAppName As String, _
ByVal lpKeyName As String, ByVal nDefault As Integer, _
ByVal lpFileName As String) As Integer
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Iniファイルから指定したキーの値をGET(整数値)
Dim aaa
aaa = GetPrivateProfileInt("ini", "ko", 0, CurDir() & "bosstimer.ini")
MsgBox(aaa)
End Sub
End Class
157デフォルトの名無しさん:2010/02/08(月) 23:32:59
Declareはどこいった?
158デフォルトの名無しさん:2010/02/08(月) 23:45:37
ttp://msdn.microsoft.com/ja-jp/library/cc440869.aspx
この辺からコピーして四苦八苦やつてます
declearのあるページも参考にしてみます
159デフォルトの名無しさん:2010/02/09(火) 00:12:40
>>157
ありがとうございます。とりあえずコードを拾ってきて、iniもC直下において
下のように変えたら
8972063213919141888
と返ってきました。何故でしょう
iniファイルは上の二行だけで5の後には改行も入っていません
integerにするとエラーが来たので大きい数が入ってるような感じはしますが、なんだかわかりません
分かる方おしえてください、お願いします・・・

Public Class Form1

Public Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" ( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal nDefault As Long, _
ByVal lpFileName As String) As Long

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim aaa As Long
aaa = GetPrivateProfileInt("ini", "ko", 0, "c:\bosstimer.ini")
MsgBox(aaa)
End Sub

End Class
160デフォルトの名無しさん:2010/02/09(火) 00:15:23
>>158
なんでDllImportの行すっ飛ばしてるんだよ…
161デフォルトの名無しさん:2010/02/09(火) 00:20:51
>>160
エラーが出るんです・・
162デフォルトの名無しさん:2010/02/09(火) 00:22:21
>CurDir() & "bosstimer.ini"
CurDirって終端の \ を含んでないんじゃないかい
163デフォルトの名無しさん:2010/02/09(火) 00:23:10
うおおおおすいませんそれでぐぐったら感性しました
Imports System.Runtime.InteropServices
をincludeするんですね。MSさん・・サンプルにも書いといてほしいですぜ・・
>>162
ありがとうございます。そちらは確認済みでした
164デフォルトの名無しさん:2010/02/09(火) 12:09:42
そんなレベルでDllImportとか恐ろしすぎるな
165デフォルトの名無しさん:2010/02/09(火) 16:52:29
負の時刻で思い出したが、Vistaのエクスプローラでステータスバーに表示されるファイルサイズがマイナスになるんだけど、負のファイルサイズってなんだ?
166デフォルトの名無しさん:2010/02/09(火) 17:40:26
実際のファイルサイズじゃなくて、
それより前に選択したファイルとの差が出るやつか。たまになるな。

気にはなってるんだが実害がないので、どういう時に起こるかとか調べた事ないな
167デフォルトの名無しさん:2010/02/09(火) 19:17:49
Try 〜 Catch でエラーを検出したとき、
そのエラーがどこのステートメントで発生したかの
ログを取りたいのですが、どうしたらよいでしょうか?

障害の原因の早期発見のためです。
168デフォルトの名無しさん:2010/02/09(火) 19:18:48
好きにしろよ
169デフォルトの名無しさん:2010/02/09(火) 21:15:35
>>167
Catchの中でStackTraceを吐けばおk
実行ファイルと同じ場所にpdbファイルを配置するのを忘れずに
170デフォルトの名無しさん:2010/02/09(火) 21:17:58
単にToStringでもいろいろ吐いてくれる
171デフォルトの名無しさん:2010/02/09(火) 21:33:38
デバック中にウォッチ式は使えないんでしょうか
変数に何が格納されているか知りたいときは、どこかのtextbox辺りに出力するのが゛一般的ですか?
172デフォルトの名無しさん:2010/02/09(火) 21:39:37
ブレークポイントか一時停止で止めれば見放題
173デフォルトの名無しさん:2010/02/09(火) 21:44:38
一時停止状態でウォッチ式の追加を選んでも無反応なんですよ
なんででしょう
174デフォルトの名無しさん:2010/02/09(火) 22:00:37
そりゃ現在実行中のコードの位置から見える範囲しか見えないから
175デフォルトの名無しさん:2010/02/09(火) 23:35:28
一般的なvb.netでの考え方を教えてください。

フィールドA〜フィールドEまで5項目あるデータを百件から千件程度
プログラム内部に持ちたいと思ってます。
これをプログラムで実現するにはどういう方法がベストなんでしょうか。

・DataGridViewで保持
・arraylistで保持?
他の方法すらわからないので、普通はこう作る!というような作法が
あればご教授頂ければ幸いです。

参考になるかわかりませんがデータ容量は小さく、現在800件ほどで60kb程度です
176デフォルトの名無しさん:2010/02/09(火) 23:39:54
使い方やデータの出処による。
コレクションを使う場合はArrayListは時代遅れなので使わない。List(Of T)を使う。
177デフォルトの名無しさん:2010/02/09(火) 23:40:06
何に使うか次第だな。
178デフォルトの名無しさん:2010/02/09(火) 23:47:01
> ・DataGridViewで保持
Viewなんだからデータ保持させんな
179デフォルトの名無しさん:2010/02/09(火) 23:58:49
>>176,>>177,>>178
ありがとうございます。
個人で出納帳(というか家計簿)のようなものを作ってみたく、
日付、金額などを明細で持つようにしたいのです。
画面にはひと月分表示させてあとは内部に持っておこうと
考えてます。
この考え方自体もvb.netに合わないんでしょうか。

arraylistは時代遅れなんですか、勉強になります。
DataGridViewでデータ保持してゴリゴリやればなんとかなると
思ったのですがぜんぜん考え方が違うようですね、すいません。
180デフォルトの名無しさん:2010/02/10(水) 00:05:04
変だな。そんなの、DBにでも突っ込んどけばいいじゃん。
181デフォルトの名無しさん:2010/02/10(水) 00:06:18
まあ家計簿くらいならコレクションで持ってもいいんじゃないかな
その方が練習になるし
182デフォルトの名無しさん:2010/02/10(水) 00:06:59
別にいいけど、入出力はどうすんのよ?
183デフォルトの名無しさん:2010/02/10(水) 00:11:33
>>180,>>181,>>182
ありがとうございます。

本格的にするならそうするのですが、
まずは小さなアプリでvb.netの勉強したいので
内部に保持しようと考えました。

入出力はとりあえずcsvにしておいて、
ステップアップする時に他へ乗り換えようかと思ってます。
184デフォルトの名無しさん:2010/02/10(水) 00:22:04
勉強なら配列の配列とか使わずにちゃんと行クラス作って保持しなよ
185デフォルトの名無しさん:2010/02/10(水) 00:28:56
型付きデータセット
186デフォルトの名無しさん:2010/02/10(水) 09:03:43
excelでvba使った方がいいんじゃない?
187デフォルトの名無しさん:2010/02/10(水) 10:19:12
勉強って言ってるじゃん
型付きデータセット使うなら先に>>184の考え方を理解するべきだとおもう
188デフォルトの名無しさん:2010/02/10(水) 11:28:04
>>184,>>185,>>186,>>187
ありがとうございます。

行クラスの考え方でやってみたいと思いました。
文献を探してみたのですが、以下をを参考にできそうな気がします。
早速試してみます。

独自コレクションクラスを作成する VB.NET2005
http://www.geocities.jp/i_love_balard/myhome/dnet/collection.html
189デフォルトの名無しさん:2010/02/10(水) 11:42:55
そのサイトのやり方は古い
2005なのにそんなことやってるとかもうそのサイト見ないほうがいいよ
VB2005以上ではそんなもん必要ない
ジェネリックコレクションでググれ
190デフォルトの名無しさん:2010/02/10(水) 11:57:29
そのサイト、コントロールの使い方とか調べるくらいならいいかもしれないけど
>>188のような基礎的な記事は当てにしないほうがいいよ
書いてる本人がわかってない
191デフォルトの名無しさん:2010/02/10(水) 11:59:06
初心者なんだからとりあえず動けばいいって
192デフォルトの名無しさん:2010/02/10(水) 12:12:44
Compact Frameworkなどで要素数が少ない時はArrayListの方が有効な場合もありえる
193デフォルトの名無しさん:2010/02/10(水) 12:15:56
じゃあそもそもコレクション自作したりしないで
ArrayListでダウンキャストすればいいでしょう
ちゃんとオブジェクト指向意識しようとしてる割には
Publicフィールド使いまくりだったり俺用語俺解釈だらけだったり
メソッドをオーバーライドするときの大文字小文字が無茶苦茶だったりわけわからん
194デフォルトの名無しさん:2010/02/10(水) 12:24:54
>>192
Silverlightでは非ジェネリックコレクションは完全に撤廃されてジェネリックのみになってるよ
WM7ではSilverlightはCFに代わって標準APIになります
195デフォルトの名無しさん:2010/02/10(水) 13:23:30
>>189,>>190,>>191,>>192,>>193,>>194
・゚・(ノД`)・゚・涙が出てきます。何度もありがとうございます。
出てくるキーワードがわからなくて何度もググってみましたが
以下を見れば解決できそうです!

第5回 クラスとジェネリックなList
http://itpro.nikkeibp.co.jp/article/COLUMN/20070515/271058/?ST=develop
第6回 コレクション・クラス自由自在
http://itpro.nikkeibp.co.jp/article/COLUMN/20070709/277026/?ST=develop

それにしても難しいです。難しいというか、なんでも自由にかける分、
適切な選択をするというのかいかに難しいかというのが実感できました。
とても感謝していますm(__)m
196デフォルトの名無しさん:2010/02/10(水) 18:05:32
DataGridViewを使っています。

フォームロード時にセルの高さをColumnHeaderの高さと同じにしたいと考えています。
ColumnHeader.Heightの値は'16'に設定しているのですが、
ShownイベントハンドラからColumnHeader.Heightを見ると'23'になっています。

さらにShownイベントハンドラ内で
Me.DataGridView.ColumnHeadersHeight = 18
としても値が変わりません。

これはなぜなんでしょうか。
197デフォルトの名無しさん:2010/02/10(水) 18:06:56
テキストボックスに半角数字とバックスペースとエンターキーと「-」マイナス「.」小数点のみを入力できるようにしたいのですが
半角数字とバックスペースとエンターキーはすぐに見つけられたのですが
マイナスと小数点はどのようにすればいいのでしょうか?
198デフォルトの名無しさん:2010/02/10(水) 19:12:52
教えてください!
プログレスバーについてなんですが、XPではValueの値を設定するだけで
正常に表示されるんですが、Win7だとモッサリ動いて100%まで到達する前に処理が終わります。
Win7で動作させる場合、モッサリ感をなくすような方法はありますか?
あるいは、XPのプログレスバーが使えればいいんですが。
199デフォルトの名無しさん:2010/02/10(水) 22:55:45
VB.NETも終わったな・・・

ASP.NETが昔のASP並みに、社内システムの開発程度にしか
使いどころがなくなった今、.NET Framework のネット可用性は激減だもんな。
今更デスクトップアプリって時代でもないしな。
200デフォルトの名無しさん:2010/02/10(水) 23:02:15
ウェブアプリの時代ってことっすか?
201デフォルトの名無しさん:2010/02/10(水) 23:07:13
ウェブはphpの独壇場
202デフォルトの名無しさん:2010/02/10(水) 23:30:31
COBOLが今でも残っているように、
デスクトップアプリはずっと残る。

しかし、COBOLプログラミングに魅力を感じないように、
デスクトップアプリプログラミングも魅力を感じることはなくなるだろう。

パソコンは、一般人にとって不要な機能が多すぎる。
最低限の機能を残し、
誰でも気軽に買えるよう、低価格化し、
素人が使っても壊れないようにシステムの安定化を図れば、
いずれ、ブラウザ一枚が起動するだけのマシンが売られるだろう。
そしてそれは今のパソコンにとって変わるほどに普及するだろう。
メーラーもメモ帳もすべて包括的なWebサービスに変わる。
Windows Azure のようなOSが標準化され、
ソフトウェア使用のライセンス違反の問題も解消する。
高価なパソコンでOSを合わせ、.NET Framework などのコンポーネントを
用意しなきゃ動かないソフトなんて、開発にも利用にも金がかかりすぎる代物は
たぶん俺には会っていない。
203デフォルトの名無しさん:2010/02/10(水) 23:37:18
>>198
1.VisualStyleをオフにする
2.プログレスバーの分解度を大きめにして、1大きい値を設定した後、本来の値にする。
どっちかくらいかな?

2の場合、最後の値では1大きい値にできないので、
最後だけは、最大値を設定後、最大値-1をセットすることになる。
なので、最大値-1を設定しても表示に影響がないように、
最大値を大きめにして補正しないといけない。
204デフォルトの名無しさん:2010/02/11(木) 10:40:08
>>198
やってみたら確かに再現しますね。

とりあえず不本意なやり方ですが、プログレスバーがMAXになった後に500〜1000msecの
Waitを入れることでMAX表示はできました。
205デフォルトの名無しさん:2010/02/11(木) 12:09:20
>>203-204
ありがとうございます。
試してみます。
ちなみに、100%時にSleepをしたら表示さえとまってしまいました。。
Wait関数があるんですね?試してみます。
あるいは、VisualStyleをオフにできるんですね?やってみます。
206204:2010/02/11(木) 16:18:41
精度が不要な場合は自分は@のようにしています。
ある程度精度を気にする場合はAのようにしています。

@Sleep 10msecを100回

  For j As Integer = 1 To 100
System.Threading.Thread.Sleep(10)
Application.DoEvents()
  Next j

A
  msecWait(1000) '1秒Wait
  
Public Sub msecWait(ByVal WaitTime As Long)
Dim l As Long
l = System.Environment.TickCount
Do While System.Environment.TickCount - l < WaitTime
Windows.Forms.Application.DoEvents()
System.Threading.Thread.Sleep(10)
Loop
End Sub
207デフォルトの名無しさん:2010/02/11(木) 16:54:02
バグってるぜそれ。
まあ稀に返ってこなくなるだけだけど。
208デフォルトの名無しさん:2010/02/11(木) 16:55:27
バグってるぜそれ。
209デフォルトの名無しさん:2010/02/11(木) 16:58:05
あ、ミスったけどもういいや。
210デフォルトの名無しさん:2010/02/11(木) 19:05:30
あ、逃げた。
211デフォルトの名無しさん:2010/02/11(木) 21:10:49
自動アンインストールツールってどう落とすの?

ttp://msdn.microsoft.com/ja-jp/vs2008/bb968856.aspx

なんどやっても開けないんだが
212デフォルトの名無しさん:2010/02/11(木) 22:08:49
Declare Function midiOutShortMsg Lib "winmm.dll" ( _
ByVal hMidiOut As Integer, ByVal dwMsg As Integer) As Integer
を使ってキーボードを鍵盤のようにして音を出すアプリを作ってみたのですが、
発音するタイミングが遅く連打するとキーを放した時に音が鳴っているような感じになるのですが
もっとリアルタイムで音を出すにはどんな方法でやれば良いでしょうか?
213デフォルトの名無しさん:2010/02/11(木) 23:27:23
ListViewに同一のデータが追加されるのを防ぐ方法はありますでしょうか。
214デフォルトの名無しさん:2010/02/12(金) 07:05:43
>>212
せめてキー判断をどうしてるかわからないとね

>>213
そもそもどうやってデータ追加してるのかね?
何らかのID等を振っておいて追加時に今までのと比較すれば?
初歩的だけど応用は効くやり方だと思う。
215212:2010/02/12(金) 19:11:07
レスどうもです。
説明不足ですみません。発音が遅れている原因はキーの判別ではないみたいです。
KeyPressイベントで音を出していますが、どのキーでも同じ音というようにKeyCodeの判別部分を削除しても
発音のタイミングは変化がないようです。
216デフォルトの名無しさん:2010/02/12(金) 20:34:34
なんでまず遅延がどこで発生してるのか確認しようとか思わないんだろう。

とりあえずラベルの背景色なりなんなりをキーに連動させるとかすれば
目視でだいたいどこに問題があるのか見当ぐらいつくだろうに。

頭悪いんじゃないの本当。
217デフォルトの名無しさん:2010/02/12(金) 22:30:59
>>214
具体的に申しますと、Twitterのpostをライブラリ経由でListViewに表示させています。
その際に、ColumnA(ユーザ名)、ColumnB(投稿内容)、のようにしてItemsを追加しています。

現状の処理だと
A   B
hoge huga
hoge huga
xxxx yyyy
のように、一部の投稿内容が重複して表示されてしまうので、それをListViewに追加する段階で弾けないか、と考えている次第です。
218デフォルトの名無しさん:2010/02/12(金) 22:59:06
正直、弾けばいいじゃんとしか言い様がないぜ
219デフォルトの名無しさん:2010/02/12(金) 23:00:20
ビューにそんな責務を持たせるのが間違いだろ。
220デフォルトの名無しさん:2010/02/12(金) 23:24:57
>>218
ですね。申し訳ない。

>>219
ライブラリ側を弄ってみようかと思います。
221デフォルトの名無しさん:2010/02/12(金) 23:26:58
>>217
そんなのListViewの全ての行を追加したい文字列と比較して重複してたら追加しなけりゃいいじゃん
222デフォルトの名無しさん:2010/02/12(金) 23:51:12
>>221
新しいItemを{ユーザ名.投稿内容}といった形で追加しているのですが既存のItemsと比較する方法がわかりません
申し訳ないです。
223デフォルトの名無しさん:2010/02/12(金) 23:56:00
なんか一意になるものを探す。URLとかいいやね。
224デフォルトの名無しさん:2010/02/12(金) 23:57:13
>>223
ありがとうございます。
投稿ごとに割り当てられたIDを取得して取捨選択をしてみようかと思います。
225デフォルトの名無しさん:2010/02/13(土) 00:31:22
>>224
A = ListView1.Items(行番号).Text
B = ListView1.Items(行番号).SubItems(1).Text
とするとAにユーザーID、Bに投稿内容が取得出来るよね。
後は追加する時に、それぞれの項目チェックして追加するしないを決めればいいんじゃない?
226デフォルトの名無しさん:2010/02/13(土) 00:31:54
それを、Dictionary にでも突っ込んどくんだよ。
そんで、ListView はあくまでもその Dictionary の表示用と割り切る。
ほら簡単。
227デフォルトの名無しさん:2010/02/13(土) 16:21:05
>>226
ありがとうございます。
試してみます。
228デフォルトの名無しさん:2010/02/13(土) 18:37:14
礼言ってる暇あったら、さっさとやってこいカスが
229デフォルトの名無しさん:2010/02/13(土) 19:53:22
そうカリカリしなさんなや
230デフォルトの名無しさん:2010/02/13(土) 23:11:49
学生の頃からプログラムを組み、
会社でもプログラマー、SEを経験しました。

今、何か大きいことをしたいのですが、
どうしてもプログラムが手につきません。

何かプログラムを組もうと思って紙に設計などをするのですが、
実際にプログラムを組むところまでいかず、
どうしてもVisual Studioを起動できません。

こんな自分はどうしたらいいでしょうか。
偉大な先輩方、何かアドバイスがありましたら
ご教示下さい。
231デフォルトの名無しさん:2010/02/13(土) 23:17:10
向いてないからあきらめろ。
232デフォルトの名無しさん:2010/02/14(日) 00:08:35
>>230
しねばいいとおもうよ
233デフォルトの名無しさん:2010/02/14(日) 00:10:05
諦めてしにます。
ありがとうございました。
234デフォルトの名無しさん:2010/02/14(日) 00:11:18
自己解決しました。
235デフォルトの名無しさん:2010/02/14(日) 19:28:24
.NETになって色々な物が新しく追加されたようなのですが、
基本的には新しいものを使って行った方が良いのでしょうか??
236デフォルトの名無しさん:2010/02/14(日) 19:31:56
好きにしろ
237デフォルトの名無しさん:2010/02/14(日) 19:54:19
好きにしろ
238デフォルトの名無しさん:2010/02/14(日) 19:55:27
追加じゃない。刷新。昔のVBっぽい部分はおまけ。
239デフォルトの名無しさん:2010/02/14(日) 21:39:55
しかし、2010にもなって今頃
「.NETになって色々な物が新しく追加されたようなのですが」
ってどうなの。
240デフォルトの名無しさん:2010/02/14(日) 21:45:10
全くの別物で、VBでよく使われる基本的な操作に対しては
昔のVBに似せたバージョンもオマケで用意されてるだけ
241デフォルトの名無しさん:2010/02/15(月) 00:44:25
Visual C++の.NET質問スレが無かったので、ここで質問させて戴きます。
下のようにIMEモードをNoControlにしているのですが、自作アプリケーションで全角にした後に
他のウィンドウにフォーカスを移して、また戻すと半角に戻ってしまっています。
ユーザーが設定した情報をフォーカスを変えても保持するようにするにはどうしたら良いのでしょうか?
よろしくお願いします。

this->ImeMode = System::Windows::Forms::ImeMode::NoControl;
242デフォルトの名無しさん:2010/02/15(月) 02:58:43
>>241
★初心者にVisual C++を教えるスレ★ Part35
http://pc12.2ch.net/test/read.cgi/tech/1256645713/
ここはどうでしょう?
243241:2010/02/15(月) 03:21:59
>>242
テンプレに.NETのURLがあるようなので、そちらに移動してみます。
誘導ありがとうございました。
>>241は取下げます。
244デフォルトの名無しさん:2010/02/15(月) 07:42:11
ちょっとまえまでは、VB6でのノウハウやその資産をどう移植するかが
テーマであったけれど、今後は、VBAとの関係をどうするかがテーマに
なっていくのかな?
>>235あたりの流れを読んでいてそう思ったんだけど、ここの住人は
そのあたりはどう考えてるのでしょうか?
245デフォルトの名無しさん:2010/02/15(月) 07:45:52
VSTOって知ってる?
246デフォルトの名無しさん:2010/02/15(月) 11:43:36
それは、VSTOがあればすべてが解決するという理論?
247デフォルトの名無しさん:2010/02/15(月) 11:59:09
そりゃ理論上は
248デフォルトの名無しさん:2010/02/15(月) 13:01:44
>>239
俺も最近VB6から乗り換えた組みだが、ここまで変わってるとは思わなかった
249デフォルトの名無しさん:2010/02/15(月) 13:26:26
VB.NETって「VB風C#」だし
250デフォルトの名無しさん:2010/02/15(月) 18:46:32
ちょっと待った!
それは無い
251デフォルトの名無しさん:2010/02/15(月) 20:29:01
かつてVisual Basicとか使ってた人には良いかもだけど
ずぶの初心者にはおススメできない>VB

C#だと int a;でいいところが
Dim a as integerってなんやねん。10文字近くも多くなってるわー。インテリセンスを使ってもこれは時間かかる。
252デフォルトの名無しさん:2010/02/15(月) 20:50:39
>>246
VSTOも知らずに>>244みたいなことを言う奴って馬鹿だなぁ、って理論
253デフォルトの名無しさん:2010/02/16(火) 00:39:42
なんだ、要は自分もよく知らないけど、
とりあえず英文字出しておけば相手を馬鹿にできる
という理論か。
254デフォルトの名無しさん:2010/02/16(火) 02:09:33
>>253
お前が馬鹿に間違いないことだけはわかった
255デフォルトの名無しさん:2010/02/16(火) 03:01:32
vb .netにFindFirstFileみたいなやつってありますか?
256デフォルトの名無しさん:2010/02/16(火) 03:02:58
>>255に追加

DirectoryInfoのGetFilesは嫌なのです。
257デフォルトの名無しさん:2010/02/16(火) 07:28:31
ない。
258デフォルトの名無しさん:2010/02/16(火) 10:17:25
今日もインテリセンスうめえ
259デフォルトの名無しさん:2010/02/16(火) 11:04:52
なんで意見を言っている人をけなす意見しか出ないのだろうか。
VBAとVSTOについての比較などの話、もしくは別スレへの誘導はしないの?
260デフォルトの名無しさん:2010/02/16(火) 11:10:34
単なるCOMだから一緒だし
261デフォルトの名無しさん:2010/02/16(火) 19:45:10
画面で実行ボタンを押すと、ストアドプロシージャを呼び出して
DBを更新するソフトを作っていて、更新処理に時間が掛かるので、
プログレスバーで進捗状況を表示させたいと思っています。
予めデータの件数が分かっていて、プログラムの中で1件ずつ処理しているような場合なら、
ループの中でカウントアップして行けばいいと思うのですが、
DB関連の処理は全てストアドに丸投げしてしまうので、その手が使えません。
何かいい方法はないでしょうか?
262デフォルトの名無しさん:2010/02/16(火) 20:02:36
非同期にしてプロシージャの終了を待てばいいことではあるが、
なんにせよプログレスバーでやるんだったら
最大値(=終了時刻)がわかってないとできないぞ
263デフォルトの名無しさん:2010/02/16(火) 20:07:10
>>262
レスありがとうございます。
何らかの方法で、現在値や最大値を取得することってできるんでしょうか?
264デフォルトの名無しさん:2010/02/16(火) 20:08:10
トータル件数と処理済み件数を返すストアドを作って
もう一個コネクションを貼って読みだす
265デフォルトの名無しさん:2010/02/16(火) 20:20:11
>>257
レスありがとうございます
おとなしく FindFirstFile 使います。
266デフォルトの名無しさん:2010/02/16(火) 23:21:11
>>264
頭悪い!その手があったか。
頭悪いアドバイスありがとうございます!
267デフォルトの名無しさん:2010/02/16(火) 23:45:03
クラスを作成しようと考えてみますが、サンプルや参考になる所ありますか?
268デフォルトの名無しさん:2010/02/17(水) 06:33:28
VBでaccessのテーブルにアクセスしてデータを取得しようとしてるんですけど
OleDbDataReaderで取得するときにうまく取得できません
openメソッドは動いているのでDBは開いているとおもうんですけどそこからが進みません
ほかにもOleDbDataAdapterなどで値を取得しようとするとOleDbExceptionでダメでした
誰か教えてください
269268:2010/02/17(水) 06:48:28
自己解決
270デフォルトの名無しさん:2010/02/17(水) 06:50:59
死ね
271268:2010/02/17(水) 06:52:04
ミスです
自己解決したんですけど
SQL文がダメ見たいでした
テーブル名が欲しくて
SELECT Name FROM MsysObjects
  WHERE Left([Name],4) <> "Msys" AND Type = 1
  ORDER BY Name;
を実行するとエラーでだめでした
Accessのクエリでは問題なくテーブル名がかえってきますが、VB側で実行するとダメ見たいです

272268:2010/02/17(水) 07:15:34
自己解決しました
273デフォルトの名無しさん:2010/02/17(水) 17:43:04
原因がわからず悩んでいます。ぜひ教えてください。

form1からform2をShowDialog()してるのですが、
form2で実装しているボタンを押下したとき、1回押しただけでは
画面が戻ってくれません。

form2にはボタンを2つ設けてあり、どちらのclickイベントにも
Me.Close()をいれているのですが、一度でcloseされないのは
何が原因と考えられるのでしょうか。

form2の各イベント処理の先頭にmessageboxを入れてみたのですが
1回のボタン操作で1回だけしか表示されず、どういう動きになってるのか
わかりません。
form2には new ,BtnOk.click,BtnCancel.click が実装されています。
274デフォルトの名無しさん:2010/02/17(水) 17:47:40
ありえない
275デフォルトの名無しさん:2010/02/17(水) 18:59:11
とりあえずform2の全ソースをさらしてみろ
276デフォルトの名無しさん:2010/02/17(水) 20:10:02
>>273
トレースしろよ
277デフォルトの名無しさん:2010/02/17(水) 20:29:12
asp.netで、表示する値が無い場合、行をつめて表示する方法はありますか?

例えば、Labelコントロールを配置して、そこに値が無い場合、
Visible = false にしても、空行がとられてしまい、行をつめてくれません・・・
278デフォルトの名無しさん:2010/02/17(水) 21:40:02
>>274->>276さん、
ありがとうございました。解決しました。

form1側で
a = new form2()のあとで

a.ShowDialog()

となってましたorz

||┃||||||
|(-_-)||| スミマセン
|(∩∩)━━━━

279デフォルトの名無しさん:2010/02/17(水) 21:43:35
えっ
280デフォルトの名無しさん:2010/02/17(水) 23:46:13
2ちゃんねる依存の人が必死になって過疎防止のネタを書き込むのがウザイ。
281デフォルトの名無しさん:2010/02/18(木) 04:48:05
>>277
普通につめて表示されないか?
.text = "" としてみた?
当方VS2005。
282デフォルトの名無しさん:2010/02/18(木) 06:51:23
>>281
うまくいきませんでした。
こちらは、VS2008でASP.NET3.5です。

Label1
Label2
Label3

と配置して、Label2.text = "" としましたが、表示したのは、

Label1

Label3

と空行が発生してしまいます。

283デフォルトの名無しさん:2010/02/18(木) 07:06:28
こうなってるんでしょ?<br />もLabelのテキストとして渡さないと。

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br />
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
<br />
284デフォルトの名無しさん:2010/02/18(木) 07:35:21
>>283
すみません、もう少し詳しく教えてください。
余分な改行は発生してしまっているのに、
さらに<br />もLabelのテキストとして渡す、
というのはどういうことでしょうか。

.text ="<br />" とすると、
ラベルの文字に<br />と表示されてしまうだけのような・・・。
それとも、html 編集をする必要があるということでしょうか。
285デフォルトの名無しさん:2010/02/18(木) 07:54:49
ブラウザで生成されたソースを表示する習慣は無いのかな?
286デフォルトの名無しさん:2010/02/18(木) 15:50:00
生成されたソースっていうか、VSで.aspxのソースみれ

わからんかったら、runat="server" つけた<div>でそれぞれのラベルを囲んで
<div>を非表示にしてしまえ
不要な改行は全部けしとけよ
287282:2010/02/18(木) 17:44:40
>>283
ありがとうございます。
デザイン画面では、

Label1Label2Labe3

と配置しておいて、表示するときに

Label1.Text = "Label1<br />"
Label2.Text = ""
Label3.Text = "Label3<br />"

とするのですね。うまくいきました。
288デフォルトの名無しさん:2010/02/19(金) 20:56:44
つーか、.netのコントロールなんか使うなよー
289デフォルトの名無しさん:2010/02/19(金) 22:48:24
.NETを使うなじゃなくて、コントロールを使うなですか
じゃあ何を使うの?おすすめを言ってくれ
290268:2010/02/19(金) 23:02:19
<% Response.Write() %>
291デフォルトの名無しさん:2010/02/20(土) 01:57:28
<%=なんとか%>
292デフォルトの名無しさん:2010/02/20(土) 03:26:23
失礼します
VBでソケット通信をするにはどうしたらいいのでしょうか?
利用するクラスすらわかりません。

具体的にはニコニコ生放送のコメントを取得したいのですが簡単にでいいのでお願いいたします
293デフォルトの名無しさん:2010/02/20(土) 08:43:25
294デフォルトの名無しさん:2010/02/20(土) 09:12:18
295デフォルトの名無しさん:2010/02/20(土) 09:15:34
>>289
コントロールなんか使ったら糞重いWEBアプリしかできんぞ
さくさくのWebアプリにしたったら<% %>のみにするべき
runat=serverとか最悪すぎる
296デフォルトの名無しさん:2010/02/20(土) 11:14:54
拡張子を htmlにして動的なことはいっさいしない。これ最強。
297デフォルトの名無しさん:2010/02/20(土) 14:30:25
>>295
それで何を作るんだよ。
298デフォルトの名無しさん:2010/02/20(土) 17:17:03

変数の定義について、初歩的な質問です。。。

下記のように、ボタン1がクリックされるとYasaiクラスからYasaiDateインスタンスを11個
生成したいと考えています。

その後、別のボタン2をクリックしたときにこれらのインスタンスを利用したいため、
Public修飾句でインスタンスを宣言したのですが、
’Pubulic’はローカル変数宣言では有効では在りません
などというポップアップが出ます。ためしに 1行目のPrivateをPublicにしても同じでした。

プライベート宣言したプロ―ジャ内では、パブリック変数の宣言はできないものなのでしょうか?
どなたかアドバイスいただけると助かります。


01 Private Sub Button1_Click(Byval ・・・・・・・・
02 Public YasaiDate(10) As Yasai
03 YasaiDate(i)=New Yasai()


^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
’クラスを定義
01 Public Class Youso
02 省略
299デフォルトの名無しさん:2010/02/20(土) 17:28:10
アドバイスねえ。
そんなレベルの話でいちいち人に頼るぐらいならプログラミングなんてしない方がいいと思うよマジで。
なんで、例えば入門書の一冊もまず読んでみようとか思わないんだろうこういう人って。

っていうか、そんな愚問をかいた文章をつらつら書いてる暇に自分で問題解決できないか普通。
20年前ならともかく、このwebの時代に精神病んでるとしか思えん。
300デフォルトの名無しさん:2010/02/20(土) 17:38:01
プログラミングしてるというよりOffice製品使ってる感覚なんでしょ
301デフォルトの名無しさん:2010/02/20(土) 17:44:14
最近は基礎は勉強したくない
ものができればいいっていう感じだからな
302268:2010/02/20(土) 17:46:54
Public -> Dim
303298:2010/02/20(土) 17:48:00
質問スレだから質問したんだよ。本読むより聞いたほうが早いだろうが。
無意味な投稿すんなバーカ バーカ
304デフォルトの名無しさん:2010/02/20(土) 17:54:47
いや、正直このレベルのは質問するより本とか入門サイト読んだほうが早いよ?
305298:2010/02/20(土) 17:58:50
そうですか。
今は02 Public YasaiDate(10) As Yasai を
ソースファイルの先頭付近(Privateプロ―ジャの外)で宣言して
使おうとしてます。

ただ、プライベート宣言内でパブリック宣言ができないと
なんか不便だなぁという気がして。仮にそういう仕様だったとしたら
何か意味があるんでしょうけど。
306デフォルトの名無しさん:2010/02/20(土) 18:02:25
アクセス修飾子の問題じゃない、スコープの問題
最低限のものは身につけないと質問回答すら満足にできないわけよ
307298:2010/02/20(土) 18:05:19
スコープですか。そのあたりを調べてみますね。
ありがとうございました。
308デフォルトの名無しさん:2010/02/20(土) 20:43:03
( ゚Д゚)ポカーン
309デフォルトの名無しさん:2010/02/20(土) 22:13:19
野菜日時ってなんだよポカーン
310デフォルトの名無しさん:2010/02/20(土) 23:25:26
グローバルでおk
311デフォルトの名無しさん:2010/02/21(日) 18:35:03
文字列検索で質問です。ある文字列(スレのURL)で6つ目の"/"が何文字目にあるか
知りたいのですが、そういった関数はありますか?
現在は↓のようにforでループさせていますが、他に簡単な方法があれば教えてください
Dim i As Long
urlstr = "http://pc12.2ch.net/test/read.cgi/tech/1263738929/"
sla(0) = urlstr.IndexOf("/", 0)
For i = 1 To 6
sla(i) = urlstr.IndexOf("/", sla(i - 1) + 1)
Next
312268:2010/02/21(日) 18:41:34
ないから適当に作れ。
313デフォルトの名無しさん:2010/02/21(日) 18:48:19
正規表現とかで書けんでもないが、まあループで問題なかろ
314デフォルトの名無しさん:2010/02/21(日) 19:00:26
>>311
まあ、無理にIndexOfなんか使わずにベタに書いた方が分かりやすそうとは思う。
315デフォルトの名無しさん:2010/02/21(日) 20:03:41
>>312-313 ありがとうございます
>>314 検索の仕方が悪かったのでしょうか・・普通に使うのはinstrのようですね。
316デフォルトの名無しさん:2010/02/21(日) 20:06:49
InStrとかただの遺物
317デフォルトの名無しさん:2010/02/21(日) 20:23:53
番号を指定できるようにしといて関数化しとけば便利だな
ある文字列の○番目の〜〜が何文字目にあるのかを返す
318デフォルトの名無しさん:2010/02/21(日) 20:52:24
>>315
そうじゃなくて、単純に文字列の中の文字を先頭から対象の文字("/")と
比較した方が分かりやすいんじゃないのってこと。

Shared Function GetIndexOf6th(ByVal text As String, ByVal wanted As Char) As Integer
  Dim foundCount As Integer = 0
  For i As Integer = 0 To text.Length - 1
    If text(i) = wanted Then
      foundCount += 1
      If foundCount = 6 Then
        Return i
      End If
    End If
  Next
  Return -1
End Function
319デフォルトの名無しさん:2010/02/21(日) 21:02:00
>>316
なんと
>>318
なるほどー。ありがとうございます。ありがたく使わせてもらいます。
320デフォルトの名無しさん:2010/02/21(日) 21:23:17
click onceって自分が管理してるサーバー必須なの?
update機能が便利だと思って使いたかったんだけどレンタルじゃだめぽ
サーバーない人は普通にexe配布してバージョンアップしてもDLした人に気づいて貰うしかないの?
321デフォルトの名無しさん:2010/02/21(日) 21:25:02
自分で自動アップデートする仕組み作ればいいだけだろ
322デフォルトの名無しさん:2010/02/21(日) 21:35:41
>>311
こんなんはどう?
スラッシュが無かったり、足りなかった場合の処理は入れていないけど・・・

Dim st() As String

st = "http://pc12.2ch.net/test/read.cgi/tech/1263738929/".Split("/")
MsgBox(Len(st(0)) + Len(st(1)) + Len(st(2)) + Len(st(3)) + Len(st(4)) + Len(st(5)) + 6)
323268:2010/02/21(日) 21:37:36
>>320
必須じゃないよ。
324デフォルトの名無しさん:2010/02/21(日) 21:40:15
必須だよ
325デフォルトの名無しさん:2010/02/21(日) 21:59:23
どっちだお・・・

とりあえずclick onceで自動update通知機能を付けるならサーバが必要ってことかい?
update機能付けれないならsetup.exeとdataフォルダをまとめてupっても意味ないよね
普通にexeを配布で我慢するのがベターかな?
326デフォルトの名無しさん:2010/02/21(日) 22:00:11
いらんよ。やってみればいいじゃん。
327デフォルトの名無しさん:2010/02/21(日) 22:00:51
あ。いらんって、自前のサーバーね。
レンタルでもちゃんとできます。
328デフォルトの名無しさん:2010/02/21(日) 22:17:01
発行フォルダの場所にレンタルを指定したんだけど

次のエラーにより、<レンタルURL> に接続できませんでした: Web サイト <レンタルURL> を作成できません。 Web サーバーに FrontPage Server Extensions がインストールされていない可能性があります。

って出るからサーバー側が何かしらの設定してくれてないと出来ないのかなって判断したんだけど
っていうかどことも知れないURLをpassとかも聞かれずに設定するのはおかしいからどこかで許可する設定がいると思うんだけど
329デフォルトの名無しさん:2010/02/21(日) 22:19:15
直接発行はできない。
ダウンロードURLにレンタルサーバーのURLを入れて、ローカルに発行。
そんで、FTPとかでアップすればOK。
330デフォルトの名無しさん:2010/02/21(日) 22:19:59
MIMEの話かと思った。手動でコピーすりゃいいの。
331デフォルトの名無しさん:2010/02/21(日) 22:31:14
>>329
親切にどうも

VB2008expressなんだけど発行フォルダの場所をローカル(適当)に設定して
インストールフォルダのURL(上記と異なる場合) って項目にファイルうpった場所のURLを入れた

setup.exeを起動したら アプリケーションがダウンロードできません。アプリケーションに必要なファイルが不足しています。

うpったファイル
setup.exe
<ファイル名>.application
Application Files[フォルダ]

ちなみに発行をローカルにして、インストールフォルダを未入力にするとsetupはうまくいくけどそもそもネットを介してないんで論外
332デフォルトの名無しさん:2010/02/21(日) 22:33:43
ヘルプ嫁よ。
333デフォルトの名無しさん:2010/02/21(日) 23:07:54
うまくいったわ
後世のためにもここで技術提供させてもらうわ

発行フォルダ:setup.exeとかが作られるところ どこでもおk
インストールフォルダ:setup.exe実行したときにデータを取りに行くところ
              サーバにセットアップファイルを置いとくURLを指定

↑の通りにやってるのになんでかセットアップ行かない人はこっからが重要ね
プロパティ > アプリケーション > アセンブリ名 
ここを半角表記にすること!
全角の名前にしとくとセットアップファイルも全角になる
インストールする際にその全角のファイルをURLで指定するからおかしくなるんじゃないかな
半角にしたら上手くインストールできましたv(^q^)v

助言thx
334デフォルトの名無しさん:2010/02/22(月) 13:57:42
お恥ずかしい質問なのですが、

新規プロッジェクトを作って新規フォームを作成後、
pictureboxを1つ貼り付けて、
form_loadに以下を記述したのですが、画像(というか四角形)が
表示されません。

Dim g As Graphics = PictureBox1.CreateGraphics()
Dim p As New Pen(Color.Black, 1)
g.DrawRectangle(p, 10, 20, 100, 80)
g.Dispose()

他に何か記述するものがあるのでしょうか。
画像関連は全くさわったことないのでorz状態です。
335デフォルトの名無しさん:2010/02/22(月) 14:14:48
onpaintに書かないと
336デフォルトの名無しさん:2010/02/22(月) 14:21:53
CreateGraphicsはいい加減EditorBrowsable(Never)にすべきだな
337デフォルトの名無しさん:2010/02/22(月) 15:37:06
>>335さん、ありがとうございます。
以下で表示できました。

Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) _
Handles PictureBox1.Paint

Dim p As New Pen(Color.Black, 6)
e.Graphics.DrawRectangle(p, 10, 20, 100, 80)
    e.Dispose()

End Sub

onpaintで書いてみたのですが、一瞬それっぽいのが表示されて消えたので
ググってみると、かなり昔のvb6スレにあったのを参考にしてみました。
338デフォルトの名無しさん:2010/02/22(月) 21:47:25
VBのサンプルではよく見かけるけどDisposeを普通に呼び出すのは間違いだよ
Finallyブロックの中で呼ぶか、直接書かずにUsingを使って自動で呼び出してもらう
339デフォルトの名無しさん:2010/02/22(月) 21:55:25
いやこの場合そもそももらっただけのeをDisposeしちゃ駄目だってところから
pの方をこそUsingしないと
340デフォルトの名無しさん:2010/02/22(月) 22:39:14
そういえばCloseとDispose両方ある場合ってみんなどうしてる?
UsingでDispose呼ばれて勝手にCloseもやってくれると信じてやってるけど
341デフォルトの名無しさん:2010/02/22(月) 22:41:35
両方呼んでる。
342デフォルトの名無しさん:2010/02/22(月) 22:41:46
実際呼ばれるからそれでおk
あえて明示的に呼ぶ場合にOpenと対応した方が気持ちいいからDisposeの別名として用意してある
343デフォルトの名無しさん:2010/02/22(月) 23:05:42
呼ばれるかどうかはクラスによる。
344デフォルトの名無しさん:2010/02/22(月) 23:11:45
それはガイドライン的には不適切な実装だから考えても仕方ない
それを言うならCloseとDisposeを両方呼ぶと大抵の実装では結果的にDisposeが2回呼ばれることになる
ガイドラインによれば複数回呼んでも問題のない実装にしろということになってるけど
それを信用できないなら両方呼ぶのも問題があるかもしれない
345デフォルトの名無しさん:2010/02/22(月) 23:59:40
不適切な実装てw

いや普通に考えればそういうことじゃなくて、例えばStreamの派生クラスなんかは
メソッドの名前の対称性を考えるとOpenに対してDisposeではおかしいからCloseがあるわけだし、
C#(.NETのクラスライブラリはC#で書かれてる)ではVBみたいにインターフェイスの実装を
別の名前で公開できないからDisposeもあると。

単純にそういう事情だと思うけどね。
346デフォルトの名無しさん:2010/02/23(火) 00:03:57
あ、でもStremにはOpenメソッドはなかったかw
347デフォルトの名無しさん:2010/02/23(火) 02:08:57
Dim Ary(9) as integer
として、
Aryの要素数は10
というのを関数で導き出すにはどんな関数を使えば
348デフォルトの名無しさん:2010/02/23(火) 02:24:47
Lengthかなんかがあるだろ
349デフォルトの名無しさん:2010/02/23(火) 02:30:23
そう
350デフォルトの名無しさん:2010/02/23(火) 02:39:19
やべぇな・・・今の時間まで仕事やってる俺は負け組だ
そして息抜きがこことは・・・・

へっへっへ・・・・orz
351デフォルトの名無しさん:2010/02/23(火) 02:42:48
実はArrayListで.countなんじゃないかとなんとなくおもった
352デフォルトの名無しさん:2010/02/23(火) 02:45:26
むぅ
353デフォルトの名無しさん:2010/02/23(火) 06:54:37
close はデスクトラクタの実行みたいなもので、
dispose はメモリ開放じゃないの?
354デフォルトの名無しさん:2010/02/23(火) 07:01:52
メモリの解放はあくまでもGC。
System.IO系など、Close = Disposeの実装が多いが例外もある。
ShowDialogした場合のFormがそれ。
355デフォルトの名無しさん:2010/02/23(火) 12:15:17
CloseはあくまでOpenと対で使うものとして
disposableなものは必ずDispose()で終わるようにしている
356デフォルトの名無しさん:2010/02/23(火) 12:19:45
いやUsing使えよ
357デフォルトの名無しさん:2010/02/23(火) 15:14:54
Module Module1
Public WMPList() As String

Public Sub WMPListAdd()
WMPList(0) = "a"
WMPList(1) = "b"
End Sub

End Module
なんでこれ↑だとエラーで
--------------
Public WMPList(1) As String
にしたこれ↓はエラーにならないのか
--------------------
Module Module1
Public WMPList(1) As String

Public Sub WMPListAdd()
WMPList(0) = "a"
WMPList(1) = "b"
End Sub

End Module
358デフォルトの名無しさん:2010/02/23(火) 15:34:02
配列の長さが不定ならList(Of T)かArrayListでも使っとけ

msdnにあるプログラミングリファレンスに、配列についての基礎を説明してるページがあるから読んできなさい。
359デフォルトの名無しさん:2010/02/23(火) 16:15:59
むむむ
360デフォルトの名無しさん:2010/02/23(火) 17:23:19
Redim無しでテキトーに使いたい気持ちは分かる
361デフォルトの名無しさん:2010/02/23(火) 17:37:00
Redimとか過去の遺物
362デフォルトの名無しさん:2010/02/23(火) 17:40:07
では何を使うんだね
363デフォルトの名無しさん:2010/02/23(火) 17:45:16
要素数を変える可能性があるなら最初からList(Of T)を使うべきだし
単に配列を作り直すなら.NETらしく WMPList = New String(3) { }とすればいい
364デフォルトの名無しさん:2010/02/23(火) 17:45:24
ReDim Hoge(3) 相当のものは一応こう書ける。
Hoge = New Object(3) { } 
365デフォルトの名無しさん:2010/02/23(火) 17:49:39
変数名() As New 型
の形の配列宣言(というか初期化の構文糖衣)は.NETになるときに撤廃するべきだった
366デフォルトの名無しさん:2010/02/23(火) 17:53:28
これだな、非互換は
' VB6 
Dim i As Integer, j As Integer    
For i = 0 To 9 
  Dim t(9) As Integer 
  t(i) = i 
  For j = 0 To 9: Debug.Print t(j);: Next: Debug.Print 
Next 

' VB.NET 
Dim i, j As Integer 
For i = 0 To 9 
  Dim t(9) As Integer 
  t(i) = i 
  For j = 0 To 9: Console.Write(t(j)): Next: Console.WriteLine() 
Next
367デフォルトの名無しさん:2010/02/23(火) 18:13:23
それは大昔のVisualじゃないBASICには
配列の要素数が10個以下の場合は配列宣言は不要
とかいう決まりがあったからだと思った
368デフォルトの名無しさん:2010/02/25(木) 13:18:35
数値ってintegerとlongどちらで宣言するのが良いのでしょうか
369デフォルトの名無しさん:2010/02/25(木) 13:33:38
どっちでもいいよ
370デフォルトの名無しさん:2010/02/25(木) 13:46:04
ありがとうございます!!
371デフォルトの名無しさん:2010/02/25(木) 13:47:10
でもまあ必要ない限りはIntegerだろ
372デフォルトの名無しさん:2010/02/25(木) 13:49:05
integer で事足りるなら integer。
不要なメモリは使わないようにすること。
373デフォルトの名無しさん:2010/02/25(木) 13:56:49
VB6のIntegerは.NETのShort。VB6のLongは.NETのInteger。.NETのLongは64bit整数。
374デフォルトの名無しさん:2010/02/25(木) 14:44:45
ろくまんごせんなんたらはなにがた?
375デフォルトの名無しさん:2010/02/25(木) 15:24:59
16bitの型だ
.netはushort short
376デフォルトの名無しさん:2010/02/25(木) 16:02:32
VS2008でASP.NET3.5の開発をしています。

複数のWebページから共通の処理(SubとかFunction)を
呼び出すにはどのようにしたらよいでしょうか?

aaa.aspx から処理Xを呼び出す。
bbb.aspx から処理Xを呼び出す。

module.vbを使おうと思ったのですが、これをWebで使おうとすると
ここで宣言された変数や関数は、すべてのセッションで共用され
てしまうため、セッション同士で値の書き換えをしてしまって
異常な結果を返す可能性があると聞きました。
どうしたらよいでしょうか?

377デフォルトの名無しさん:2010/02/25(木) 18:07:53
まずWEBサイトなのかWEBアプリなのかも明記した明記したほうがいいと思う

SyncLock(つづり忘れた)かけるとかでいいんであればそうすればいいだろうし
どんな使い方するかによるんじゃね?

例えばアクセスカウンタなんかは簡単なサンプルになるんじゃないかな?と思うけど
378376:2010/02/25(木) 18:25:56
>>377
Webアプリです。
WebアプリとWebサイトでは、やり方が異なるのでしょうか?

アクセスカウンタでサンプルを作ってみます。
379デフォルトの名無しさん:2010/02/25(木) 19:27:58
役立った言語・ツールは「VB」や「C」、今後習得したいのは Web 系技術―IT 系転職者アンケート
http://headlines.yahoo.co.jp/hl?a=20100225-00000002-inet-inet
380デフォルトの名無しさん:2010/02/25(木) 19:53:00
>>376
んなこたーない
381376:2010/02/25(木) 20:43:58
>>380
たしかに聞いた話と違いました・・・ガセだったのか・・・?

Module Module1
Function cntup(ByVal cnt As Integer, ByVal sleeptime As Integer) As Integer
Dim x As Integer
x = cnt + 5
System.Threading.Thread.Sleep(sleeptime)
cntup = x
End Function
End Module

カウンターとはちょっと違うけど、ローカル変数x が上書きされるか
試す処理を書いてみました。
ブラウザを2つ立ち上げることで2つのセッッションから、この処理
を同時処理させてみました。

セッション1 cntup(1,1000)
  これは、x = 1+5 = 6 を1秒後に戻します。

セッション2 cntup(8,10000)
  これは、x = 8+5=13 を10秒後に戻します。

まず、セッション2を実行して、10秒経過する間にセッション1を実行しました。

噂どおりならセッション2のxの値は、セッション1でセットした6が
返るはずです。
しかし、結果は、両セッションとも正しい数値を返しました。


382デフォルトの名無しさん:2010/02/25(木) 20:48:32
ローカル変数が勝手に書き換わるとか怖すぎるだろ
問題になるのはモジュールのフィールドの話
モジュールじゃなくてもSharedフィールドなら同じ問題が起こる
383376:2010/02/25(木) 21:15:28
>>382
そうですよね・・・Webの開発では、Moduleを使わない方がいいと
聞いたのですが、大丈夫みたいですね。

ちなみにセッション変数でも試してみましたが、問題なかったです。

Module Module1
Function cntup2(ByVal sleeptime As Integer) As Integer
HttpContext.Current.Session("cnt") = HttpContext.Current.Session("cnt") + 5
System.Threading.Thread.Sleep(sleeptime)
cntup2 = HttpContext.Current.Session("cnt")
End Function
End Module

384デフォルトの名無しさん:2010/02/25(木) 21:17:02
なんかいろいろ間違ってる悪寒。
385デフォルトの名無しさん:2010/02/25(木) 21:28:30
2chに書き込むブラウザを作っているのですが、うまく書き込めません
どこがおかしいか見てもらえませんか?
パスはvbです
ttp://www1.axfc.net/uploader/Sc/so/86485.zip
386376:2010/02/25(木) 21:35:06
>>384
Moduleの中でセッション変数を使ってるところ?
387デフォルトの名無しさん:2010/02/25(木) 21:40:34
その辺もそうだし、そもそも渡し方も変だし。
あと、俺なら、共通ライブラリにして参照設定すると思う。
388デフォルトの名無しさん:2010/02/26(金) 01:01:48
>>383
お前みたいなやつが問題ないって言いながら
いつの間にかフィールド使ってぶち壊すんだよ。
389デフォルトの名無しさん:2010/02/26(金) 01:04:00
しかもModule使いたがるやつは大抵旧VB使いで
グローバル変数を平気で使う習慣があったりして
見事にはまったりする。
390user1:2010/02/26(金) 04:38:35
>>385
ポストデータではなく、クッキー(txtファイル)に「;tepo=don」を追加したら書き込めたよ。
391376:2010/02/26(金) 06:30:20
共通ライブラリも1つの手ですが、
1つのプロジェクトの中で、複数のWebページから
共通に利用する関数は、どこに配置するのでしょうか?

>>389
そういう意見もいくつか聞いています。
module.vbを使わないとしたら、class.vbですか?
どうしているのでしょうか?
392デフォルトの名無しさん:2010/02/26(金) 06:39:45
Webサイトなら App_Code、Webアプリなら、普通にクラス。
393デフォルトの名無しさん:2010/02/26(金) 07:21:40
クラスだろうがモジュールだろうが関係なくね?
問題は変数のスコープを理解してるかどうかで
394デフォルトの名無しさん:2010/02/26(金) 10:22:45
スコープの話なんかプログラミング以前の準備運動レベルだぞ
最低限の基礎的な「プログラミングの感覚」は落ち着いて本読んで身に付けようよ
395デフォルトの名無しさん:2010/02/26(金) 10:35:04
>>376
もう少しASP.NETアプリがIISとともにどう動くのかマイクロサイトのサイトでも何でもいいからきっちりドキュメント読むべき

何も分からずにやると
「高負荷になるとセッションがなくなってしまうんです><」
みたいに絶対言いだすやつがいるから
396デフォルトの名無しさん:2010/02/26(金) 11:02:08
IISのセッションを無限時間にするには
Session.TimeOut=60*24*365*100
と書いておけばいいの?
397デフォルトの名無しさん:2010/02/26(金) 12:50:12
>>392
その言い方は語弊がありそうだ

WebサイトならApp_Codeにclass.vbつっこむ
Webアプリなら、アセンブリ(dll)つくってbinにつっこむ
なんにしても使うのはクラス

今のVB.NETでModuleとかもう存在を忘れろ
つかASP.NETのWEBサイトでモジュールが動くことにびっくりしたわ
398デフォルトの名無しさん:2010/02/26(金) 14:04:46
質問です。
VB.NET(.NET Framework)と java は、言語仕様が似ているところがあり、
同じような機能が提供されていて、それを利用する際は、コードの書き方や
呼び名が一部異なっているだけだったりすると思うのですが、それにおける
対応表のようなものは無いのでしょうか?
サイトや書籍でそういうものがないかと思っているのですが。

例えば、設定ファイル関連の処理はこのあたりが該当すると思います。
[VB.NET]アプリケーション構成ファイル
http://dobon.net/vb/dotnet/programing/appconfigfile.html
[java]プロパティファイル
http://www.atmarkit.co.jp/fjava/rensai4/programer09/programer09_1.html
399デフォルトの名無しさん:2010/02/26(金) 14:47:07
400デフォルトの名無しさん:2010/02/26(金) 15:20:57
>>390
ありがとうございます。完成しましたー
401376:2010/02/26(金) 16:27:57
ありがとうございます。
やはり、クラスなのですね。

スコープを意識してまとめるとこんな感じでしょうか。

Applicationレベル
 変数:Application変数、shared、Module内でフィールド宣言
 関数:Module内に記述

 セッションレベル
   変数:セッション変数
   関数:(セッションレベルのスコープでの関数の概念は無し)

   ページレベル(Webフォーム)
     変数:Webフォームクラス内で宣言
     関数:Webフォームクラス内に記述

クラス(class.vb)は、どのレベルからでも使える。
クラスから生成したインスタンスは、呼び出した側のスコープが範囲内となる。
但し、クラス内でsharedしているものは、アプリ全体で同じクラスのインスタンスは
値を共有する。従って、セッションを意識するWeb系の開発では取扱い注意。



   
402376:2010/02/26(金) 16:38:05
>>397
Webアプリなのですが、プロジェクトの直下にclass.vbを配置して使えてます。
別途、dllを作った方がよいのでしょうか?

試しに>>381をクラスで作ってみました。
Webフォームでこのクラスのインスタンスを作成して処理を実行しました。
実験のため、変数xは、わざとFunctionの外で宣言しています。

Public Class Class1
Private x As Integer
Public Function cntup3(ByVal cnt As Integer, ByVal sleeptime As Integer)
x = cnt + 5
System.Threading.Thread.Sleep(sleeptime)
cntup3 = x
End Function
End Class

>>381と同じテストをして、複数セッションからの同時処理でも各々のセッションで
正しい結果を受け取ることを確認しました。

403376:2010/02/26(金) 16:38:51
次に、xをSharedしてみました。

Public Class Class1
Private Shared x As Integer
Public Function cntup3(ByVal cnt As Integer, ByVal sleeptime As Integer)
x = cnt + 5
System.Threading.Thread.Sleep(sleeptime)
cntup3 = x
End Function
End Class

これは、複数セッションでxを書き換えてしまうため、正しくない結果となりました。
「正しくない」とは、最後にこのクラスを実行したときの値が他のセッションでも
反映されるというものです。

404デフォルトの名無しさん:2010/02/26(金) 16:47:42
その程度の事で検証が終わってるとは思えないが…
問題は

仮に共通の部分がXだとして
X=1として

AがXを読み込みする
BがXを読み込みする
Aが読み込んだXを+1して書き終えてから
Bが読み込んだXを+1して書き終えた

本来であればXが3になる予定のものが2になってる

こういうことが起こりえると言いたいと思うんだわ
405デフォルトの名無しさん:2010/02/26(金) 17:05:02
>>399
サイトの紹介ありがとうございます。
javaとの関連文章を探すのであれば、C#を見た方がよさそうですね。
406376:2010/02/26(金) 17:39:53
>>404
いえ、「起こりえるといいたい」のではなく、
「起こるはずがないと思うが、一部の人がModuleではそれが
起こるといってるが本当ですか?」
というものです。

これに対する回答は>>382さんのフィールドの話でした。
Module内で記述した関数の中の変数までは影響しないということです。


それで、376が一番したいことは、複数のWebフォームで同じ処理が
あるので、これを1つの関数として共通して呼び出したい。
この処理が、各セッションで潰しあうことなく独立して動作してほしいが、
どこにどうやって記述するのですか?
というものです。

これに対する回答は、dllを別途作成して参照するか、class.vbに記述するというものでした。

>>404さんが示した処理では、
セッションAの戻り値は、2、セッションBの戻り値も2になってほしい。
しかし、x=3になるのであれば、Applicatonレベルの変数になっているということで
セッション毎に独立していないということになります。

407デフォルトの名無しさん:2010/02/26(金) 18:50:43
変数のスコープが関数の中に閉じてる限りはどこでもいい。
ローカル変数は必ず「関数に入るとき」に毎回新しく作られる。
実行環境は全く関係ない。
もうちょっと複雑な処理で状態を持ちたい場合はクラスにして
インスタンスをセッションごとに作ればいい。
408デフォルトの名無しさん:2010/02/26(金) 22:31:25
Classなら自分で明示的にSharedにしなきゃ、
意図せずフィールドが共有されてるなんてことは起こらないが、
Moduleを使うと意図せずSharedなフィールドを使ってることがある。
っていうかあまり意識せずにそういうことをしてしまう奴がいる。
だから使わない方が無難というだけ。
409デフォルトの名無しさん:2010/02/26(金) 22:46:16
悪いことしてない人はセキュリティ気にする必要ないんだが
410デフォルトの名無しさん:2010/02/26(金) 22:51:39
誤爆?
411デフォルトの名無しさん:2010/02/26(金) 23:06:14
C#相談室とかじゃないか?
412397:2010/02/26(金) 23:56:38
すまん、Webアプリだって書いてたな。Webサイトと勘違いしてたわ
まあ、Webアプリだとビルドすると全てのコードはdllになってbinフォルダに格納されるわけで...

今の.NETでは関数は普通、何かのクラスのメソッド(Sub,Function)として実装される
メソッドや変数がどの範囲からアクセスできるかは、そのメソッドと変数の定義による
この考え方を一般に変数のスコープっていうんだ。VB.NETだとアクセスレベルとも言われる

モジュールってのは特殊なスコープと寿命をもつ特殊なクラスっぽいもの
過去のVBとの互換以外に使う理由も必要性もありません

変数のスコープや寿命についての考え方は今の言語ならほぼ必須の考え方なので
頑張って理解してくれ

ちなみにアプリケーションやセッションっていうのは、
.NETの変数のスコープの概念ではない。ASP.NET固有の概念
ApplicatinはASP.NETの実行単位なんで、ほぼグローバルと同意と考えていいが
Sessionは.NETに該当する概念はない。
Sessionとはその単位で独立したものではなくて、ページ単位で独立しているものを
関連付けるものだ
413デフォルトの名無しさん:2010/02/27(土) 00:04:10
アクセスレベルとスコープは違うぞ
アクセスレベルで決まるスコープもあるけどそうでないスコープもある
414デフォルトの名無しさん:2010/02/27(土) 00:22:43
ところでみんなはどっち使ってる?
サイト?アプリ?
415デフォルトの名無しさん:2010/02/27(土) 00:23:39
Webアプリだなぁ。
416デフォルトの名無しさん:2010/02/27(土) 00:25:10
アプリのがクラス使うときとか楽だよね
417デフォルトの名無しさん:2010/02/27(土) 00:51:40
サイト使ってるなー
クラスとか使うときは普通に別dllにしちゃうしねー
418デフォルトの名無しさん:2010/02/27(土) 01:14:20
>>413
とあるスコープ内で、そのスコープ外で定義されたものが
使えるかどうかがアクセスレベル、って感じか
まあとりあえずアクセスレベルもスコープの一種として覚えてても問題ないんじゃない

>>414
ASP.NET 1.1からの俺はWEBアプリ派

ちょろっとしたクラスとか使いたいときにはApp_Codeが欲しくなることもある
というかWebアプリ作ってたはずなのにApp_Code使いだして、気がつくと
WebアプリとWebサイトの混在したわけのわからんサイト作ってたりw
419デフォルトの名無しさん:2010/02/27(土) 14:23:00
質問
独学でVB.NETを勉強しているのですが、例外クラスが
準備されている理由やその使い方などがぼんやりと
しか把握できませんでしたので、その理解が正しいかの
確認をしたいと思い、ここで質問してみました。

例外クラスは、アプリが予期せぬエラーが出て終了して
しまった際、それがどの部分の処理であるかの確認を
するために準備されているものである。
(あくまで、デバッグをしやすくする為のものであり、
エラーが起きにくくする為に準備されたクラスではない)

なので、独自のアプリを作る際は、例外を継承した
独自例外クラスを作っておいて、アプリの内部の処理の部分で
エラーが起きると想定される部分で、その独自例外クラスが
実行されるようにしておくと、デバッグもしやすくなる。

このような理解でよろしいのでしょうか。
間違いや不足点などがありましたらよろしくお願いします。
420デフォルトの名無しさん:2010/02/27(土) 14:38:27
いや、別に例外クラスはデバッグのためにあるのではない
たんに、エラーが起きたときにエラーを通知するためにあるだけで
アプリ内で例外を検知してしかるべき処理をするために使うのが本来の目的
つまり、予期できるエラーの予期と処理につかう

アプリが終了したときに使うのなら、アプリでハンドリングできる形にする必要はないわな
421デフォルトの名無しさん:2010/02/27(土) 14:42:29
例外クラスって何?
422デフォルトの名無しさん:2010/02/27(土) 16:11:35
通常、独自の型の例外を投げる場合は「キャッチして適切に処理してほしい」という意味なので
デバッグ目的で独自の例外を投げるのは良くない。適当にInvalidOperationExceptionなどを投げた方がいい。
423419:2010/02/27(土) 16:39:16
>>420
>>422
レスありがとうございます。
レスを読むことで、イメージが明確になってきたような気がします。

例外クラスが無いプログラミング言語において、
関数を書く際、返り値が必要ない場合であっても、途中で
エラーが起きて処理が続行出来なくなったかを返す意味合いで
返り値があるように書く場合がありますが、それの延長のものが
例外クラスと考えるとよろしいのでしょうか。

正常に処理が終了したら0で、引数の値がおかしい場合は1で
それ以外の予期しない場合は2で・・・という感じで定義して
書いたりするのを例外クラス名で表記すると分かりやすいよね、
みたいな。
424デフォルトの名無しさん:2010/02/27(土) 17:03:55
メソッドの使い方が間違ってる場合(規約違反)と、予期できて回復可能かもしれないエラーは区別する。
前者はアサートを使ってもいいし例外を投げてもいいけど通常その例外をキャッチしてはいけない。
ArgumentExceptionやInvalidOperationExceptionがその例。キャッチさせるために投げてるわけじゃなく
コードを修正しろという意味なので独自の例外クラスを作る必要もない。
後者は利用側に適切に処理させるために例外を投げるので、具体的な独自の型の例外を作ったほうがよい。
425デフォルトの名無しさん:2010/02/27(土) 18:35:43
例外の取り扱いについては解説してる本とか少ないんだよな
ちょっと古くて基本的にASP.NETの本なんだが
.NETエンタープライズWebアプリケーション開発技術大全 って本がある
それのVol.3に例外処理の考え方について書いてあるので
入手できるなら読んでみれば参考になるかと
426デフォルトの名無しさん:2010/02/27(土) 18:52:02
ttp://msdn.microsoft.com/ja-jp/library/seyhszts(VS.80).aspx
ttp://msdn.microsoft.com/ja-jp/library/ms229014(VS.80).aspx
ここら辺を読んでおけば大丈夫じゃない?
427デフォルトの名無しさん:2010/02/27(土) 18:54:51
ただ一つ言えることは
Try
例外が出そうな処理
Catch ex As Exception
Console.WriteLine(ex)
End Try
こればっかり書く奴は死ねってこと
428デフォルトの名無しさん:2010/02/27(土) 19:03:20
>>423
なんかナンセンスなこと書いてる人が多いのであまり真に受けない方がいいと思う。
まあ意味不明なので真に受けようもないかw

例外なんてそんな難しく考えることはない。
コンピュータの処理(手続きとか関数とか言ってもいいけど)とは、何らかの入力にたいして
何らかの結果を出力すること。

例外とかエラーとかは、要するにこの何らかの理由でこの入力に対して出力を吐き出す操作が
正常に遂行できない事態のこと。


「例外機構」の存在意義と「例外オブジェクト」の存在意義は分けて理解した方がいいと思う。

前者の存在意義は、プログラマが想定していない例外が発生した場合(要するにバグがある)
プログラムを強制終了させるため。

後者の存在意義は、単なるエラーコードより、エラーに関するさまざまな情報が
一つのオブジェクトに一元化されている方が扱いやすいから。
429デフォルトの名無しさん:2010/02/27(土) 19:13:26
>>428は例外処理しないの?
ファイルアクセスに失敗したら強制終了するんだろうか
430デフォルトの名無しさん:2010/02/27(土) 19:15:58
>>429
短い文章なんだから、反論する前にちゃんと読んだらどう?
431419:2010/02/27(土) 20:01:24
みなさん、親切な解説や情報ありがとうございます。

>>424
> メソッドの使い方が間違ってる場合(規約違反)と、予期できて回復可能かもしれないエラーは区別する。
私の中では、この区別の概念がありませんでした。しかし、聞いてみるとその通りだと思います。
このような考え方を持つと独自で例外クラスを作った方が良いかの区別がしやすいですね。

>>425
その書籍は、購入しようか迷った事があり、タイトルだけ知っています。
ちょっと古い上に、全部そろえようとすると結構するんですよね。
さらに、@ITにも記事が一部載ってたり・・・

>>426
URL読んで見ます。

>>427
いいたい事は伝わってきました。
どういう類のエラーなのかを書かないと、デバッグの際は分からないですもんね。

>>428
> 「例外機構」の存在意義と「例外オブジェクト」の存在意義は分けて理解した方がいいと思う。
ここの部分は凄く参考になると思いました。
レスを読み返しながらこれまで読んできたサイトを読み返してみたいと思います。
432デフォルトの名無しさん:2010/02/27(土) 21:49:00
VB.NETにおけるおまじないとは
433デフォルトの名無しさん:2010/02/28(日) 01:06:07
>>428は10年前の例外処理から進歩してない気がするな
どの辺がナンセンスでどの辺が意味不明なのか詳しく教えてくれないか
434デフォルトの名無しさん:2010/02/28(日) 01:56:19
まず君の方からどのあたりが「10年前の例外処理から進歩してない」のか説明してみたら?
435デフォルトの名無しさん:2010/02/28(日) 02:57:30
まぁこれは荒れるよなw
436デフォルトの名無しさん:2010/02/28(日) 03:40:05
例外機構の存在意義が、バグがあったときにプログラムを強制終了させるためだって言ってるんだぜ
構造化例外処理が一般的になる前の意見だぜ、それは。だから10年前だって言われてるんだろ

(要するにバグがある)って要約がなければ、最大限好意的に解釈すれば
プログラマが想定していない例外が、ってくだりで想定された例外がある=構造化例外処理で
処理すべき例外とは別の話だ、と取れなくもないが...
その場合、自分以外の人間が作成したプログラムモジュールで例外(それはバグかもしれないし
そうでないかもしれない)が発生したときにプログラムを強制終了したくないかもしれない
例外がでたからプログラムを強制終了とかいうのは、プログラムの全てを自前で作ってた時代の話だな

ほんとに10年前かどうかはわからんが、昔の考え方には違いないわな


で、どの辺がナンセンスでどこが意味不明なんだ?
437デフォルトの名無しさん:2010/02/28(日) 04:36:00
>>436
おはよう。
なんか、変な寝言口走っていたよ?
438デフォルトの名無しさん:2010/02/28(日) 08:11:35

439デフォルトの名無しさん:2010/02/28(日) 08:54:00
例外って言うのは
停電
とか予期せぬ事の事?
440デフォルトの名無しさん:2010/02/28(日) 09:38:31
>>436
悪いけど全部がナンセンス。
自分の頭で物事をちゃんと咀嚼してないからそういう事になる。

俺はちゃんと「例外とはそもそも何なのか」を説明した後、「例外そのもの」と
「例外機構」と「例外オブジェクト」を峻別した上で、

「例外機構の存在意義はプログラマが想定していない例外が発生した時プログラムを
強制終了させる事にある」

と言っているのに、もうこんな簡単なことすら君は理解してない。

こういう頭の悪い人との議論はたぶん無駄にしかならないと思うが、では逆に
聞く。

俺の説明が「昔の考え」と言うなら、では現在では例外をどのように定義し、
例外機構の存在意義はどのように考えられているというのか。

まあ無理しなくていいよ本当に。
441デフォルトの名無しさん:2010/02/28(日) 10:16:31
一人開発なら思う様にやれば良いじゃない
コードの書き方に完璧な答えなんて無いのさ
442デフォルトの名無しさん:2010/02/28(日) 10:25:55
例外機構は異常が発生した時に処理を中断して別の処理を行わせるもの
中断→別の処理 の流れを作るのが目的なんであって中断だけを存在意義と言ってるのがおかしい
443デフォルトの名無しさん:2010/02/28(日) 11:26:04
S="a" & vbcrlf & "b" & vbcrlf
として、
Dim Ary() as string
Ary=split(S,vbcrlf)
の結果は
Ary(2)はそんざいするのだろうかするならどんな値だろうか
444デフォルトの名無しさん:2010/02/28(日) 11:29:20
やてみればいいじゃん。
445デフォルトの名無しさん:2010/02/28(日) 11:42:04
3だな
446デフォルトの名無しさん:2010/02/28(日) 12:26:46
>>443
Split関数とか今更使うなとは言わないが、使うならMSDNに書いてある仕様ぐらい
読めばいいのに。

っていうか、プログラマなら読まなくてもだいたい見当つかないか?
Split("a\b\c\", "\")とSplit("a\b\c", "\")の結果が同じになるような仕様だったら
いろいろ不便だとは思わない?
447デフォルトの名無しさん:2010/02/28(日) 12:53:21
こういうのもあるな。
str.Split(seps, StringSplitOptions.RemoveEmptyEntries)
448デフォルトの名無しさん:2010/02/28(日) 13:02:00
文字列を一行ずつ処理したかったらStringReader使った方がやりやすい
449デフォルトの名無しさん:2010/02/28(日) 13:23:33
Splitって
VisualBasic.Splitってながながかかないとつかえないと
450デフォルトの名無しさん:2010/02/28(日) 13:45:09
>449
Microsoft.VisualBasicは2008ならデフォでインポートされてるが
451デフォルトの名無しさん:2010/02/28(日) 13:45:27
>440
いや、>436はお前の意見を理解したうえで、
>「例外機構の存在意義はプログラマが想定していない例外が発生した時プログラムを>強制終了させる事にある」
という考え方が、昔の考え方だといってるんだろ?
なぜそれが昔の考え方なのかお前に理解できてないんじゃないのか?

現在の例外は、通常の処理ではない状態が起こったときに発生する(させる)んだよ
単にバグでエラーが出たときにだけ発生するんじゃないんだ
そして例外をキャプチャし例外の種類に応じて適切な処理をする
このための機構が構造化例外処理機構
例外=(プログラムを終了させるべき)エラーって考え方はそれこそナンセンスだぜ

では逆に聞く、とか言わないで、素直に現在の例外処理機構を教えてくださいって言えよ
452デフォルトの名無しさん:2010/02/28(日) 13:49:23
もうめんどくさいからon error resume next でいいよ
453デフォルトの名無しさん:2010/02/28(日) 14:47:49
>>451
悪いけど全然理解してないから。
誰が「例外=(プログラムを終了させるべき)エラー」なんて言ってるんだ。
本当に頭わるいな。

もう「例外」と「例外機構」をちゃんと区別しましょう、
っていう話の段階から理解してないようだしw

しかし、いきなり「お前」呼ばわりか。
馬鹿の特徴の一つだねw
454デフォルトの名無しさん:2010/02/28(日) 14:52:33
ちなみに、

「例外機構の存在意義はプログラマが想定していない例外が発生した時プログラムを
強制終了させる事にある」

という、当たり前のことが理解できないのは、そもそも「例外」って何なのかが
理解できてないからだ。

経験上そういう人間が多いことを知っているから、
>>428でそういうそもそも論から始めてるんだけど、お馬鹿さんに限ってこういう
「そもそも論」が苦手だから困っちゃうな。
455デフォルトの名無しさん:2010/02/28(日) 14:55:15
VB.NETに関係ないし、よそでやってくれ。
456デフォルトの名無しさん:2010/02/28(日) 15:15:27
横から見てるとすげえ笑えるけどなw
457デフォルトの名無しさん:2010/02/28(日) 15:18:56
そもそも前提が間違ってるんだが
なんでそんな自信満々に語れるんだろう
458デフォルトの名無しさん:2010/02/28(日) 15:30:34
なんとなく言いたいことは分かるけど説明に突っ込みどころが多すぎる
人が自分の話をわかってくれないのは周りの頭が悪いからだと思い込んでる人なんだろうな
459デフォルトの名無しさん:2010/02/28(日) 15:59:54
>>458
いるいるそういう人ww
460デフォルトの名無しさん:2010/02/28(日) 19:59:28
>>453
どうでもいいがお前も馬鹿がにじみ出てる書き方にしか見えないぞ率直に言って。
461デフォルトの名無しさん:2010/03/01(月) 00:22:57
議論以前に、428の言ってることを理解できてる人は多分いないから無駄だと思うよ
428以外みんな頭悪いらしいからどうしようもないw
462デフォルトの名無しさん:2010/03/01(月) 04:30:29
馬鹿がにじみ出てるって、いいよな。ほんとに。

やっぱり、鼻の穴とか目の涙腺とか、頬の皮膚呼吸の穴なんかから、
エキスのようなものがじわーっと顔に広がり、
挙句の果てには、書き込む文章にまでしたたりこんできてるんだろ。

これが人に伝染する病原菌とかだったら怖い話だが、
ただの馬鹿ってところが、なんだかほんわかしてていいよな。
463デフォルトの名無しさん:2010/03/01(月) 07:35:02
ログを読んでいると、必死に話を脱線させようと頑張っている
一人のむなしい努力に見えてしまうんだが・・・
464デフォルトの名無しさん:2010/03/01(月) 10:01:44
つーかIDの出ない板でくだらない煽りあいしても不毛なだけ
465デフォルトの名無しさん:2010/03/01(月) 10:11:17
例外機構や例外クラスの定義は別として、ちょっと確認したいのだが、
メソッドには、その引数の値がおかしいとか、計算処理中でおかしな
値になってしまっていたとか、そういう類になった場合、exceptionを
返してくるので、その種類に応じて適切な処理(messageboxを使って
警告を出して、異常終了しないような処理)をした方がいい、
ということでおk?

さらにいうと、自作クラスでメソッドを書く場合も同様な考えで
exceptionを出すような設計で考えると、それを使う人が分かりやすくなる。
466デフォルトの名無しさん:2010/03/01(月) 11:08:22
>>465
基本例外は発生させないようにするべき と俺は思ってる
トレースやなんやらで処理も重くなるし

例えばファイルなんか開く場合だと FileNotFoundExceptionが発生するだろうけど
事前にExistしてエラーメッセージを出す。

例えばチェックしたけど、チェック完了からファイルオープンまでの僅かな間に
ファイルが消された場合は例外発生は致し方ないかと

自分は基本的にエラートラップは
Application.ApplicationExit
とか
Application.ThreadException
で一括でトラップする。

いちいち処理の中に例外処理でログとったりとか書いてるのもめんどくさくない?
修正もめんどくさいし。

他の人は知らないけど俺は基本的に特殊な例を除いて例外は独自にトラップしたりはしない。

クラスの設計に関しては、それでいいと思う。
int返すメソッドとかで勝手にキャッチしてリターンが-1とかになるのも困るし。
クラス設計は使う側が引数とかを事前にチェックしているべきだと思う。
467デフォルトの名無しさん:2010/03/01(月) 12:43:08
結局ドキュメントをちゃんと読めちゃんと書けってこと。
ドキュメントに0から100までの値を指定しろ範囲外なら
ArgumentOutOfRangeExceptionを投げるぞと書いてあるなら
それは事前にチェックしておくべきでキャッチしたらダメ。例外が出るのは利用側のミス。
ドキュメントに、事前に予測できないような条件で
IOExceptionが発生すると書かれてるなら、対処可能ならキャッチして適切に処理するだけ。
468デフォルトの名無しさん:2010/03/01(月) 20:06:47
事前にチェックしてしかるべき処理をしろってのはまあ本筋なんだろうけど
たとえば、範囲が0から100まででなければそれ専用の例外が発生する設計なら
事前チェックするより、投げて例外が発生するかどうかでチェックした方がいいような気もしないでもない
どうせ投げられた側でチェックするんだから、2回もチェックするのが冗長に思えるんだよなぁ
469デフォルトの名無しさん:2010/03/01(月) 21:30:13
確かにそうだな。
文字変数に数字以外が含まれているかどうかは、
数値変数に代入してエラーが発生するかどうかで
判定してるしな。

470デフォルトの名無しさん:2010/03/02(火) 21:06:40
はじめまして
プログラミングを始めてみようと思い
VB2008 Express EditionをダウンロードしMSDNを参考にして
http://msdn.microsoft.com/ja-jp/library/xk24xdbe.aspx
ここら辺りは勉強したのですがこの後どういう知識をつけていけばいいのかわかりません

ひとつ勉強がてらに作ってみたいと思っているのが
オンラインゲームなどの自動ログインツールで
ブラウザでID、PWを入力しログイン、ゲームスタートなどの動作を
プログラムで自動化し、そのプログラムにID、PWを入力すると
プログラムからゲームが直接起動できるようなものを作りたいと考えています

こういうのを勉強すればいいよなど
なにかアドバイス、指摘等頂ければ幸いです

よろしくお願いします
471デフォルトの名無しさん:2010/03/02(火) 21:08:05
なんでいきなりそんな難しいものつくるんだよw
472デフォルトの名無しさん:2010/03/02(火) 21:11:04
基本的に他のアプリケーションに影響を与えるってのは難易度が高い部類
473デフォルトの名無しさん:2010/03/02(火) 21:19:21
VBがどうというよりWindowsについての知識の問題だしな
全くプログラミングの勉強にはならない
474デフォルトの名無しさん:2010/03/02(火) 21:39:49
> こういうのを勉強すればいいよなど
HTTP
475470:2010/03/02(火) 21:45:23
なるほど・・・やはり難しいのですね・・・

とりあえず今チュートリアル的なものを見ながらブラウザを作ってみているのですが
フォームタイトル(?)フォームのtext部分を変更することは出来ないのでしょうか?

連続の質問となりますがよろしくお願いします
476デフォルトの名無しさん:2010/03/02(火) 21:45:32
ゲームはUIが独自だから余計に難しい
一般的な方法は無いので個別にゲームを解析するしかない
477デフォルトの名無しさん:2010/03/02(火) 21:55:19
>>475
できるよ。やり方は、ヘルプに書いてある。
478470:2010/03/02(火) 21:55:40
>>476
考えていたものはランチャー自体に入力でなく

http://elsword.hangame.co.jp/

このような感じでブラウザでログインし、ゲームスタートを押す
というものを考えていました

どちらにせよ難しそうなのですが・・・T-T
479470:2010/03/02(火) 21:58:23
>>477
ちょっと情報不足だったかもしれないのですが
アプリケーションを起動中にTextboxなどに入れた文字をタイトルとして変更する

という事をしたいのですが

Form1.text = TextBox1.text

では

'WindowsApplication1.Form1' は、既定のインスタンスからそれ自体を参照できません。'Me' を使用してください。

のようなエラーが出てしまうのです・・・
480デフォルトの名無しさん:2010/03/02(火) 21:59:17
>>478
ログインはできるだろうけど、その先の Flash でどうしようもなくなると思うよ。
481デフォルトの名無しさん:2010/03/02(火) 21:59:54
>>479
Me を使え、って書いてあるんだから、使えばいいだろ。
482デフォルトの名無しさん:2010/03/02(火) 22:03:46
>>481
ありがとうございます

Meはてっきり
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
の部分でしか使えないと勝手に思い込んでしまっていました

自分の頭の出来に呆れるほどです・・・

本当申し訳ないです
483デフォルトの名無しさん:2010/03/02(火) 22:05:07
ここで1から10まで聞くな
484デフォルトの名無しさん:2010/03/02(火) 22:57:20
ggrks

まあ意味も無い議論で埋まるよりはマシかもしれないが
485デフォルトの名無しさん:2010/03/03(水) 06:43:16
自演乙
486デフォルトの名無しさん:2010/03/03(水) 19:42:35
fuck u
487デフォルトの名無しさん:2010/03/03(水) 19:56:32
oh. miss spell
488デフォルトの名無しさん:2010/03/04(木) 06:51:32
VBでボタンを押したときサウンドを鳴らせたいのですが
相手にファイルを送ったとき人によってファイル位置が変わってしまいますが
再生させることはできるのでしょうか?
どこのページ見ても音声ファイルの場所を〜とか書いてあって
自分用にしか作れない説明ばかりでわかりませんでした
489デフォルトの名無しさん:2010/03/04(木) 07:18:48
言いたいことはなんとなくわかるけど
もうちょっと他人に分かるよう話す努力をしてみてくれんか
490デフォルトの名無しさん:2010/03/04(木) 07:19:07
アプリケーション直下の〜フォルダにサウンドを入れる、とか
ルール決めればいいじゃない。
適切なフォルダ構成で展開されるよう圧縮するか
インストーラ作ればいいじゃない。
491デフォルトの名無しさん:2010/03/04(木) 11:02:03
ListViewについて質問です
プログラム上からアイテムを選択するには
ListView.items(*).selected = true/false
にしてListView.select()とやるようなことを見つけたんですが

今テキストボックスで入力を受け付けて入力内容によって選択を変えるというのをやっています
問題はselect()を呼んだ瞬間にキーボードフォーカスがListViewに行って入力がさえぎられるんですが
フォーカスを移動せずに選択場所を変えるにはどうすればいいんでしょうか?
フォーカスが無くても選択を反転表示するプロパティを設定してるので
テキストの入力でリアルタイムにその選択が移動するようにしたいのですが
492デフォルトの名無しさん:2010/03/04(木) 11:05:36
Selectしなけりゃいい
493デフォルトの名無しさん:2010/03/04(木) 11:15:33
>>492
ああ、出来ましたありがとう
494デフォルトの名無しさん:2010/03/04(木) 21:12:26
パスしていするだけだろ?
送るってどうやって送ってるんだ?
どの場所に保存してるかくらいわかりそうなもんだが・・・
495デフォルトの名無しさん:2010/03/04(木) 21:20:29
そんな時のためのWebサービスだろ。
どのクライアントからでも同じ場所にアクセスすれば
ファイルの位置の問題は解決する。馬鹿じゃねーの。
496デフォルトの名無しさん:2010/03/04(木) 21:24:35
お前の方がよっぽど馬鹿だよw
497デフォルトの名無しさん:2010/03/04(木) 21:26:40
>>495
>>496
漫才の練習なら他でやれ
498デフォルトの名無しさん:2010/03/04(木) 22:56:30
>>496
あ?
499デフォルトの名無しさん:2010/03/05(金) 01:54:52
>>495
アホとしか言いようがない。
500デフォルトの名無しさん:2010/03/05(金) 02:31:14
あ?
501デフォルトの名無しさん:2010/03/05(金) 09:06:08
しつもんなんですが
GOMぷれいやーのようにデスクトップ右上あたりにもっていくと
カチッ!って感じで画面端にくっ付くような事を実現するにはどうすればいいんですか?
おねがいします
502デフォルトの名無しさん:2010/03/05(金) 10:11:56
>>501
GOMぷれいやーがどんな動きするのか知らんけど
移動後の座標が一定範囲内だったら
強制的に移動すればいいのでは

1024*768の場合に
Rightの位置が1014より大きければ右に強制移動
Topの位置が10より小さければ上に強制移動
503デフォルトの名無しさん:2010/03/05(金) 11:45:19
>>501
こういう動きするソフトけっこうあるけど個人的には好きじゃない
画面端とはちょっとスキマ空けときたい派なんだおれは
504デフォルトの名無しさん:2010/03/05(金) 11:57:05
設定で画面端にフィットさせるとかいうチェックボックスがあれば良い
505デフォルトの名無しさん:2010/03/05(金) 13:11:04
"<"と">"に囲まれた文字列を"<"と">"を含めて全て別の文字(とりあえず"a")に置換したいのですが、
どういうコードにすればよろしいでしょうか?
"<あいう123abc>"→"a"といった感じです。よろしくお願いします。
506デフォルトの名無しさん:2010/03/05(金) 13:20:45
>>505
Regex使って"<[^>]*>"を置換
507デフォルトの名無しさん:2010/03/05(金) 13:42:54
>>506
ありがとうございます
ちなみにそういう記号?はなんというのでしょうか?
508デフォルトの名無しさん:2010/03/05(金) 13:44:53
正規表現というんですね、失礼しました
509デフォルトの名無しさん:2010/03/05(金) 19:18:30
asp.netです。
ListViewで作成した列タイトルを動的に設定したいのですが
どのようにしたらよいでしょうか?
WebFormの定義は下記のとおりです。(レイアウトの部分を抜粋)

<asp:ListView ID="ListView1" runat="server">
<LayoutTemplate>
<table ID="itemPlaceholderContainer" runat="server" border="1">
<tr id="Tr2" runat="server"><th id="Th1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</th></tr>
<tr ID="itemPlaceholder" runat="server"></tr>
</table>
</LayoutTemplate>

ListView1の中のLabel1に列タイトルをセットすることで動的に変更しようとしています。
プログラムの部分は下記のとおりです。

Dim lblth1 As Label = CType(ListView1.FindControl("Label1"), Label)
lblth1.Text = "項目1"

これを実行すると、"項目1"を代入するところでエラーになります。

「オブジェクトインスタンスの作成にはnewキーワードを使用します」

どのように記述したらよいのでしょうか?


510デフォルトの名無しさん:2010/03/06(土) 05:46:45
asp.netは、もう国内無料ホスティングも終わって
これからは企業内開発でしか使われなくなる言語。
自分の所有スキルを磨きたいのなら、
javaかphpでプログラム組んだ方がいい。

vb.netはまだ無料で開発、公開できるからいいけど
asp.netは無料で公開できなくなる。
asp.netは、vb.net でも c#でも組めるが
社内サーバなど自由に使えるサーバがないと意味がないよ。
511デフォルトの名無しさん:2010/03/06(土) 08:17:31
WebProg板に移動して質問しなおした方がいいかもね。
512デフォルトの名無しさん:2010/03/06(土) 09:15:28
Labelオブジェクトのインスタンスが取れてないんじゃね?
とか思ったけど、それならヌルリかなぁ。
513509:2010/03/06(土) 13:01:54
>>510
そうですね。そう思います。社内環境でASP.NETしか使えない状況です。

>>511
ありがとうございます。
そうします。

>>512
どうやらそのようです。

514デフォルトの名無しさん:2010/03/07(日) 00:07:05
配列で二種類の文字列でできるだけ高速で配列に格納したい場合、
arraylistとsplitを組み合わせるべきでしょうか?
具体的には2chのdatで、"<>"と改行を区切り文字にしたいのです
よろしくお願いします
515デフォルトの名無しさん:2010/03/07(日) 00:11:38
String.Splitのオーバーロードの中にStringの配列を引数に取るものがある
516デフォルトの名無しさん:2010/03/07(日) 00:27:51
ありがとうございます!
517デフォルトの名無しさん:2010/03/08(月) 22:46:34
tillとuntillは同じ意味だから
Do Loop

Till 〜

でも動くの?
518デフォルトの名無しさん:2010/03/08(月) 22:58:32
試してみれば
519デフォルトの名無しさん:2010/03/08(月) 23:04:08
死ぬよ?
520デフォルトの名無しさん:2010/03/08(月) 23:24:12
raiseeventの使い方を教えてください。
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
raiseevent Button1.Click
End Sub
とコードを書くと
'Button1_Click' は 'WindowsApplication1.Form1' のイベントではありません。
とでます。Button2.ClickでButton1.Clickと同じ動作をさせたいのですが、どうすれば良いでしょうか
521デフォルトの名無しさん:2010/03/08(月) 23:25:51
522デフォルトの名無しさん:2010/03/08(月) 23:28:35
ありがとうございました
523デフォルトの名無しさん:2010/03/09(火) 07:53:27
現在の状態をまるごと保存することってできますか?
textboxの内容や、チェックボックス
524デフォルトの名無しさん:2010/03/09(火) 07:54:46
すいません書き込んでしまいました
textboxの内容や、チェックボックス、オブジェクトなどの状態もそのまんま保存したいのです
設定を個別にiniファイルやレジストリに書き込むしか無いのでしょうか
525デフォルトの名無しさん:2010/03/09(火) 09:50:33
526デフォルトの名無しさん:2010/03/09(火) 11:16:35
テンプレのサイトいくつかなくなってるね
527デフォルトの名無しさん:2010/03/09(火) 13:17:50
チェックボックスやテキストボックスによって投影されてる元のデータを保存するんであって
コントロールの状態を保存するというような考え方はしない
528デフォルトの名無しさん:2010/03/09(火) 16:58:25
休止状態のようなことができれば便利かなー?と思ってましたが無理ですかー
ありがとうございました
529デフォルトの名無しさん:2010/03/09(火) 19:29:28
>>528
少なくともコントロールの状態については、アプリケーション設定とやらを使えば
2005以降はアホみたいに簡単に保存できるよ。

まあ基本は>>527の言うとおりで、本来はアプリケーション設定は
フォームのサイズとかコントロールの配置ぐらいにしか使うべきではないけど。
530デフォルトの名無しさん:2010/03/10(水) 09:40:27
>>529
うおおおこれがほしかったんですーありがとうございました
531デフォルトの名無しさん:2010/03/10(水) 12:01:29
休止状態で保存しなければいけないほど入力数が多いのだろうか・・・
なんつうか、思想的に微妙だと思うんだが
532デフォルトの名無しさん:2010/03/10(水) 13:34:45
前回の状態で起動してほしいというのは結構ある要望だとおもうな
うちではファイルに保存してるけど
533デフォルトの名無しさん:2010/03/10(水) 13:35:58
>>532
表示位置とかはあると思うんだけどね
入力内容も結構あるのか・・・

うちはそう言った要望特にないからイイほうなのかな?
534デフォルトの名無しさん:2010/03/10(水) 13:38:23
HDDクラッシュで実行ファイルだけ残ってしまったVB.NETのアプリがあるんだけど
さくっとディスコンパイルしてくれるツール知りませんか?
探してみたけどうまく見つけられないです、お助けを
535デフォルトの名無しさん:2010/03/10(水) 14:03:39
>>531
入力というよりタブブラウザのようなイメージじゃないかな
536デフォルトの名無しさん:2010/03/10(水) 15:23:12
>>531
すげぇ納得した サンクス
537デフォルトの名無しさん:2010/03/10(水) 15:24:51
>>534
Reflector for .NET
とかじゃだめ?
最近使ってないからまだあるか知らんけど

難読化されてたらきびしそうだ気がする
538デフォルトの名無しさん:2010/03/10(水) 15:29:52
失礼します。
Jpegファイルを読み込んで加工する為にビットマップに変換して保存しているのですが、2回目の保存でGDI+汎用エラーが出てしまいます。
ファイルが使用中になっている為と思われるのですが、使用中から解放するにはどのようにすれば良いのでしょうか?

Dim _bmpJ As New Bitmap("d:\Blue.jpg")
Dim _bmp As New Bitmap(640, 480)

_bmpJ.Save("d:\tmp.bmp", System.Drawing.Imaging.ImageFormat.Bmp)
_bmp = New System.Drawing.Bitmap("d:\tmp.bmp")
_bmpJ.Save("d:\tmp.bmp", System.Drawing.Imaging.ImageFormat.Bmp) ' ←ここで「GDI+ で汎用エラーが発生しました。」
_bmp = New System.Drawing.Bitmap("d:\tmp.bmp")

_bmp.Dispose()
_bmpJ.Dispose()
539デフォルトの名無しさん:2010/03/10(水) 15:48:15
もうこの手の質問秋田・・・・
540デフォルトの名無しさん:2010/03/10(水) 17:05:53
>>537
ありがとう、難読化はしてません
DLしてちょっと試してみました、ウ〜〜ム
コンパイル可能なソースコードとして出てくるわけじゃあないんですね
もとのソースに近い状態まで復元するのはかなり骨が折れそうですが
もうちょっといじってみます
541デフォルトの名無しさん:2010/03/10(水) 20:54:52
特定のポートを閉じたい(簡易ファイアーウォールを作りたい)場合はどうすれば良いのでしょうか?
542デフォルトの名無しさん:2010/03/10(水) 21:03:40
543デフォルトの名無しさん:2010/03/10(水) 21:23:03
VBってデリゲートの反変性サポートしてないんだっけ?
なんか以前は普通に、

Funtion Hoge(sender as Object, e as EventArgs)

を、例えばMouseClickイベントに紐付けできたような記憶があるんだが
今日試したら出来ないのな。

C#だと普通に出来るのに何だろうな。
544デフォルトの名無しさん:2010/03/10(水) 22:03:34
>>542
thx
545デフォルトの名無しさん:2010/03/10(水) 22:19:57
エフェクトの多いゲームを作りたい場合、directxというものを使った方が良いのでしょうか
546デフォルトの名無しさん:2010/03/10(水) 22:21:07
というか使わないと無理
どんだけ頑張ってもゲームになるほどのフレームレートは出ない
547デフォルトの名無しさん:2010/03/10(水) 22:26:59
>>546
なるほど、ありがとうございます
ライブラリ探してやってみまする
548デフォルトの名無しさん:2010/03/11(木) 16:30:17
DXライブラリのC#用が使えるよ
結構便利だけどvbのサンプルはあまり無いみたい
549デフォルトの名無しさん:2010/03/11(木) 18:04:50
依存関係についての質問です。

AクラスからBクラスのプロパティ(Cクラスとして宣言)にアクセスする場合、
AクラスとCクラスの間に依存関係にあるのでしょうか?
例えば、Bクラス内にてCというプロパティがCクラスの方として宣言されていて、
Cクラス内にはtest1,test2をstring型のプロパティとして宣言している状態で、
AクラスからB.C.test1と記述しA内のフィールドに代入する場合です。

また、よく複雑な依存関係は良い設計ではないといいますが、
具体的にどのような設計が複雑な依存関係と言えるのでしょうか?

依存関係などに詳しい書籍、Webサイトなど教えていただけたら幸いです。
よろしくお願いします。
550デフォルトの名無しさん:2010/03/11(木) 18:47:25

551デフォルトの名無しさん:2010/03/11(木) 20:42:38
>>549
一度、コーディングなどから離れて、もっと広い視野になって、
オブジェクト指向の理論について学んだ方が良いと思う。
厳密なものは無い。
いろいろなプログラムで使う事が出来る汎用性のあるクラス設計が
出来る事、というのが目的なので、その目的を考えると答えが
見つかってくるんじゃないかな。
552デフォルトの名無しさん:2010/03/11(木) 22:35:12
Me.BackColor()のRGB値を1ずつ下げたいのですがやり方がよくわかりません
Me.BackColor.ToArgb()

System.Drawing.ColorTranslator.FromOle(RGB(1, 1, 1))
のRGB()の部分に入れれば何とかなりそう?な感じがするんですがエラーばっかりです
どなたか助けて下さい〜
553デフォルトの名無しさん:2010/03/11(木) 22:44:30
RとGとBからColor.FromArgb
554デフォルトの名無しさん:2010/03/11(木) 23:00:46
そうするのですか、ありがとうございます
555デフォルトの名無しさん:2010/03/12(金) 01:16:33
>>551
ありがとうございます。
オブジェクト指向を基礎から学びなおします。
556デフォルトの名無しさん:2010/03/12(金) 01:17:25
bitmapクラスで読み書きしたファイルが解放されるタイミングがよくわからねぇ・・・。
連続で読むとエラーなのに、放置してたら解放されてるとか。
557デフォルトの名無しさん:2010/03/12(金) 01:18:10
要するに使い終わったらDisposeしろってことさ
558デフォルトの名無しさん:2010/03/12(金) 09:34:02

現在、イベントログを出力するプログラムを作成しているのですが、
一部のマシン上でイベントログが以下のように出力されてしまいます。
『イベント ID (50000) (ソース *** 内) に関する説明が見つかりませんでした。
リモート コンピュータからメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルが
ローカル コンピュータにない可能性があります。
この説明を取得するために /AUXSOURCE= フラグを使用することができる可能性があります。
詳細については、ヘルプとサポートを参照してください。次の情報はイベントの一部です: ***』

インターネットで調査を行うと、『EventLogMessages.dll』というメッセージのDLLが
インストールされていない場合に発生するようなのですが、
現象が発生するマシンにはインストールされているようでした。
(レジストリ内にも記載されていた)

開発言語及び現象が発生しているマシンのOSは以下です。

開発言語:VB.NET2005
発生中のOS:Windows2003Server
※WinXPのマシンでは正常にイベント出力される事を確認

他に何か原因はありますでしょうか?
559デフォルトの名無しさん:2010/03/12(金) 10:36:14
HTML ドキュメン形式でチャットログが生成される素材を
VBを使って整理してみたいと考えています
(それを元に特定のキーワードに反応するように)

ログはチャットの性質上、それなりのスピードで流れ
常に更新されていきます
なのでログを最新な状態同期をとる方法に困っています

何かヒントがあれば教えて頂けると幸いです

開発言語:VB.NET2005
560デフォルトの名無しさん:2010/03/12(金) 13:11:43
mdiで二つ質問です。
一つ目。form1からform2を呼び出すのですが、
エクセルのセルのように大きさを連動して変えたいのですが、そういったことは出来ますか?
form1を正方形とすると、form2の一つ目を10:7、二つ目を10:3のように呼び出し、
真ん中の境界線をドラッグして10:5、10:5のように変えたりしたいと思います
またこういうことがもっと簡単に実現できるコントロールが他にあれば、教えてください

二つ目。form2をform1のtextbox1に呼び出したすることは出来ますか?
よろしくお願いします。
561デフォルトの名無しさん:2010/03/12(金) 13:20:57
1つ目
そこまで明確にやりたいことが決定しているのに
なぜやってみてから質問しない
設計書はあるんだからコーディングするだけだろうに

あと、そんなことできるコントロールなんて標準ではないだろう

2つ目
TextBoxの中にフォームを表示するとかそんなこと?
日本語で頼む
562デフォルトの名無しさん:2010/03/12(金) 13:26:11
>>561
ないですか、ありがとうございました
サイズ変更で何とかやってみます
2つめはそうです。
textbox等、フォーム以外のコントロールの中にフォームを表示したいのです
563デフォルトの名無しさん:2010/03/12(金) 13:27:52
いろいろ説明めんどくさいからとりあえずコンテナとかで調べてみて・・・

564デフォルトの名無しさん:2010/03/12(金) 13:28:15
ありがとうございます!
565デフォルトの名無しさん:2010/03/12(金) 13:51:21
>>559
HTML ドキュメン形式なるものがどんなのか不明
生成される素材って、どこにどんな風に生成されるのか不明
そこにVBをどう絡めるのか不明
ログがどこに流れてどういう風に更新されているのか不明

ツッコミ切れねぇ
566デフォルトの名無しさん:2010/03/12(金) 14:14:17
>>559
どんなデータ形式をどんなふうに整理しタイのかが判らないと無理じゃね?
何が聞きたいのかも不明瞭

何かヒントがあれば とは言ってるけどどんなヒントを出せばいいのかが判らない

なので今出せるヒントは もう少しkwsk
567デフォルトの名無しさん:2010/03/12(金) 14:23:13
意味がわからないの俺だけかと思ったけど
みんなわからなくてうれしー
568デフォルトの名無しさん:2010/03/12(金) 14:36:10
>>563
おかげさまでTableLayoutPanelにたどり着きました
本当にありがとうございました
569デフォルトの名無しさん:2010/03/12(金) 14:42:29
>>568はフォームをパネルに出して何がしたいんだw
570デフォルトの名無しさん:2010/03/12(金) 14:49:36
そういうのは99%、麻疹や中二病みたいなもんだ、気にしてやるな。
571デフォルトの名無しさん:2010/03/12(金) 14:50:16
>>569
MDIのブラウザを作ってみたいと思ってまして、
それぞれのウィンドウが境界線を触るだけで表示サイズ変更できれば便利かと思ったんです
単体のブラウザはできているので、そのフォームごと呼び出せたら便利かな、と・・
どうもコントロールの中にフォームは呼び出せないようなので、
TableLayoutPanelとwebbrowserを組み合わせようと思います。
572デフォルトの名無しさん:2010/03/12(金) 14:51:27
すいません便利というのは間違いですね。
そういうのが無いようなので作ってみたかったんです。
573デフォルトの名無しさん:2010/03/12(金) 15:06:33
まてまて・・・・
親フォームMDIにすりゃいいだけじゃねぇのか?
574デフォルトの名無しさん:2010/03/12(金) 21:34:45
えっ
575デフォルトの名無しさん:2010/03/12(金) 22:36:25
ユーザーコントロールをコンパイルしたDLLにプロテクト(自分以外の人が使えないように)を
簡単にかける方法を教えて下さい。
Releaseモードでコンパイルするときにプロテクトをかけることはできないのでしょうか?
ツールはVisualStudio2008Proを使用しています。
576デフォルトの名無しさん:2010/03/12(金) 22:37:43
無理。
577デフォルトの名無しさん:2010/03/12(金) 23:14:02
質問です。
VB6に有ったIMEStatus関数はどこへ行ったんですか?
現在の入力モードを取得できる関数は無くなったんですか?
578デフォルトの名無しさん:2010/03/12(金) 23:20:36
うん無くなった
579デフォルトの名無しさん:2010/03/12(金) 23:46:00
>>578
ありがとうございます。
では、モードの取得はどうすればよいのでしょうか。
580デフォルトの名無しさん:2010/03/12(金) 23:52:39
ImmGetConversionStatus関数
581デフォルトの名無しさん:2010/03/13(土) 00:23:02
ありがとうございます。
API呼出が必要になったんですね。
582デフォルトの名無しさん:2010/03/13(土) 06:59:41
>>575です。
>>576
それでは、ユーザーコントロールのDLLをVS2008で
ツール→ツールボックスアイテムの選択
でDLLを指定したら追加されてしまうのは仕方が無いんですね?
583デフォルトの名無しさん:2010/03/13(土) 07:12:14
うん。
584デフォルトの名無しさん:2010/03/13(土) 11:28:54
>>583
そうしても嫌ならシリアル入力させるとかしないとダメだろ
どっちにしろ使うときにチェックかけれるだけで参照されるのは防げない
585デフォルトの名無しさん:2010/03/13(土) 12:11:13
>>582
俺自身はそんなセコいことしたことないけど、これで出来るんじゃない?
簡単かどうかは知らない。
http://japan.internet.com/developer/20051011/29.html

まあ時代の流れから言ってもVB5の時代ですら考慮されてたことが
今日日未サポートなはずがないよね。
586デフォルトの名無しさん:2010/03/13(土) 15:10:28
市販コントロールのDLL使い放題になってしまうからな。
587デフォルトの名無しさん:2010/03/13(土) 17:41:32
VB 2008 Express Editionを使用して
http://dobon.net/vb/dotnet/programing/mysettings.html
ここにあるような方法でテキストボックスの値を保存しています。

基本的に問題なく書込み読み込みできているのですが、
保存しようとした値が半角空白のみだった場合にうまく復元されません。
app.configを覗いてみると、半角空白のみだった場合は

<setting name="testString" serializeAs="String">
  <value>
  </value>
</setting>

このように保存されていて、読み込み時に</value>の前のインデントの空白が値として読み込まれてしまっているぽいのですが・・・

使い方や設定等に問題があるのでしょうか
588デフォルトの名無しさん:2010/03/13(土) 17:45:20
そんなもんだから気にするな。
どうしても気になるなら、[] とかを付けて保存するようにして、復元するときに外す
とかすればいいよ。
589デフォルトの名無しさん:2010/03/13(土) 17:51:19
XMLと空白文字は相性がよろしくないしなー
590デフォルトの名無しさん:2010/03/13(土) 17:52:55
URLエンコードして格納するとか
591587:2010/03/13(土) 17:57:34
なるほどそういうもんなんですね
まぁ>>588さんの例の様に自分でデータ弄れば回避はいくらでもできそうなのでその方向で何とかすることにします
592デフォルトの名無しさん:2010/03/13(土) 18:07:56
>>587
そんな馬鹿なことあるか、と思って試したみたけど、
ちゃんと保存されるでしょ。

ただし、確かにMultiline = Trueの時には、存在しないはずの改行が入るバグがあるようだけど、
それにしても空文字になったりはしない。

そもそもアプリケーション設定の保存先ってapp.configじゃないしw
設定のスコープを「アプリケーション」にしてる、なんてオチだったりしない?
593デフォルトの名無しさん:2010/03/13(土) 18:12:09
>>592
すいませんuser.configの間違いでした
スコープはユーザーにしてます
しかしMultilineはfalseのままですね・・・
やっぱり何かしら間違ってるのでしょうか
594デフォルトの名無しさん:2010/03/13(土) 18:14:50
あとはVB固有の問題っていうか、アプリケーションフレームワークを使ってないのに
Saveしてないとかね
595587:2010/03/13(土) 18:28:34
>>594
うーん、きちんと終了の度に保存されていますね
596デフォルトの名無しさん:2010/03/14(日) 00:33:06
SplitContainerは二つにしかわけることができないんでしょうか
597デフォルトの名無しさん:2010/03/14(日) 00:39:15
好きにネストすればいいよ
598デフォルトの名無しさん:2010/03/14(日) 00:59:08
ありがとございます
599デフォルトの名無しさん:2010/03/14(日) 02:01:12
textboxをプログラムの途中で作ってみたいのですが、
どうやればいいんでしょうか。↓だとインスタンスは作成されているようですが見つかりません。
Dim sss As New TextBox
sss.Show()
600デフォルトの名無しさん:2010/03/14(日) 02:14:51
ggr

textbox一つだけ配置したフォーム作って保存してから、そのフォームの.Designer.vbをメモ帳で開いてみ。
601デフォルトの名無しさん:2010/03/14(日) 02:26:42
おおなるほどありがとうございました
602デフォルトの名無しさん:2010/03/14(日) 07:57:57
動的コントロール
603デフォルトの名無しさん:2010/03/14(日) 14:11:01
webbrowserについて教えてください。

フォームに貼り付けただけのwebbrowserコントロールに
自動ログイン設定されているウェブサイトのURLを
ドロップすると画面は表示されますが、ログイン情報は
わたってないようでゲストさん扱いでした。

これは、自分でクッキーを探してセットしてnavigateメソッドを
呼び出さないといけないということですか?

またコンテンツ内のmetaタグにrefreshが記述されていた場合は
自分でrefreshしないといけないということでしょうか。
604デフォルトの名無しさん:2010/03/14(日) 14:41:11
おまんこ
605デフォルトの名無しさん:2010/03/14(日) 15:02:51
おちんこ
606デフォルトの名無しさん:2010/03/14(日) 16:53:45
>>603
クッキーはIEと共有だからIEでログインしとけばいいはず
607デフォルトの名無しさん:2010/03/14(日) 17:41:24
>>606さん、ありがとうございます。

さっそく実験してみたのですが、やはりゲストさん扱いでした。

テストしたのはIEでポイントサイトにログイン(というか自動でログイン済み)して、
次に新規formにwebbrowserコントロールを貼り付けただけの画面を起動し、
そこにURLをドロップしてみたのですが、ようこそゲストさんになってしまいました。
608デフォルトの名無しさん:2010/03/14(日) 19:27:09
他のサイトはどうなの?例えばニコニコ動画とか
俺的にはニコニコは大丈夫だよ
609デフォルトの名無しさん:2010/03/14(日) 23:01:43
>>608
ニコ動もやってみましたがダメでした。
IE側でログインしてそこのリンクをドロップしてみたら
ログイン画面が出てきましたorz
610デフォルトの名無しさん:2010/03/14(日) 23:22:53
>>609
うちは大丈夫だよ
環境の問題か
611デフォルトの名無しさん:2010/03/14(日) 23:37:44
IEのバージョンの問題とか?
612デフォルトの名無しさん:2010/03/15(月) 01:12:50
vb .netにもDanbling Pointer問題は発生するのでしょうか?
613デフォルトの名無しさん:2010/03/15(月) 01:14:05
すみません、>>612 は Dangling Pointerのタイポです
読み替えてください
614デフォルトの名無しさん:2010/03/15(月) 14:26:28
>>610.>>611さん
一度webbrowserコントロール内でログイン後、IEも開発画面も落として
再度起動し、IEからリンクをドロップしてみた所、無事ログインされた状態になりました。

この状況だとクッキーはIEと共用になってないということですよね?
OSはVistaでIEのバージョンは8.0.6001.18882となってます。
IEの「インターネットオプション」でゾーンの設定は「中」にしているのですが、
これが怪しいのかと思い「低」にしてみたのですが結果は変わりませんでした。

Web巡回アプリを作るとしたら、ログイン画面が出てるか判断して
IDやパスワードをプログラムから入力させて・・・という処理を加えないとダメってことですよね。
615デフォルトの名無しさん:2010/03/15(月) 20:02:49
とりあえずクッキーが共有されないのは君だけなんで
何とも言えないな
616デフォルトの名無しさん:2010/03/15(月) 20:13:15
VBの標準のWebBrowserはIEと共有だと思ったけどなぁ
617デフォルトの名無しさん:2010/03/15(月) 21:08:53
直前にアクティブだったコントロール(textbox)を引数にし、そのtextbox.textを変えると言うプログラムを作っています
ですが、 Public Function〜の行で
定数式が必要です 
とエラーが出てしまいます。何がダメなんでしょうか?

Public Function yomi(Optional ByVal oCon As TextBox = TextBox15) 'ここでエラーが出ます
End Function
618デフォルトの名無しさん:2010/03/15(月) 21:13:44
そりゃー無理だろ。
619デフォルトの名無しさん:2010/03/15(月) 21:20:15
DataTable内に格納されたDataRowをランダムで並換方法とかってありますか?

NUMBER
______________
 1
 2
 3

↓ランダムに並べ替えた結果
 3
 1
 2

偏りが無く並び替えたいです。
620デフォルトの名無しさん:2010/03/15(月) 21:21:09
これは新し……くもないの? このスレでも見たことないが
621デフォルトの名無しさん:2010/03/15(月) 21:22:58
>>619
ないと思う。
622デフォルトの名無しさん:2010/03/15(月) 21:24:14
>>620>>617だた

>>619
新しいInteger列をDataTableに追加して、
行数分のInteger配列を用意して0から一つずつ埋めてそれをシャッフルして、
各行の追加した列に設定していって、
でDataView.Sortでその列でソートさせる
623デフォルトの名無しさん:2010/03/15(月) 21:29:17
>>622
素早いレスに感謝します。どうもありがとうございます。
624デフォルトの名無しさん:2010/03/15(月) 21:46:11
>>618
なんで無理なんでしょう?本当にわかりません・・
textbox15はもちろんあります。関数呼び出しの時、指定しなかった時はこれを指定したいんです
Optional ByVal oCon As TextBox =Nothingではエラーは出ませんが、これだと無いのと同じです
Optional を付けなければエラーは出ませんが、今までの関数呼び出し部分を全部変えることになりますし
そもそも何故ダメなのか分からないのがもどかしいので助けて下さい><
625デフォルトの名無しさん:2010/03/15(月) 21:47:57
定数じゃないから。
626デフォルトの名無しさん:2010/03/15(月) 21:52:54
Public Function yomi()
End Function
をもう一個作ればいいよ


627デフォルトの名無しさん:2010/03/15(月) 21:55:54
>>625
なるほど分かりました、ありがとうございます!
コントロールはフォームの生成の後に作られるんですね。勉強になりました
>>626
ありがとうございます。解決出来そうな気がします
628デフォルトの名無しさん:2010/03/15(月) 21:57:23
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub

Private Sub hoge()
MsgBox("hoge")
End Sub

Private Sub hoge(ByVal ocol As TextBox)
MsgBox("hoge2")
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call hoge(TextBox1)
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Call hoge(TextBox1)
End Sub
End Class
629デフォルトの名無しさん:2010/03/15(月) 21:58:58
間違えた
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub

Private Sub hoge()
Call hoge(TextBox1)
End Sub

Private Sub hoge(ByVal ocol As TextBox)
MsgBox("hoge2")
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call hoge()
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Call hoge(TextBox1)
End Sub
End Class
630デフォルトの名無しさん:2010/03/16(火) 07:39:13
よこやりすみません。初心者です。
VB2005から Call は記述しなくてもよくなったのでは
なかったでしたっけ?

トンチンカンなこと言ったらごめんなさい。
631デフォルトの名無しさん:2010/03/16(火) 12:08:54
そうだね
632デフォルトの名無しさん:2010/03/16(火) 12:57:38
そう言えばVB6でもCallなしで呼べたな
633デフォルトの名無しさん:2010/03/16(火) 13:14:05
VB6だとカッコが勝手に取れたりしてうざかったので
Call使ってたな
634デフォルトの名無しさん:2010/03/16(火) 14:27:02
あれ前からだったのか
635デフォルトの名無しさん:2010/03/16(火) 14:52:27
俺は関数を呼び出してるって目印に、毎回Callつけてる
636デフォルトの名無しさん:2010/03/16(火) 18:00:28
>>631-635

>>630です。
参考になりました。ありがとうございます。
初心者なもので何がよくて何が悪いのか
てんで見当が(^^ゞ
637デフォルトの名無しさん:2010/03/16(火) 18:41:25
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim dtab As New DataTable
Dim drow As DataRow

dtab.Columns.Add("f0")
dtab.Columns.Add("f1")
dtab.Columns.Add("f2")

drow = dtab.NewRow
drow(0) = "a"
drow(1) = "b"
drow(2) = "c"
dtab.Rows.Add(drow)

drow = dtab.NewRow
drow(0) = "d"
drow(1) = "e"
drow(2) = "f"
dtab.Rows.Add(drow)

Call objwatasi(dtab)

GridView1.DataSource = dtab
GridView1.DataBind()
End Sub
Protected Sub objwatasi(ByVal wtab As DataTable)
wtab(0)("f0") = "x"
End Sub
638637:2010/03/16(火) 18:42:13
これを実行した結果のGridViewは以下のとおりです。
f0 f1 f2
x b c
d e f

呼出元が変わっています。ByVal wtabとしているのに参照渡しに。
そうなる理由は、wtabには値渡ししているが、オブジェクトが参照型であることから、その値は参照アドレスであり、事実上、参照渡ししているのと同じことになります。

ここで呼出元が変わらないようにするにはどうしたらよいでしょうか?
639デフォルトの名無しさん:2010/03/16(火) 18:45:22
Copy()したのでも渡しとけば
640デフォルトの名無しさん:2010/03/16(火) 19:08:14
class table
(a as string........
b as integer.......
c as integer....
d as string.......
)

dim atable as new list (of table)

というのがあって、このa、bをキーにソートしたいのですが、
IComparerを使わないとソートできないのでしょうか?

SQLでいう
select a,b,c,d from table order by a,b
みたいなことをしたいのですが、簡単に実現できる方法は
他にないでしょうか。
DBに放り込むのがいいかもしれませんが、ソートするため
だけに使うのは気が引けます。
ずるい方法でもあればありがたいのですが、VB初めてまだ1ヶ月では
何も思い浮かびませんでしたorz
for each で取り出すときにキー順に並んでさえすればいいのですが
素直にIComparerを使わないといけないのでしょうか。
641デフォルトの名無しさん:2010/03/16(火) 19:23:06
VB2005ならICopmpare(Of table)しかないな
VB2008ならLinq OrderBy辺りで検索してみるとか
642デフォルトの名無しさん:2010/03/16(火) 19:37:58
>>640
ListView突っ込む
643デフォルトの名無しさん:2010/03/16(火) 21:23:47
>>641,>>642さん、ありがとうございます。
listviewをヒントに探している途中でみつけたのですが、もしかして
もともとdatatableを使うように変更してselectしたら
OKってことでしょうか。
644643:2010/03/16(火) 22:38:45
よくよく調べてみたら3.5使っていいみたいなので、
LINQ使いました。

お昼ごろから悩んでたのがたった数行で解決しましたOrz
645デフォルトの名無しさん:2010/03/16(火) 22:42:19
お昼頃から悩むぐらいならさっさとIComparer(Of T)実装してろよw
なんでそんなに嫌がるんだw
646デフォルトの名無しさん:2010/03/16(火) 22:43:31
LINQなんか余計に難しいと思うよ
デリゲートとかきちっと理解してないと嵌まる
647デフォルトの名無しさん:2010/03/16(火) 22:56:16
exeとdllを同じディレクトリ内におかなくても下記のエラーが出ないようにするにはどうすればよいのでしょうか?
「ファイルまたはアセンブリ 'a Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。」
どのようにすれば下記のようなディレクトリ構成でmain.exeを実行できるのでしょうか?
ちなみに、DLLはDLL参照で参照しています。

TEST----main.exe
|
|--DLL
|-----a.dll
|-----b.dll
648デフォルトの名無しさん:2010/03/16(火) 23:04:00
listboxでドロッグアンドドロップを実装しているのですが、
IEのお気に入りのようなものを実装したいのですが、どんな方法が良いでしょうか
表示されているものはものはページのタイトルですが、実際にはURLを追加や移動したいと言った感じです
・予め項目とURLを二次元配列に入れておいてmousedownの瞬間に入れ替え、戻す
・項目とURLの二種類のlistboxを表示させておき、mousedownの瞬間に表示・非表示

・・・など変なことしか思いつかないです。ぐぐっても初心者向けのページ(IEお気に入りの使い方等)しか見つかりません。よければ助言下さい
649デフォルトの名無しさん:2010/03/16(火) 23:04:09
>>647
検索したらすぐ見つかったよ、と嫌味たらしく言ってみる。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=9189&forum=7

でも、普通はやらん方がいいし、それ以前に何かそんなことする必然性があるのかと。
650648:2010/03/16(火) 23:05:16
何か日本語変でした
3行目は 表示されているものはページのタイトルですが、実際にはURLのデータをリストに追加や移動・削除したいと言った感じです
651デフォルトの名無しさん:2010/03/16(火) 23:27:52
>>648
VB6上がりの人かな?
ListBox.Itemsで取得されるObjectCollectionに追加できるのは文字列だけ、なんて思ってない?
違うよ。

例えばMSDNのObjectCollection.Addメソッドの説明見てみ?
Addの引数の型はObjectだ。つまり何でも入る。

ListBoxは、アイテムを表示するとき、各アイテムのObject.ToString()を呼び出して
表示している。

これだけ理解すればどうすればいいか自ずと見えてくるはず。
652デフォルトの名無しさん:2010/03/16(火) 23:29:28
>>649
検索してすぐに見つけていただきありがとうございます^^
653648:2010/03/16(火) 23:38:21
>>651
おお、そういうシステムでしたか。ありがとうございました。何とかできると思います
654デフォルトの名無しさん:2010/03/17(水) 09:51:25
urlについて質問なのですが
例えばこのスレのURLは
http://pc12.2ch.net/test/read.cgi/tech/1180406037
とするか
http://pc12.2ch.net/test/read.cgi/tech/1180406037/
と最後にスラッシュを付けるのかどちらが一般的でしょうか
655デフォルトの名無しさん:2010/03/17(水) 10:06:55
スラッシュをつけないと無駄なリダイレクトが発生するよ
656デフォルトの名無しさん:2010/03/17(水) 10:33:45
read.cgi以下はコマンドラインだからどっちも変わらない
657デフォルトの名無しさん:2010/03/17(水) 11:24:33
>>655-656
うーん?とりあえずつけておくことにします
658デフォルトの名無しさん:2010/03/17(水) 12:58:45
質問です。
VB2008でADOを使ってmdbファイルにアクセスしようとしています。

SELECT * FROM hoge
 WHERE f = False
 ORDER BY a;

だと動くのに、

SELECT a, b, c, d, e, f FROM hoge
 WHERE f = False
 ORDER BY a;

だと動かないのはどうしてでしょう?

フィールド名は全てチェックし、プログラム内で生成したSQL文を
アクセスのクエリにコピペして動作も確認してみましたが、きちんと表示されています。
エラー内容は
「エラーを特定できません (HRESULT からの例外: 0x80004005 (E_FAIL))」
となっています。
659658:2010/03/17(水) 12:59:59
補足

エラーで止まるのは、RecordsetのOpen時です。
660デフォルトの名無しさん:2010/03/17(水) 13:05:42
>>658
;が要らない
661デフォルトの名無しさん:2010/03/17(水) 13:16:50
これとは関係ないけど
SQLClientは確かセミコロンで区切ってDataSetを取得できたような気がする。

662デフォルトの名無しさん:2010/03/17(水) 13:26:46
>>661
セミコロン抜いてみましたがダメでした。

色々試して自己解決しました。

一つずつフィールド名を試して、SECTION というフィールド名でエラーを
起こしているのが判明したので、POSTUNT と変えてみたら動きました。
何故 SECTION がダメなのかまでは分かりませんが、、、

ともあれ、ご回答ありがとうございました。
663デフォルトの名無しさん:2010/03/17(水) 13:39:20
予約語なんじゃね?
664デフォルトの名無しさん:2010/03/17(水) 13:41:24
sectionは予約語やん
665デフォルトの名無しさん:2010/03/17(水) 13:42:08
つうか、サンプルにはSECTIONという単語が一つも出ていないな
666648:2010/03/17(水) 15:30:20
648です。すいません、やっぱり分かりません><
クラスを新しく作ってプロパティにurl(string)とタイトル(string)
tostringをオーバーライドして・・
としようとしているのですが、他に楽な方法ってあるような気がしてなりません
二種類の文字列を格納でき、tostringでタイトルが帰ってくるような
そんなクラスってありますか?
667デフォルトの名無しさん:2010/03/17(水) 15:43:32
初心者な質問で申し訳ありません

フォルダ内に

DateTime型で 更新日時が 2010/03/15 23:16:52

のようなファイルが多数あると仮定して
最新のファイル名を取得するのに

どのような方法があるでしょうか?

Dim dt As DateTime
Dim file_name_new As String = "ファイル名"
dt = File.GetLastAccessTime(file_name_men)

で 配列にdtを入れ

dt(1) > dt(2) のようなソートの単純比較で最新ファイルを探し出せるのものでしょうか
668デフォルトの名無しさん:2010/03/17(水) 16:56:32
ひとまずやってみればいいと思うよ

でもアクセス日時なんてファイル開いたりして変わったりするから
例えばファイル名に日時でも入れておけばいいんじゃね?

どんな用途に使うかによると思うんだけど・・・
669デフォルトの名無しさん:2010/03/17(水) 17:22:54
ファイル名と更新日時をセットにしてソートする方法がわからないんだろ
要は>>640と同じ
とりあえずクラス作ってコレクションに入れて、ソートはIComparer(Of T)を使うのが
正解だけど>>667には難しいだろうからちゃんと勉強するのが嫌なら既出のいかにもVBらしい方法でごまかす
670デフォルトの名無しさん:2010/03/17(水) 17:47:20
自作クラスの配列がうまくいきません。
threadtitledatクラスの配列thretai(3)をnewで作成した後、ボタン1クリックでthretai(0).datに代入したいと思っています
thretai(0).dat = "e"の行で
{"オブジェクト参照がオブジェクト インスタンスに設定されていません。"} と出ます。助けてください!

Public Class Form1
' threadtitledatクラスの配列thretai(3)をnewで作成
Dim thretai As threadtitledat() = New threadtitledat(3) {}
'クラス
Class threadtitledat
Private datstr As String
Property dat() As String
Get
Return datstr
End Get
Set(ByVal value As String)
datstr = value
End Set
End Property
End Class
'ボタン1クリックでthretai(0).datに代入
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
thretai(0).dat = "e"
End Sub
End Class
671デフォルトの名無しさん:2010/03/17(水) 17:55:36
クラスの配列だけ作成してもその中身はNothingだから

初期化した時に0,1,2の中に New threadtitledat でもして実体を入れないと・・・
672デフォルトの名無しさん:2010/03/17(水) 18:06:33
>>671
おおできました!
Dim thretai As threadtitledat() = New threadtitledat(3) {New threadtitledat, New threadtitledat, New threadtitledat, New threadtitledat}
ちゃんと動きました。ありがとうございました
673デフォルトの名無しさん:2010/03/17(水) 18:15:59
ちゃんと「配列型」の形式で配列宣言してる人このスレで初めて見た気がする
良いことだけど
674デフォルトの名無しさん:2010/03/17(水) 18:24:55
>>668-669
回答ありがとうございます

単純に日付形式で
A>Bのようなモデルで
間違いなくソート出来るのか知りたかったのですが

便利な関数も教えていただき
さらに分かり易く指導を受けたことを感謝致します
675デフォルトの名無しさん:2010/03/17(水) 18:34:40
>>667
初心者ならいきなり自作クラス作成ではなく
DataTable使っての管理が楽だと思う

DataTableのDefaultView使えばソートも抽出も出来るから
ソート後にDefaultViewの1つ目の要素で目的のものが取得できる
676デフォルトの名無しさん:2010/03/17(水) 20:04:18
失礼します。
複数の関数があって、ソフト起動後に任意の順番で実行させるにはどのようにすれば良いのでしょうか?
if文でやるのは綺麗では無いですよね・・・?

Private sub aaa()
End sub
Private sub bbb()
End sub
Private sub ccc()
End sub
Private sub ddd()
End sub
Private sub eee()
End sub

aaa:3番目
bbb:2番目
ccc:1番目
ddd:5番目
eee:4番目
とか

aaa:2番目
bbb:5番目
ccc:4番目
ddd:3番目
eee:1番目
など・・・
677デフォルトの名無しさん:2010/03/17(水) 20:15:24
ものによるんじゃない?

少しの限られたレベルならそれでもいいと思うし

デリゲート変数にでも突っ込んでリストで持てば?
678デフォルトの名無しさん:2010/03/17(水) 20:19:22
何でどう順番が決まるの?
679デフォルトの名無しさん:2010/03/17(水) 22:13:06
質問です。
現在、アプリケーションの設定を起動時に読み込み、
モジュールのpublic変数に格納しています。

いくつか検索してみて調べたのですが、
それはよくないので、設定用のクラスを作成し、
読取専用プロパティやフィールドに格納したほうがよいとありました。
試しに作成してみたのですが、
moduleの場合は、変数をhogeで参照できたのに、
クラスを作成した場合は、Class1.Instance.hogeとか
長くなってしまい、不便です。

すごく勘違いしてそうなんですが、
普通はどのようにアプリケーション設定を管理するのでしょうか?
必要な時はClass.Instance.hogeとか全部打ち込むものなんでしょうか?

基本すぎる事かもしれませんがどうぞよろしくお願いします。
680デフォルトの名無しさん:2010/03/17(水) 22:16:50
Instance ってなんだよ。普通に、Class.hoge で参照できるだろ。
681デフォルトの名無しさん:2010/03/17(水) 22:27:20
シングルトンならモジュールと変わらん
VSのアプリケーション設定の機能使えばクラスを作ったり読み込んでくれたり全自動でやってくれる
682デフォルトの名無しさん:2010/03/17(水) 22:39:59
VB.NETで
ADOとFileSystemObjectを使うにはどうすれば
683デフォルトの名無しさん:2010/03/17(水) 22:41:51
参照設定すれば普通に使える。
684デフォルトの名無しさん:2010/03/17(水) 22:42:10
createobjecy
685デフォルトの名無しさん:2010/03/17(水) 22:44:03
objecy
686デフォルトの名無しさん:2010/03/17(水) 22:47:17
taipo
687デフォルトの名無しさん:2010/03/17(水) 22:59:03
>>680
>>681

ありがとうございます。

newでインスタンスを作成してしまうとだめなんですよね?
設定クラスのプロパティをclass.hogeで参照するにはどうしたらいいのでしょうか?

688デフォルトの名無しさん:2010/03/17(水) 23:07:49
sharedつければいいよ
689デフォルトの名無しさん:2010/03/17(水) 23:29:28
>>688
つまりフィールドにもsharedをつけ
プロパティにもsharedをつける
とのことでしょうか?

というか値を保存するだけならsharedなフィールドだけでいいのでしょうか?…
ますます分からなくなってきました
690デフォルトの名無しさん:2010/03/17(水) 23:34:34
いいよ
691676:2010/03/18(木) 00:29:53
>>678
とりあえずテキストボックスに順番を入力しようかなと
692デフォルトの名無しさん:2010/03/18(木) 00:50:00
クラスを作ってプロパティをセッテいすると警告がきます
プロパティも内部的な動作はメソッドにしろってことですかね
693デフォルトの名無しさん:2010/03/18(木) 12:46:28
Jpeg形式で送られてきた動画をBitmapデータとして処理したいのですが、何か良い方法はありますか?
一番楽なのは取り込んだらBMPファイルとして保存し、それを読み込むことでしょうけど、これだと時間かかるので・・・。
すいませんが、よろしくお願いします。
694デフォルトの名無しさん:2010/03/18(木) 12:51:45
> Jpeg形式で送られてきた動画
イミフ
695デフォルトの名無しさん:2010/03/18(木) 12:59:14
BitMapオブジェクトではなくて?
696693:2010/03/18(木) 13:22:37
ありゃ、違ったかな?
送られてきたデータをバイト変換したら、0x89 0x50 0x4E 0x47... となってたので、Jpeg形式なのかなと
とりあえず、BitmapクラスにはJpegデータとして格納されているので、これをBitmap形式に変換したいのですが、何か良い方法はありますでしょうか?
697デフォルトの名無しさん:2010/03/18(木) 14:02:51
なんで変換する必要があるの?
LockBitsやGetPixel使えば内部表現がどうだろうと普通にピクセルデータ取れるし
保存形式も好きなの選べるし
698693:2010/03/18(木) 14:05:33
追記
一度BitmapDataで取り込み、LockBitsを使用してBitmapにしています。
その時のフォーマットはPixelFormat.Format24bppRgbを使用しています。
(これでBitmap形式になっていなところも不思議ですが)
699693:2010/03/18(木) 14:08:09
>>697
GetPixelでは遅いので、Bitmap形式をバイト配列に変換して処理しているからです。
700デフォルトの名無しさん:2010/03/18(木) 14:11:27
何が分からないのかさっぱり分からないが、取り敢えずMemoryStreamでも使えばいいよ
701デフォルトの名無しさん:2010/03/18(木) 14:22:07
別のBitmapにGraphics.DrawImageしたら
702デフォルトの名無しさん:2010/03/18(木) 14:22:15
なんで変換する必要があるのかわからん
Lockbitsで出来ない処理なの?
703デフォルトの名無しさん:2010/03/18(木) 14:36:07
>>698が意味不明
普通にLockBitsすれば生のピクセル取れるはず
704693:2010/03/18(木) 15:32:31
>>703
ですよね・・・。
とりあえず描画は出来ているのですが、バイトの先頭が&H42,&h4Dになってない時点で何かおかしいですし。
試験的に同じ処理でJpegファイルを読んでみたところ、先頭のバイトが同じになったので、Jpegに変換されているのかなと。
705デフォルトの名無しさん:2010/03/18(木) 15:36:00
要するにファイル形式とBitmapデータを混同してるってことでFA?
706デフォルトの名無しさん:2010/03/18(木) 15:54:32
素直に考えろよw

あと、思っただけじゃなくて少しは検証しろよ。もしもJpegになってたら圧縮されてるってことだから総バイト数減ってないとおかしいだろ
知識持ってない奴は始めっから手抜きなんか考えんな
707693:2010/03/18(木) 16:39:18
>>705
どうなんでしょう?
Bitmapクラスであっても、Jpeg形式のデータを入れればJpeg画像として処理されるってことですよね。

>>706
いろいろと検証しているのですが、少し混乱してます。
BitmapのWidthとHeightの値を見ると720×470のデータで、
出てくる総バイト数は593508Byteや540966Byteとカラーとして考えたら半分くらいに圧縮されてますね。

m_Bitmap.UnlockBits(m_BitmapData)
m_BitmapData = m_Bitmap.LockBits(New Rectangle(0, 0, getWidth, getHeight), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb)
m_Bitmap.UnlockBits(m_BitmapData)

m_Bitmap.UnlockBits(m_BitmapData)
m_Bit = m_Bitmap.Clone((New Rectangle(0, 0, getWidth, getHeight)), PixelFormat.Format24bppRgb)
の処理で無理矢理Bitmapにしようとしている時点で、確かに手抜きですね。


とりあえずbitmapクラスにヘッダを自力で入力して、GetPixelで画素を拾って再構築してみたところ動きましたが・・・処理が遅すぎ。
708デフォルトの名無しさん:2010/03/18(木) 16:49:57
全く意味がわからない
その最初のm_BitmapDataはどこから来た
709デフォルトの名無しさん:2010/03/18(木) 17:02:06
つうかBMPだろうがPNGだろうが基本ピクセルの集まりでしかねぇのにwwww
710693:2010/03/18(木) 17:09:41
>>708
.SnapShot(m_BitmapData.Scan0, getSize(), 1)
で、データを取得してます。

>>709
ですよねー。
そこに圧縮が入ってるだけで、ここまで苦労するなんて思わなかった。
711デフォルトの名無しさん:2010/03/18(木) 22:31:29
textboxのbackcolorですが、プロパティから選べるシステムタブの
infoやmenubarなどを選ぶ方法はありますか?
color.infoはありませんでした。
712デフォルトの名無しさん:2010/03/18(木) 22:48:21
コードから指定したいってこと?
一度Form1の適当の奴の色をデザイナで設定して、
プロジェクトのあるフォルダのForm1.designer.vbを見てみると良いよ
713デフォルトの名無しさん:2010/03/18(木) 22:53:54
>>712
これはとても便利です!ありがとうございました
714693:2010/03/19(金) 05:06:13
>>705
ああああああ、おもいっきり混同してたあああああああああああああ
pixelformatって圧縮形式だったのか

・・・そろそろ寝る
715デフォルトの名無しさん:2010/03/19(金) 09:54:51
違う
PixelFormatはピクセルごとの形式だから圧縮は関係ない
716デフォルトの名無しさん:2010/03/19(金) 10:14:01
なんつうか、香ばしいな
717デフォルトの名無しさん:2010/03/19(金) 12:29:51
関数を作ると
関数 'hoge' は、すべてのコード パス上では値を返しません。結果が使用されるときに、null 参照の例外が実行時に発生する可能性があります。
と警告が出てしまいます
Public Function hoge() as void
のように最初から値を返さないと決めて宣言することはできないでしょうか

それとも関数の終わりを
Return 0
End Function
のようにするしかないでしょうか。できれば二行も使いたくないのですが・・
718デフォルトの名無しさん:2010/03/19(金) 12:46:01
値返さないならSubにしろよ
719デフォルトの名無しさん:2010/03/19(金) 12:47:48
>>718
ありがとうございます。私が余計な事をしていたのですね・・
720デフォルトの名無しさん:2010/03/19(金) 12:48:42
警告条件から除外すればいいじゃない。
721デフォルトの名無しさん:2010/03/19(金) 12:51:05
そんなこともできるのですか、ありがとうございます
722デフォルトの名無しさん:2010/03/19(金) 13:12:42
まぁちゃんとした値を返さないFunctionなんかはバグの元だし
今はよくてもメンテを後でやるときに困る

そういえば昔VB6の保守案件で見たソースがすべてFunctionで宣言されてたソースを見た
やりづれぇことこの上なかったなぁ
723デフォルトの名無しさん:2010/03/19(金) 13:24:53
書き換えちゃえばイイじゃない
724デフォルトの名無しさん:2010/03/19(金) 13:34:52
>>723
書き換えると影響が出まくる可能性があるので怖くて手を出せなかった
時間もあんまりなかったので、同じ機能でも元のソースをコピペして関数作ったり

おかしいなりにキッチリ動いてたんでねorz

725デフォルトの名無しさん:2010/03/19(金) 22:34:29
ちょっと質問ですが
下のC#をVBに変換するとしたら

while((line = sr.Read()) != null){

if(line_ct++ < analy_line)
contine
}

どんな感じになるでしょうか

null がnothing に
!= が<> だとしても うーん
726デフォルトの名無しさん:2010/03/19(金) 22:37:52
Nothingとの比較はIsな
代入と比較を条件節で書くのは無理だから分けるしかないね
727デフォルトの名無しさん:2010/03/19(金) 22:45:41
カスタムコントロールについて詳しく載っているサイト知りませんか?
もし、ご存じなら教えて下さい。よろしくお願いします。
728デフォルトの名無しさん:2010/03/19(金) 22:59:20
あんまり無いんじゃないかな
ユーザコントロールとは違って結構手強いのでMSDNを恐れてるようじゃ無理だ
729デフォルトの名無しさん:2010/03/19(金) 23:03:58
カスタムコントロールっていうからおかしくなるわけで、単なるcontrolクラスの継承
INHARLITS 継承 クラス
辺りでぐぐって、textboxでも拡張してみるとイイ。textboxEX辺りでググると事細かに書かれているサイトもある
あとはツールボックスに追加するだけ
730デフォルトの名無しさん:2010/03/19(金) 23:18:35
>>728-729
ありがとうございました。
今、カスタムコントロールでapp.configファイルにバックカラー設定値の
ような値を持たせてInitializeComponetの後にapp.configのバックカラー設定値に
よって色を変えるロジックを書いていますが、なぜかバックカラーが
反映されないんです><

731デフォルトの名無しさん:2010/03/19(金) 23:25:34
それカスタムコントロールじゃなくてユーザーコントロール
別物だから混同しないように
コードがないのでわからないけど、一般にそういう処理はコントロールじゃなくて
それを張り付けたフォームの方に書く
コントロール側に書いちゃうと分けた意味が薄れるから
732デフォルトの名無しさん:2010/03/19(金) 23:29:06
>>731
なるほど。ありがとうございました。
733デフォルトの名無しさん:2010/03/19(金) 23:46:54
>>726
返答ありがとうございます

分離しかないですか
うーん
734デフォルトの名無しさん:2010/03/19(金) 23:54:04
vbは比較と代入が=で統一されてるからな。仕方ない
735デフォルトの名無しさん:2010/03/20(土) 02:11:17
比較演算の右辺値を使うのって個人的にあまり好きじゃないけど、
確かにVBだと>>725みたいのはスマートに書けないんだよな。

どうしてもWrite Trueなループを抜ける条件をループの中に書くような
ちょっと間抜けなコードになっちゃう。

まあそれはそれで必ずしも分かりにくくはないんだが、冗長な感じは否定できない。
736デフォルトの名無しさん:2010/03/20(土) 03:12:28
ここまでReflectorなし
737デフォルトの名無しさん:2010/03/20(土) 08:40:07
>どうしてもWrite Trueなループを抜ける条件をループの中に書くような
>ちょっと間抜けなコードになっちゃう。

俺は結構使ってたりするんだが・・・

別スレッド立ててデータをひたすら取得
取得間隔はThread.Sleep使ってループの中で止めてる

メインスレッドからの停止フラグでWhileを抜けるような仕様

普通はどうやってるんだ・・・?
なんか自分のやってることに自信がなくなってきた
738デフォルトの名無しさん:2010/03/20(土) 08:45:53
動けばいいよ。
宗教論争しても無意味。
739デフォルトの名無しさん:2010/03/20(土) 08:50:47
宗教論争っちゅーか効率のいいやり方聞いてるだけじゃね
740デフォルトの名無しさん:2010/03/20(土) 10:53:02
俺は基本「動けば良い」かな
パフォーマンスは余程の差がなければ「コードの見やすさ」優先で
結構ベタな書き方多いかも
741デフォルトの名無しさん:2010/03/20(土) 11:35:15
古典的には先読みの1件。
同じ命令を2回書くのに抵抗がある人もいるかもしれないが、わりとスタンダードなやり方。
ただContinue Doで継続した場合に2つめのReadが実行されないので、If で代用。
あとif文中のline_ct++は扱いが面倒だな。

line = sr.Read()
Do While line is Nothing
 line_ct += 1
 ' If line_ct <= analy_line Then Continue Do
 If line_ct > analy_line Then
   :
 End If
 line = sr.Read()
Loop

742デフォルトの名無しさん:2010/03/20(土) 13:18:25
>>741
それなら普通に無限ループを抜ける条件をループの中に書いた方が
分かりやすいでしょ。

ちなみに、VB6じゃないからDoとかいらんし。
743デフォルトの名無しさん:2010/03/20(土) 14:06:47
VB6でも両方かけるよっと。みんなどっち使ってる?
While - Wend
Do While - Loop
744デフォルトの名無しさん:2010/03/20(土) 14:19:08
本当はdo untilと書きたかったのでdoを使ってみた。
今はこのケースでIsNot演算子が使えるのだな。
745デフォルトの名無しさん:2010/03/20(土) 14:29:29
タブに動的コントロールを追加したときの質問です。

abrowser = new WebBrowser
TabPage1.Text = "aaaa"
Me.TabPage1.Controls.Add(awebbrowser)

mytab = New TabPage
mytab.Controls.Add(awebbrowser)
mytab.Text = "bbbb"
TabControl1.Controls.Add(mytab)
Me.TabControl1.SelectedTab = TabPage1

としたときに、tabpage1(タブ名"aaaa") とmytab(タブ名"bbbb")の
webbrowserコントロールへのアクセスはどうやって行うのでしょうか。

ボタンを押したらnavigateするようにしているのですが、
ふと思ったらどちらのコントロールかを指定していないのに気づいて、
どうやって指定するのか検索するキーワードすら枯渇してしまいました。
746デフォルトの名無しさん:2010/03/20(土) 15:03:09
>>745
オブジェクトにアクセスする必要があるのなら、そのオブジェクトの参照を
握っておいたら?

さすがに頭悪すぎる質問じゃないの?
747デフォルトの名無しさん:2010/03/20(土) 15:20:03
>>746
はじめて間もないのでとんちんかんな質問だったようです。すいません

それぞれのタブページに追加したオブジェクトがあって、
それを取得できる何らかの方法があるのかと思ってました。
748デフォルトの名無しさん:2010/03/20(土) 15:35:56
TreeViewにNodes.AddRangeでarraylist.toarrayで項目を追加しようと思ったのですが
型 'System.Object[]' のオブジェクトを型 'System.Windows.Forms.TreeNode[]' にキャストできません。
といわれ代入できません。
object型をtreeview型に変換すれば解決すると思うのですが、そんな方法ありますか?
それともarraylistを使わずに最初からtreeview型の配列を作った方がよいのでしょうか。

↓kategoriはarraylistです。
TreeView1.Nodes.AddRange(kategori.ToArray())
749デフォルトの名無しさん:2010/03/20(土) 15:41:11
ArrayListは時代遅れ。もう不要。忘れていい。
List(Of TreeNode)ならToArrayすればTreeNodeの配列になる。
750デフォルトの名無しさん:2010/03/20(土) 15:45:06
>>749
arraylistは先ほど見つけてなんと便利なんだろうと思っていたのですが・・orz
ありがとうございました。list使います。
751デフォルトの名無しさん:2010/03/20(土) 15:55:59
ctypeとかなかったっけ?
752デフォルトの名無しさん:2010/03/20(土) 18:44:58
unk
753デフォルトの名無しさん:2010/03/21(日) 19:53:10
外部フォーム名を取得する方法を教えて下さい

クライアントの相対座標でキャプチャソフトを作ろうと考えていますが
親フォーム以外である
対象のフォーム名の取得方法にたどり着けません

ヒントで構わないのでご協力下さいませ
754デフォルトの名無しさん:2010/03/21(日) 19:55:45
対象のフォームって何? 誰が作った奴?
普通にP/Invokeでウィンドウハンドル取ればいいような気が。
755デフォルトの名無しさん:2010/03/21(日) 19:56:55
フォーム名って何を指すんだろ 何のために必要なんだろ
756デフォルトの名無しさん:2010/03/21(日) 20:16:16
大変助かりました
フォームとはVBのコーディングの感覚で話していました
大変申し訳ありません 正式にはハンドルなんですね
ヒントありがとうございました
757デフォルトの名無しさん:2010/03/21(日) 20:18:23
正式にはウィンドウだろ?
758デフォルトの名無しさん:2010/03/22(月) 09:16:08
特定のアプリについて、
非アクティブ時にも動かせるようにするアプリを作りたいのですが、
どういった勉強をすれば良いでしょうか?

具体的にどんなことかと言いますと、RPGツクールという製品で作ったゲームは
非アクティブになるとゲームが止まってしまいます
それを非アクティブでも操作できるようにしたいと思っています
759デフォルトの名無しさん:2010/03/22(月) 09:28:03
非アクティブの時に動くか動かないかはそのアプリ次第。
ということで、無理だろ。
760デフォルトの名無しさん:2010/03/22(月) 09:28:08
アセンブリ言語でも勉強すれば
761デフォルトの名無しさん:2010/03/22(月) 09:46:12
自作でツクールを作れば
762デフォルトの名無しさん:2010/03/22(月) 10:53:29
>>759
無理ですか、残念です
>>760
勉強してみます
>>761
厳しかとです・・
763デフォルトの名無しさん:2010/03/22(月) 13:53:32
ツクールに頼らないでVBなりPHPで作ればよろし
764デフォルトの名無しさん:2010/03/22(月) 16:38:10
PHP!?
765デフォルトの名無しさん:2010/03/22(月) 16:38:52
HSPじゃねーの?
766デフォルトの名無しさん:2010/03/22(月) 16:40:09
そもそも既存ゲームをそういう風にしたいって要望なんだから
もう何もかもが見当違いのアドバイスだな
767デフォルトの名無しさん:2010/03/22(月) 17:02:43
オンゲのBOTを作りたいって言ってるようにしか見えんなぁ
768デフォルトの名無しさん:2010/03/22(月) 17:05:08
>>767
ツクール製のオンゲあるのか
知らんかったわ

まあBOTならそのうちBANされて終わりじゃないの?
769デフォルトの名無しさん:2010/03/22(月) 17:55:22
非アクティブで止まるONゲとかどんなのよw
770762:2010/03/22(月) 19:35:42
アプリケーション側でsendmessage等を止めていると思うのですが、
それを外部から触るには逆アセンブラで解析して・・という流れになりそうですね。諦めます
>>767 それはGetPixelとsendkeyで割と簡単に作れますね。画面を更新する必要も特に無いと思います。
>>769 ルシエルブルーというゲームは非アクティブにすると非同期になるわけではありませんが、画面が止まります。別サイト見ながらチャットするにはかなり不便です・・
こう書くとBOTを作っていると思われますね
771デフォルトの名無しさん:2010/03/22(月) 19:37:06
なにこの半可通
772デフォルトの名無しさん:2010/03/22(月) 19:39:14
チャット用のノートでも買えばいいと思う。
最近安いし
773デフォルトの名無しさん:2010/03/22(月) 19:43:53
もう少しいろいろ勉強した方がいいよ。
774デフォルトの名無しさん:2010/03/22(月) 19:45:52
vmwareとか
775デフォルトの名無しさん:2010/03/22(月) 20:10:09
でどの辺がツクールゲームなんだ?
776デフォルトの名無しさん:2010/03/23(火) 09:12:20
現在、常駐して使用するアプリを製作したのですが、
通常のアプリとして製作し、タスクスケジューラにて起動するようにしています。
しかし、この場合にログオフ⇒ログオンとすると
アプリが終了した状態となってしまっています。

サービス化すれば解決するかと思うのですが、
アプリを改修することなく、このようなケースに対応することは可能でしょうか?
(ログオフしてもアプリが終了せず、起動中のままとなるようにしたい)

使用言語はVB.NET2005です。
利用環境はWindowsServer2003になります。
777デフォルトの名無しさん:2010/03/23(火) 10:35:17
>>776
entryserviceっていうソフト使ってそのアプリを
登録しとけば勝手にサービスになるよ
778デフォルトの名無しさん:2010/03/24(水) 01:04:57
VB2005+WinServer2003とは・・・往年のタッグだな。

よしもっと流行らせようぜ、VB2005+WinSever2003
779デフォルトの名無しさん:2010/03/24(水) 17:37:21
Dim objStreamReader As StreamReader
objStreamReader = New StreamReader(入力FileNameパス付き)

'一行読み込む
strLine = objStreamReader.ReadLine

的なことをして、ファイルを一行ずつ読んでいるのですが、
途中で一行戻ったりすることは可能ですか?
つまり、特定の文字列を一致する行を求めて、その行を含めてそれ以降の
ファイルを取りだしたいので、一行戻るという小細工ができれば
うれしいのですが。。。。。よろしく

780デフォルトの名無しさん:2010/03/24(水) 17:50:03
strLineを残しとけばいいだけだろ
781デフォルトの名無しさん:2010/03/24(水) 17:53:02
ボタンをクリックしたらエフェクトが出るというようなことをやりたいのですが、
参考になるサイトとかありますか?
directxでフォームを使わないのが一般的でしょうか
782デフォルトの名無しさん:2010/03/24(水) 17:54:34
WPF使う
783デフォルトの名無しさん:2010/03/24(水) 18:12:39
WPF初めて聞きました。調べて使います。ありがとうございました!
784デフォルトの名無しさん:2010/03/24(水) 22:15:36
DataGridViewを使用して、1行ごとに、
商品コード1、商品コード2、商品コード3・・・
といった項目を登録するようなプログラムを作っています。
「登録」のボタンを押した後、各項目についてフォーマットチェックを行い、
エラーがあった場合、メッセージを出力後、該当のセルにフォーカスさせたい
のですが、やり方がわからず困っています。
DataGridView自体にはフォーカスできるのですが、その中のセルについては
いつも決まったセル(例えば商品コード2)にしかフォーカスされません。
どうすれば好きなセルが選択された状態にできるでしょうか?
785デフォルトの名無しさん:2010/03/24(水) 22:17:44
> 「登録」のボタンを押した後、各項目についてフォーマットチェックを行い、
CellValidatingとかRowValidatingとかでやれないの?
786デフォルトの名無しさん:2010/03/24(水) 22:33:03
787デフォルトの名無しさん:2010/03/25(木) 09:33:47
>780
ああ、そうでした。
2年ぶりにVB.NETを使ったら、
そんなことすら思いつきませんでした。
788デフォルトの名無しさん:2010/03/25(木) 23:06:04
panelの中にpanelとbuttonを配置し、両方のdockをtopに設定しました
片方はpanelが上にくるのですが、片方はbuttonが上に来てしまいます
dockの設定の順番かと思ったのですが、これは何が原因で変わるのでしょうか?
と調べたら出てきました。Zオーダーですね。ありがとうございました。
789デフォルトの名無しさん:2010/03/25(木) 23:08:09
どういたしまして。
790デフォルトの名無しさん:2010/03/25(木) 23:39:32
>>788
つーかそれが嫌ならスプリッターパネル
791デフォルトの名無しさん:2010/03/26(金) 10:53:15
VB.NETでWindowsXPの画面のプロパティの詳細設定の中の『DPI設定』の値
を取りだしたいのですが、方法知っている人押してください。
792デフォルトの名無しさん:2010/03/26(金) 11:00:15
vb dpi でぐぐれば大量にヒットするけど
793デフォルトの名無しさん:2010/03/26(金) 14:16:28
>792
ありがとうございました。ググッたら出てきました。
Dim dpi As Graphics = Me.CreateGraphics
と宣言して、
dpi.DpiX
dpi.DpiY
で取りだしたら、両方ともに96でした。
ちなみに、このDpiXとDpiYは、いつも一致するのでしょうか?
たとえば、
dpi.DpiX=96
dpi.DpiY=100
なんていうことは絶対にありえないのでしょうか?
794デフォルトの名無しさん:2010/03/26(金) 14:22:30
一致しない
795デフォルトの名無しさん:2010/03/26(金) 14:37:41
>794
でも画面のプロパティを開くと、DPI設定値は
ディフォルトで 96
ちょっと大き目で 120
などの、単一の値しか設定できませんが、もしDpiXとDpiYが必ずしも一致しない
ことがあるならば、画面のプロパティで設定できるDPIの値も、
DpiX
DpiY
のように二つの値を独立に設定できないとおかしいのではないのかなと
思ったりして、混乱しています。エキスパートの人、解説お願いします。
796デフォルトの名無しさん:2010/03/26(金) 14:43:26
画面のプロパティはXしか表示していない
797デフォルトの名無しさん:2010/03/26(金) 14:48:39
>796
解説ありがとうございます。
ということは、Yが表示されていないとしても、通常は、
DpiX=96 (こちらが表示されている)
DpiY=96
あたりがディフォルト値だと思いますが、それを、
DpiX=96
DpiY=120
とかに、もし独立して設定できるのなら、
Windowsの画面が横に伸びるんでしょうか?
そんなこと出来るのかな??


798デフォルトの名無しさん:2010/03/26(金) 14:50:45
モニタ次第なんじゃないの?
799デフォルトの名無しさん:2010/03/26(金) 15:52:18
ああ?
800デフォルトの名無しさん:2010/03/26(金) 16:13:36
WPFとsilverlightは全く別個のものなのでしょうか?
801デフォルトの名無しさん:2010/03/26(金) 16:23:50
別個の定義次第
取り敢えず記述するための言語は同じだな
802デフォルトの名無しさん:2010/03/26(金) 16:25:43
その二つを比べるのが間違ってる
WPFっていうのは.NET Frameworkの新しいGUIフレームワークのことで
今までのSystem.Windows.Formsに代わるもの。
Silverlightは「配布しやすい」ことに重点を置いた.NET Frameworkの弟分。
.NET Compact Frameworkを発展的に置き換えるもの。
馬鹿でかい.NET Frameworkをインストールしなくても
非常に小さなランタイムをインストールするだけで動作する。
Macにも対応していて、ブラウザやポータブル端末でも動く。
で、SilverlightのGUIフレームワークはWPFに似せて作ってある。
803デフォルトの名無しさん:2010/03/26(金) 21:22:39
Dim S,S1,S2,S3 as string

Dim S,S2,S3,S4 as string
どっちがいい?
804デフォルトの名無しさん:2010/03/26(金) 21:25:26
どっちもダメ
そんな意味のわからない変数名は付けない
それか配列にする
805デフォルトの名無しさん:2010/03/26(金) 21:45:12
あえて選ぶなら後者だな。
Sを暗黙のS1と解釈する方が、まだ分かり易い。
806デフォルトの名無しさん:2010/03/26(金) 21:54:37
>>803
おれなら
Dim S0,S1,S2,S3 as string
または
Dim S1,S2,S3,S4 as string
にして
Dim S as string
は別の目的で使う。
807デフォルトの名無しさん:2010/03/26(金) 22:30:53
今日、会社でプレゼン用の資料書いたら、「.NET」が「.NEET」になってて後輩が噴いた。
808デフォルトの名無しさん:2010/03/26(金) 22:32:06
VB.netってヒアドキュメント書ける?
何かで書けるって見たような気がするのだけど
809デフォルトの名無しさん:2010/03/26(金) 22:43:39
もともとVBにはエスケープシーケンスがないけど改行は書けない
C#では"以外はエスケープせずに何でもそのまま書ける逐語的文字列リテラルという機能がある
810デフォルトの名無しさん:2010/03/26(金) 23:05:32
>809 thx
文字列を
"" & _
でくくったり外したりするエディタのマクロ使ってるけど
VSにコーディング補助機能とかで付いてると良いのに
811デフォルトの名無しさん:2010/03/26(金) 23:28:35
そんな赤ん坊の夜泣きの薬みたいな用語初めて聞いたw

まあ、いちいち文字列に適切な名前を付けるのをいとわなければ
リソースを使うのが簡単だと思う。

ただIDEのリソースエディタは複数行の文字列が見づらいんだよな。
812デフォルトの名無しさん:2010/03/26(金) 23:41:53
や、SQLとか貼り付けるのがめんどくさいのよ。

エディタで作ったSQLを" " & _でくくって貼るとか
他人のVBのソース内のSQLを試したい時とかに
" " & _ 外すのが。
813デフォルトの名無しさん:2010/03/27(土) 05:36:59
俺ならブレイクポイント設定して中身コピペする
814デフォルトの名無しさん:2010/03/27(土) 07:15:03
すいません、質問します。

TabControlについて研究していますが、
たとえば、JaneStyleにあるようなタブコントロールだと、
タブを左クリックすれば、すぐにそのタブが選択されますが、

一般的な.netのTabControlで、JaneStyleのようなFlatButtonの場合ですが、
マウスの右ボタンを押下(DOWN)した状態で→軽くボタンが浮き上がる表示(この状態ではまだ選択という状態になっていません)
そして、
マウスの右ボタンを離した(UP)した状態で→ボタンが押された表示(この状態で、タブが選択されたという状態になります)
となるのですが、
http://ghardzatudan6.es.land.to/up/img-box/img20100327070642.jpg

Janeのように、マウスの右ボタンを押下(DOWN)した段階で、すぐに、そのタブが選択されるような処理をしたい
場合はどのようなコードを入れればいいのでしょうか?
Janeで実装できているのですから、VB.NETでも実装できないわけないと思い、調べていますが、
解決できません。
だれかご存知な方はいらっしゃいますか?
815デフォルトの名無しさん:2010/03/27(土) 09:45:11
VB2010 では、行継続文字「_」が一部不要に・・・
816デフォルトの名無しさん:2010/03/27(土) 09:56:58
なるの?
817デフォルトの名無しさん:2010/03/27(土) 09:57:45
>>801-802
ありがとうございます
解説サイトのサンプル見て、勘違いしちゃいました
818デフォルトの名無しさん:2010/03/27(土) 10:05:36
仕様を見てみたけど、かなり空気を読めてる感じで良いな。
大方の行継続文字は不要になりそうだ。
819デフォルトの名無しさん:2010/03/27(土) 10:10:39
しばらくは前のでも動くように _ を付けた方がいいのかもしれないけど
820デフォルトの名無しさん:2010/03/27(土) 10:47:34
VB 2008 Express Editionを使用しています。

下記で外部プログラムを立ち上げるのですが、
一瞬コマンドプロンプトが表示されてしまいます。
どうすれば表示しないようにできますか?
System.Diagnostics.Process.Start("外部プログラム")
821デフォルトの名無しさん:2010/03/27(土) 10:49:45
New ProcessしてStartInfoのCreateNoWindow
822デフォルトの名無しさん:2010/03/27(土) 10:52:45
ProcessStartInfoを引数に取る方で色々試せばできそうな予感。
823デフォルトの名無しさん:2010/03/27(土) 11:46:00
ありがと!
824デフォルトの名無しさん:2010/03/27(土) 11:55:10
VB 2008 Express Editionを使用しています。

listboxにアイテムを登録します。
そのデータを次回起動時に初期表示させたいので保持したいです。
でapplicationsettingsで持たせたかったのですがitemsの項目がなく困ってます。
iniファイルに保存くらいしか思い浮かばないのですがVBの機能で記憶してもらうのは無理でしょうか?

個々人が使うツールを想定しているのでDBに保存というのは考えてません。
825デフォルトの名無しさん:2010/03/27(土) 12:18:32
別にいいと思うけどな、DB 最近はローカル用のも増えたし

プロジェクトのプロパティ>設定で StringCollection でも使えば?
んでLoad辺りでDataSourceにMy.Settings.XXXXを設定する
要素の追加削除修正はMy.Settings.XXXXに対して行う
826デフォルトの名無しさん:2010/03/27(土) 12:29:51
ありがとうございます。

コントロールのプロパティからでなくてもappって設定できたんですね
ただ、この場合データの保存はcsv形式になるんですかね

>要素の追加削除修正はMy.Settings.XXXXに対して行う
終了時にlistboxのアイテムをここに書き込むだけでいいかなと思ってるんですけど問題ありますかね
827デフォルトの名無しさん:2010/03/27(土) 12:37:51
データとビューの分離という観点の問題があるな

まあそれ以前にDataSourceに設定したらItemsに追加はできないし
それにわざわざItemsに詰め直してたら保存するにも一々詰め戻さないとダメじゃないかめんどくさい
あらかじめMy.Settings.XXXXを操作しとけば後はSave呼ぶだけだぜ
828デフォルトの名無しさん:2010/03/27(土) 13:24:02
vb6経験者です
Clickonceが理解できません
express版にお勧めのインストーラ作成ソフトはなにがありますか?
ターゲットにframeworkから入れさせたいのですが
829デフォルトの名無しさん:2010/03/27(土) 13:26:53
clickonceはいまいち
830デフォルトの名無しさん:2010/03/27(土) 19:32:29
828です。後出しですみません
配布したいのはVB 2008sp1で作ったソフトです。
PowerPackのDataRepeaterも使ってます。
dotNetFx3.5だけじゃだめだよね(多分)
831デフォルトの名無しさん:2010/03/27(土) 19:36:21
うん。
832デフォルトの名無しさん:2010/03/28(日) 11:02:17
>>814
Downした段階で、強制的にUpイベントを呼び出すロジックを組めば良さけだけど
俺も方法しらん
ジェーンは、最初からDelphiのコンポーネントとして付いているコントロールを使っているだけだよ。
833814:2010/03/28(日) 12:57:37
解決しました

Captureを外して(false)、その後、SelectedIndexに選択するインデックスを
設定すれば、ワンクリックで選択されるようになりました。
834デフォルトの名無しさん:2010/03/28(日) 19:28:43
予めフォームに設置してるパネルを自分で作ったクラスのメソッドで移動させたいんだけど
パネルを宣言しろとエラーが出ます
文字列などの宣言方法は分かってますが予め用意されてるオブジェクトを宣言する方法が分かりません
よろしくお願いします
835デフォルトの名無しさん:2010/03/28(日) 19:45:17
System.Windows.Forms をインポートして、
Private p As Panel

とかでいいだろ。
836デフォルトの名無しさん:2010/03/28(日) 19:53:36
Form1.HogeのノリでPanel1.Hogeとか書いてるんだろうなぁ
837デフォルトの名無しさん:2010/03/28(日) 20:01:48
できました
ありがとうございました
838デフォルトの名無しさん:2010/03/29(月) 09:32:21
VB.NET2005にて、テキストファイルへの書き込みを行うアプリを製作しているのですが、
同一テキストファイルに複数のプロセスから同時に書き込みを行うと
エラーとなってしまいます。
テキストファイルへの書き込みについて、
排他制御は行えますでしょうか?
839デフォルトの名無しさん:2010/03/29(月) 09:46:25
mutex
840デフォルトの名無しさん:2010/03/29(月) 13:31:39
排他が取得出来ないから例外が発生する訳で…
2重に排他制御する必要あるのか?

発生した例外をどう処理するかが重要だと思うんだが
841デフォルトの名無しさん:2010/03/29(月) 14:42:55
てか書き込むより前にオープン時点で例外出るよな?
842デフォルトの名無しさん:2010/03/29(月) 22:02:11
まあテキストって言っても、ログ出力で追記とかならそういうのはある。
例外とかで排他したいんじゃなくて、待ち合わせしたいって場合。
まあMutexが一番単純かな。
843デフォルトの名無しさん:2010/03/29(月) 22:29:29
非同期やってるような人が838みたいな質問するとは思えないんだが
844デフォルトの名無しさん:2010/03/30(火) 00:12:03
非同期?
845デフォルトの名無しさん:2010/03/30(火) 18:57:19
ODP.NETでBegintransactionすると暗黙のcommitしないんだよ。
知ってた?
846デフォルトの名無しさん:2010/03/30(火) 19:37:30
へー
847デフォルトの名無しさん:2010/03/30(火) 22:25:57
それはADO.NETでは普通ではないのか?
848デフォルトの名無しさん:2010/03/31(水) 00:28:43
ふつうに考えて、明示的にトランザクション開始してるのに
暗黙的にコミットされるわけがないだろうが
ADOとかODPとかの話ではないだろ
ましてやVB.NETも関係ない。つまりスレ違いだ
849デフォルトの名無しさん:2010/03/31(水) 01:43:09
そうでもないよ。
850デフォルトの名無しさん:2010/03/31(水) 06:51:09
Begintransactionを入れないと暗黙のコミットするから注意が必要だ。
851デフォルトの名無しさん:2010/03/31(水) 07:22:49
オートコミットをフォルスにしとけばええやん
852デフォルトの名無しさん:2010/03/31(水) 19:55:23
失礼します。

複数のBitmapオブジェクトから動画ファイルを作成したいのですが、比較的容易な方法ってありますでしょうか?
出来れば動画の形式はAVIやWMV等、MS製品での使い勝手が良い物を作成したいです。
XPでVB2008Expressを使用してます。

調べてみると「Video for Windows APIしかない」と言った意見や
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=18879

「VfWは16Bit時代の物で入手出来ない情報もあるので、DirectShow等を使ったほうが良い」
http://homepage1.nifty.com/MADIA/vb/vb_bbs/200401/200401_04010125.html
と、言った意見があり混乱しています。

もしくは、DirectShow編集サービス(DES)を解り易く解説しているところはありませんでしょうか?
http://msdn.microsoft.com/ja-jp/library/cc370369.aspx

よろしくお願いします。
853デフォルトの名無しさん:2010/04/02(金) 11:35:51
マシンの買い替えに伴ってOSも新調しようかと
考えていますが
VBでのコーディングするに辺り
windows7の32と64どっちがいいですか?

文献、資料は32系が多いので32にするのが無難そうですが
せっかくOSを載せ替えるなら
メモリが大量に積めるWIN64も捨てがたいのです

アドバイスをお願いします
854デフォルトの名無しさん:2010/04/02(金) 11:39:12
32だな。

クライアント用途だと、動画編集とかしない限り、64ビット化の恩恵なんてないし。
855デフォルトの名無しさん:2010/04/02(金) 11:39:31
俺は32BITにして4Gのうち1GをRAMディスクにしてる
64BITはテスト環境だけだなぁ

今んところ64メインで創れとは言われることはないんで
基本32で作成して、64でも普通に動くことを確認する程度

まぁ、そんなにメモリをずっと食うことがないって話が前提なんだけど
856デフォルトの名無しさん:2010/04/02(金) 11:39:42
そもそもVSは32ビット版だし。
857デフォルトの名無しさん:2010/04/02(金) 12:10:08
目安としては8G以上メモリを積むなら64ビット版、4G以下なら32ビット版。
4〜8Gの間は半端だな。
858デフォルトの名無しさん:2010/04/02(金) 14:33:40
64ビットの方が両方テストできていいかもしれんね
859デフォルトの名無しさん:2010/04/02(金) 14:51:00
64は一応WOW32なのに?
860デフォルトの名無しさん:2010/04/02(金) 15:10:27
自分はx64だな
x86のテストはVirtualPC上でやってる
861デフォルトの名無しさん:2010/04/02(金) 17:05:27
VB.netを使ったWeb開発もここでOKですか?
862デフォルトの名無しさん:2010/04/02(金) 19:57:37
いいんじゃないかと思うのですが・・・・

ASP.NETだけでいえば
ネット関係 [WebProg]にスレがあると思う
863デフォルトの名無しさん:2010/04/04(日) 23:28:47
タスクトレイに上がっているプログラムを一度に強制終了させるツールを作ろうと
考えていますが、どうすればタスクトレイに表示されているプログラムのプロセス名だけを
全て取得する事が出来ますか?
864デフォルトの名無しさん:2010/04/04(日) 23:29:47
無理。
865デフォルトの名無しさん:2010/04/04(日) 23:36:33
>>864
複数のプログラムを起動している時に
毎回そのアプリを一つずつ閉じるのがメンドクサイので
纏めてプロセスを落としたいのです。

なんとか皆さんのお知恵を拝借願いたいです。
866デフォルトの名無しさん:2010/04/04(日) 23:38:31
だから無理だって。

あれは、単にShell_NotifyIconで登録してるだけだから、
Explorerしか情報持ってないだろうし。
867デフォルトの名無しさん:2010/04/04(日) 23:48:20
WinFormアプリで例外を例外集約ハンドラでまとめて処理しようと思っています。
そして、そのハンドラ内で、例外が発生したメソッド名を
取得したいです。
で、UnhandledExceptionやThreadExceptionのEventArgsから取得した
例外オブジェクトからStackTraceを取り出したりしてみてるんですが、
例えば、
Button_Clickイベントハンドラ内でMethod1を呼び出し
Method1からMethod2を呼び出し、そこで例外が発生した場合、
StackTraceからButton_Clickは取り出せるんですが
例外の発生箇所であるMethod2の情報が取り出せず困っています。
発生箇所を取得する方法ってあるんでしょうか?

読みにくい文章ですいませんが、アドバイスよろしくお願いします
868デフォルトの名無しさん:2010/04/04(日) 23:50:57
StackFrameを辿っていけば取れるだろ
869デフォルトの名無しさん:2010/04/04(日) 23:56:53
質問です。

VB2008で、Windowsフォームが多数あるアプリケーションを
作成しています。
後から、全てのWindowsフォームの背景色を一度に
付け替えるなければならなくなったのですが、
何か効率的な方法はありますでしょうか。

アドバイスの方、よろしくお願いします。
870デフォルトの名無しさん:2010/04/05(月) 00:00:06
>>866
残念です。と諦めかけたのですが
>>868さんが何か出来そうなことを話されているのですが具体的にはどうすれば良いのでしょか?
もし宜しければコードをお教えいただけませんか?
871デフォルトの名無しさん:2010/04/05(月) 00:00:36
エディタで置換するのが一番早いんじゃね?
872デフォルトの名無しさん:2010/04/05(月) 00:00:54
>>870
どうみても>>867に対するレス
873デフォルトの名無しさん:2010/04/05(月) 00:00:58
>>870
お前さんへのレスじゃねーよ。
874デフォルトの名無しさん:2010/04/05(月) 00:03:29
>>868
Debugビルドで作った実行ファイルだと例外が発生したメソッド名を
StackFrameから取り出せるんですが、Releaseビルドだとできないみたいなんです。
なにかやり方間違ってるのかなー
875デフォルトの名無しさん:2010/04/05(月) 00:06:56
>>874
あー。それは無理。だってデバッグ用だから。
どうしてもやりたければ、関数の呼び出し履歴を自前のスタックに積んでくとかしかないでしょ。

もしくは、プロファイラ系のAPIを使えばいけるかもだけど。
876デフォルトの名無しさん:2010/04/05(月) 00:46:34
>>875
そうなんですね。簡単にはできないかんじですね><
なにか他に例外の発生箇所を特定する方法がないか
考えてみます。ありがとうございました。
877デフォルトの名無しさん:2010/04/05(月) 01:12:34
ん?エラーダイアログにはReleaseビルド版だろうがちゃんと表示されるのに
例外オブジェクトからは取得できないとかそんなことあるのかね。

ネイティブWin32アプリならともかく、.NETなんだから普通にできると思うけど。
878デフォルトの名無しさん:2010/04/05(月) 12:29:08
最適化されてれば例外でも見えないことがある
879デフォルトの名無しさん:2010/04/05(月) 21:51:13
フォームにつけるボタンをキャプションじゃなくて絵ボタンにしたいです。
imageプロパティにイメージ貼ればいいというのは分かったのですが、
VSのcommon7の下にあるpngファイルが、一枚のイメージの中に大中小と
絵が入っていて、使いたいのは中だけなのです。

足りない頭で考えると
1.適当に欲しい部分だけ切り取ってリソースにする。
2.imageプロパティのサブプロパティで欲しい部分を座標で指定する。
かなあとおもいますけど、これって普通どういう風に使うんでしょう?
880デフォルトの名無しさん:2010/04/05(月) 22:10:46
好きにすればいいと思うよ。
881デフォルトの名無しさん:2010/04/05(月) 22:22:19
>880 どもです。
したら、なんか慣習的に決まったやり方がある訳じゃないって感じでしょうか?
882デフォルトの名無しさん:2010/04/05(月) 22:40:59
一般的には.icoを使うことが多いので、.pngについては
あんまり慣習とかないんじゃないかなぁ。
883デフォルトの名無しさん:2010/04/05(月) 22:53:50
>>882
なる。納得でごわす。
884デフォルトの名無しさん:2010/04/06(火) 14:56:48
ライセンス的にどうなのかは知らないけど
pngがよかったらicoを自動的に全部pngに変換したり
ほしい部分だけ切り出したりするようなツールを作ればいいだろ
何のためにプログラミングやってんの
885デフォルトの名無しさん:2010/04/07(水) 13:52:13
Graphics.DrawLinesで線を引いて、その引いた線を
ドラッグして伸ばしたり形を変更したりしたいのですが
Graphics.DrawLines以外で線を引くのでしょうか?
教えてください。
886デフォルトの名無しさん:2010/04/07(水) 14:14:32
頑張る
としか答えようがないな
ドラッグ中はマウスカーソルが動くたびにその座標を取得して描き直す
887885:2010/04/07(水) 14:30:14
>>886

DrawLinesで引いた線を取得する方法はどうすればいいんでしょうか?
888デフォルトの名無しさん:2010/04/07(水) 14:34:29
PictureBox上に書いてたら線の色とかで判別するとかか?
889デフォルトの名無しさん:2010/04/07(水) 15:06:07
DrawLinesで引いた線はあくまで絵の上のピクセルの集合なので
線を表すオブジェクトなどは存在しません
線分の二端の座標を自分で管理しておいて、変化するたびに毎回描き直します
890885:2010/04/07(水) 15:14:13
>>889

線の二端の座標からドラッグするということでしょうか。
線の真ん中ぐらいからドラッグしたいときはどうすればいいのでしょうか
891デフォルトの名無しさん:2010/04/07(水) 16:19:08
>>890
その座標が線に含まれるか計算すればいいじゃん
ただある程度の幅見込まないと掴むの大変だろうけど
892デフォルトの名無しさん:2010/04/07(水) 16:55:04
Windows付属のペイントの曲線を参考にすればいいんじゃね?
クリックの1回目が起点、2回目が終点、3回目で中間点座標で調整、
みたいにクリック回数決めうちで、それ以降は修正不可って感じみたいね。
893デフォルトの名無しさん:2010/04/07(水) 17:00:19
と、思ったらちょっと違ったw
ドラッグで起点と終点、2回目、3回目で調整か。
894885:2010/04/07(水) 17:25:49
>>891

どう実現すればいいか全然浮かびませんが
ちょっと調べてみます
895デフォルトの名無しさん:2010/04/07(水) 18:14:54
>>894
graphicspathに太い線引いてisvisibleは?
…と思ったらブラシ使えないか…
じゃaddpolygonで
896デフォルトの名無しさん:2010/04/07(水) 18:29:32
ブラシじゃねえペンだ
897デフォルトの名無しさん:2010/04/07(水) 19:31:23
環境はVS2005です

Form1にデザイナで配置したDataGridViewの背景色を変更したいんですが
Module1から変更しようとするとオブジェクト参照がインスタンスされていません、みたいなメッセージが出ます

どうすればいいのでしょうか?
898885:2010/04/07(水) 19:48:44
それっぽい物ができました。ありがとうございました。
899デフォルトの名無しさん:2010/04/07(水) 20:44:13
>>897
ぴったりの開発環境があるよ
つ VisualStudio6.0
900デフォルトの名無しさん:2010/04/07(水) 22:59:01
>>899
そこをなんとか
901デフォルトの名無しさん:2010/04/07(水) 23:05:16
意味がわからない
902デフォルトの名無しさん:2010/04/09(金) 10:38:00
a
903デフォルトの名無しさん:2010/04/09(金) 11:58:21
>>901
そこをなんとか
904デフォルトの名無しさん:2010/04/09(金) 12:21:33
オブジェクト参照をインスタンスすればいいじゃない
905デフォルトの名無しさん:2010/04/09(金) 12:50:32
>>897
Form1.DataGridView.BackColor
とかでできなかったっけ?

でもモジュールは早めに卒業した方がいいっぽい
906デフォルトの名無しさん:2010/04/09(金) 13:44:12
この手のやつって頻繁に質問くるよな
どうせForm1のインスタンスが無いってパターンだろうけど

>>897
エラー箇所でブレークポイント設定して
中身を見てみれば何かが「Nothing」になっているはず
その何かのインスタンスを作成すればOK
907デフォルトの名無しさん:2010/04/09(金) 16:40:07
SplitContainerでどっちかのパネル畳んだ状態でリサイズしても
中のコントロール動かないのは回避方法ある?
908デフォルトの名無しさん:2010/04/09(金) 22:20:57
モジュールつかわないのって、
ClassにしてSharedにするの?
909デフォルトの名無しさん:2010/04/10(土) 00:25:07
ClassのSharedのReadonlyプロパティから取得できるようにする、
というのが一つのやり方かな。
910905:2010/04/10(土) 00:27:45
正しい方向なのかは知らんけど、俺は最近こんな感じにする

別のClass1の中で
Public Sub ex1(ByVal tb As TextBox)
tb.Text = "ABC"
End Sub

FormのClassの中のイベントで
Dim cl As New Class1
cl.ex1(TextBox1)

みたいな感じで汎用的に使えるクラスを作ってる。
911デフォルトの名無しさん:2010/04/10(土) 01:27:23
それのどこが汎用的なのかさっぱりわからん。
真面目な話、意味あるのかそんなの。
そんなものが正しい方向なわけが全くないよ。

これも真面目な話、フォームが持ってるコントロールをフォームの外部のクラスなり
モジュールなりからから触りたい、なんて思う人はプログラマ向いてないよ根本的に。
912デフォルトの名無しさん:2010/04/10(土) 01:53:20
なわけあるかい。
まあ>>910がいいかとは別の話だが。
913デフォルトの名無しさん:2010/04/10(土) 04:10:45
スレ番号33記念カキコ
914デフォルトの名無しさん:2010/04/10(土) 09:03:00
>>910
俺も
複数列コンボのデータソース設定する時とか
似た様なコントロールが複数のフォームに点在してる時とか
その方法使ってる
915デフォルトの名無しさん:2010/04/10(土) 11:56:23
>>914
そんな馬鹿自慢をしてどうするよ。

>複数列コンボのデータソース設定する時とか
そんなコードはフォーム自身に書いてください。
別のクラスに分けて複雑性を増やしてどうするんだよ。

>似た様なコントロールが複数のフォームに点在してる時とか
そういう場合はイベントを使う。
フォームはデータを持っているクラスからイベントを受信して自分の持ってる
コントロールを更新する。
916デフォルトの名無しさん:2010/04/10(土) 12:11:11
動けばいいよ
917デフォルトの名無しさん:2010/04/10(土) 12:37:29
>>915
> そんなコードはフォーム自身に書いてください。
> 別のクラスに分けて複雑性を増やしてどうするんだよ。
フォーム自身に書いてたら修正の時に大変だろ
30個フォームがあったら全部修正するハメになるぞ
別のクラスで持っていれば1ヶ所修正するだけで済む
918デフォルトの名無しさん:2010/04/10(土) 13:19:43
>>917
日本語読めてる?
919デフォルトの名無しさん:2010/04/10(土) 13:47:52
底辺同士の的外れなレスの付け合い
どっちもレベルが低いな
ハイレベルで高貴な私はパチンコに行って来る
920デフォルトの名無しさん:2010/04/10(土) 15:58:27
>>915
>そういう場合はイベントを使う。
>フォームはデータを持っているクラスからイベントを受信して自分の持ってる
>コントロールを更新する。

横からすいません、煽りとかでは全くなく、純然たる初心者からの質問ですが
ぱっと見だと>>917の方が便利じゃないかと思ってしまいました
ていうかそのイベントを使ってどういう処理にすればいいのかイメージできませんでした
具体的にどんな設計にすればいいのか教えていただけませんでしょうか
921デフォルトの名無しさん:2010/04/10(土) 17:06:17
>>920
引用してる箇所と>>917の話は直接は関係しないと思うけどさ。

とにかく、元の質問(>>897)に沿った話の肝は、コントロールの所有者(つまりフォーム)
以外のオブジェクトがコントロールを直接操作する、なんていう作り方は特別な理由がない限り
普通はまずしないってこと。

その理由は、コントロールを制御する責任を誰が負っているのか明確にするため。

複数のコントロールを制御するロジックを、複数のフォームで再利用したいとか、
よりコードの見通しをよくしたいといった理由でクラスにまとめたい場合は、
せっかく.NETにはユーザーコントロール(複合コントロール)を作る仕組みがあるんだから
それを使ってよ。
922914:2010/04/10(土) 18:11:53
>>915
> そんな馬鹿自慢をしてどうするよ。
自分以外の変わったコード書く奴を見下すのも大いに結構だけどよ
いきなりバカ呼ばわりする奴もどうかと思うぜ
923デフォルトの名無しさん:2010/04/10(土) 19:32:38
これが、コントロールじゃないただのクラスとかならまた話が変わってくるんだが
とりあえず、コントロールはその所有者のフォーム以外から操作しないほうがいい

Windowsのコントロールってそういうものだと覚えておいたほうがいい
924デフォルトの名無しさん:2010/04/10(土) 20:08:24
VS2008 + ASP.NET3.5 のWeb開発で質問です。
5種類の伝票のうちの1つをユーザが選択したとき、その明細データ(最大100件)を
表示するListViewを作りたいと考えています。
ポイントは以下のとおりです。
1.伝票毎に項目名が異なる→表の項目名表示を伝票に合わせて変える必要がある
2.同様に伝票毎明細の各列のAlign(左・中・右)が異なる

まず、1.については、DataBoundイベントで動的に項目名称を設定しました。
問題は、2.ですが、どのようにAlign設定したらよいでしょうか?
ListViewの該当箇所(ItemTemlate)は以下のとおりです。

<ItemTemplate>
<tr>
  <td><%#Eval("fld1")%></td>
  <td><%#Eval("fld2")%></td>
  中略
  <td><%#Eval("fld30")%></td>
</tr>
<tr>
  <td colspan="4"><%#Eval("fld0")%></td>
</tr>
</ItemTemplate>
925924:2010/04/10(土) 20:13:38
1つ思いついた方法は、
ListViewにバインドするデータのSELECT文で、
SELECT '<div align=right'||fld2||'</div> as fld2x 〜
として、<%#Eval("fld2x")%> とする方法です。
このSELECT文を5種類の伝票に合わせて5つ用意しておきます。

この方法以外に何かありますか?
926デフォルトの名無しさん:2010/04/10(土) 20:37:32
やっぱパチンコなんか行くもんじゃねぇな
927デフォルトの名無しさん:2010/04/10(土) 20:45:35
まぁ、そんな感じじゃね?
俺はバインド使わんから、コードでテーブル(スタイル)生成しちゃうけど。
928デフォルトの名無しさん:2010/04/10(土) 21:05:33
俺は拡張プロバイダ使うことが多いがな。
「フォーム以外」だからダメなんだろうな。

929デフォルトの名無しさん:2010/04/10(土) 21:08:10
だけどユーティリティ的な操作をコントロールに対して行う機能を、
適当な別クラスに作る(別クラスって言ってもユーティリティ的な機能を切り出すだけだが)
ってのは別に普通。
そのために複合コントロールなんて使いようがないし、
イベント使っても意味ないし。
930デフォルトの名無しさん:2010/04/10(土) 21:09:15
ユーティリティの呼び出しではなくて自動で処理させたい場合や、
コントロール単位で操作をカスタマイズしたい場合は拡張プロバイダ。
931デフォルトの名無しさん:2010/04/10(土) 21:41:03
関数を作っていたのですが、後から機能を増やしていったために引数の順番がひどくわかりにくいものとなりました
これを訂正、修正する方法ってありますかね?
一度別の関数をかませて引数の順番をかえればいいのでしょうが、なんか回りくどい気がします
良い方法合ったら教えてください
932デフォルトの名無しさん:2010/04/10(土) 21:42:23
リファクタリング
933デフォルトの名無しさん:2010/04/10(土) 21:45:10
ありがとうございます!
934デフォルトの名無しさん:2010/04/10(土) 21:47:52
>>929
全然普通じゃないしそんなの。
単に継承が理解できないからカスタムコントロールが作れないだけじゃないの?w
935デフォルトの名無しさん:2010/04/10(土) 21:49:11
自分がやらない=普通じゃない
936デフォルトの名無しさん:2010/04/10(土) 21:52:38
それでいいよ。好きにしな。
937デフォルトの名無しさん:2010/04/10(土) 21:53:38
既存クラスの拡張に継承を使うのは悪っていうのが最近の流れ
938デフォルトの名無しさん:2010/04/10(土) 21:56:51
自分がやる=最近の流れ
939デフォルトの名無しさん:2010/04/10(土) 22:05:55
まあとにかく、継承(の乱用)の問題点を分かってる人が反省的にそれを
言うならいいんだけど、単に継承そのものがわかんないお方がそれをいうのは
いかにもVB厨的ではある。

「便利なものは便利に(以下略」って、お前便利だかその方法使ってるんじゃなくて
それしか出来ねえだけじゃん、っていうw

少なくともコントロールの機能拡張みたいなものは>>929が言ってるような方法で
普通はやらない。

コントロールの機能拡張ってのは多くの場合トッピング的に複数を組み合わせることが
難しいし、だいいちコードの可読性を捨ててまでそんなことしたい場面なんかほとんどないし。
940デフォルトの名無しさん:2010/04/10(土) 22:14:40
Treeviewクラスに複数の値を持たせたいときに拡張したことあったな
割と便利だよ
ただあんまりやらないと思うけど
941デフォルトの名無しさん:2010/04/10(土) 23:10:19
>924
項目名ちがうってすでに別物だし
俺ならはじめからListView5個用意しといて、選択されたものだけ表示する

テンプレートを動的にゴニョゴニョしてもできなくはないと思うが
めんどいので俺ならやらない
942デフォルトの名無しさん:2010/04/11(日) 00:09:28
>>939
ところでいつからコントロールの拡張の話になったんだい?
943デフォルトの名無しさん:2010/04/11(日) 00:12:51
>まあとにかく、継承(の乱用)の問題点を分かってる人が反省的にそれを
>言うならいいんだけど、単に継承そのものがわかんないお方がそれをいうのは
>いかにもVB厨的ではある。

継承すら分からんあほが拡張プロバイダとか使えるかよ…
944デフォルトの名無しさん:2010/04/11(日) 00:13:50
>「便利なものは便利に(以下略」って、お前便利だかその方法使ってるんじゃなくて
>それしか出来ねえだけじゃん、っていうw

まさに継承だよな。
945デフォルトの名無しさん:2010/04/11(日) 00:22:22
例えば一時的に、フォーム配下の全てのコントロールのEnabledをFalseにしたいって事があったとする、単に一例だが。

これを実現するなら別に専用のクラスを作るかユーティリティ的なメソッドをどこかに作るか、
もし場合によっては除外したいコントロールがあり得るなら拡張プロバイダに実装する。

継承とかフォーム自信に実装なんてあり得ん。
イベントも復号コントロールもあり得ん。

フォーム自身だけEnabled=Falseにしたらいいじゃんてのはナシな、
単に一例なだけだし、実際それでは駄目なこともあるから。
946デフォルトの名無しさん:2010/04/11(日) 00:26:23
でまあ、横断的な処理をしたいなら、まずなるべく継承を使わずにできないか考えるのは当たり前のこと。
あえて継承を使う場合はあるが、最初に最も慎重に判断するのが、まず継承を使ってもいいのかどうかってところ。
947デフォルトの名無しさん:2010/04/11(日) 00:34:47
とりあえず、
>>929
に対しての
>>934
は意味不明。
操作する可能性のあるコントロール全部継承するって正気かよって話。
948デフォルトの名無しさん:2010/04/11(日) 01:38:45
>>945
そんな実用的に意味のない例出しても仕方がないと思うけど。

そもそも何だよユーティリティー的な操作って。
君が自分で言ってるように、Form(コンテナ)のEnabledをいじれば済むことを
わざわざ愚直に全てのコントロールを再帰的に辿ってEnabledを設定するようなコードのこと?w

まあ、上のはただの煽りだけど、>>921で「特別な理由がない限り」と書いたように
確かに>>945の言う「ユーティリティ的なメソッド」が必要になる場合がないとまではいえない。

具体例を挙げると、メインメニューの項目を一時的にコンテクストメニューに
移すメソッドとかね。

ただ、こんなのは非常に例外的な稀なケースで、
こんなふうにコントロール(ToolStrip系はコントロールじゃないけどさw)
の参照を外部に渡していじらせる、なんてことは普通はしない。

というか、だからそもそものこの話題の始まりである>>897はそういうことを言ってるのかと。
明らかに違うでしょ。
949デフォルトの名無しさん:2010/04/11(日) 02:03:48
どうでもいいけど逆コンパイルされないアプリを作る場合には

.Netは捨ててネイティブC++で開発するしかない?

生産性を犠牲にしてまでもソースコードの盗難防止に力を注ぐべきか。
950デフォルトの名無しさん:2010/04/11(日) 02:29:50
>そもそも何だよユーティリティー的な操作って。
>君が自分で言ってるように、Form(コンテナ)のEnabledをいじれば済むことを
>わざわざ愚直に全てのコントロールを再帰的に辿ってEnabledを設定するようなコードのこと?w

それで済まない事があるってわざわざ書いたのに、ってかやってみれば違いが分かるだろ。
明らかに動作が違って、フォームではなく子コントロールで設定することに意味があるんだよ。
まああくまで一例で書いただけだけどな。

>まあ、上のはただの煽りだけど、>>921で「特別な理由がない限り」と書いたように
>確かに>>945の言う「ユーティリティ的なメソッド」が必要になる場合がないとまではいえない。

だから>>929では最初からそういう話をしていて、ユーティリティ的な機能をって限定的な話してるのに、
>>934みたいな反応しといて笑わせんな。

>ただ、こんなのは非常に例外的な稀なケースで、
>こんなふうにコントロール(ToolStrip系はコントロールじゃないけどさw)
>の参照を外部に渡していじらせる、なんてことは普通はしない。

お前にとってはユーティリティ的な操作は普通じゃないということは分かった。
別に普通にそういうことをすることもあると俺は言ってる。

>というか、だからそもそものこの話題の始まりである>>897はそういうことを言ってるのかと。
言ってないよ、俺は>>929から書いただけだから。
でもお前は>>929に対して>>934な反応してるんだ。
だから突っ込んだんだけ。

ていうか真面目な話、横断的にコントロールを扱うことって結構あると思うが、
全然そんな場面がないわけ?
951デフォルトの名無しさん:2010/04/11(日) 02:32:17
あっと俺が書いたのは>>928からだったわ。
952デフォルトの名無しさん:2010/04/11(日) 02:42:18
例えばフォーカスがあたった場合に、テキストを全選択状態にする、というよくある動作をさせたかったとする。

お前はどう実装するんだ?
Formに直接そういうコードを書くのか?
継承してカスタムコントロールにするのか?

俺はそんなことはしない。
953デフォルトの名無しさん:2010/04/11(日) 02:45:41
ユーティリティ的な機能を、それ用のクラスを作るか、元のクラスを拡張するかなんて
設計の方針の問題で、やりたいように実装すればいいだけの話
システム規模とか全体の設計とか作成する技術者のスキルとか考慮しないでどっちがいいとか
そんな話はただの宗教論だ

まあ、とかく他人のやり方が自分と違うと許せない人が多いんだな
これ以上は別にスレ立てるかなんかしてやってくれ
954デフォルトの名無しさん:2010/04/11(日) 03:41:19
>>911,に言え。
955デフォルトの名無しさん:2010/04/11(日) 05:52:20
>>952
どうするの?
956924:2010/04/11(日) 06:31:56
>>941
ありがとうございます。
実はそれも試したのですが、必要の無いListViewをVisible=Falseに
設定してもその場所に空間ができて画面が不恰好になってしまうのです。

957デフォルトの名無しさん:2010/04/11(日) 11:35:18
>>956
今試せないが、それはhtmlのスタイルの問題だと思うが
少なくとも今までのコントロールはVisble=Falseだとそこには何もレンダリングしない
だからその後ろの要素をちゃんと詰めるように指定しておけば空間が開いたりしないはず
958デフォルトの名無しさん:2010/04/11(日) 12:03:02
>>948
えーっと、まず前提として変なアプリを作るがそこは否定するなよ。あくまで一例だからな(俺が昔気が触れて作ったものだ)
operaのようなMDIのブラウザを作るときに、どうしてもあれをtextboxで実現したい!
という時に、ユーティリティー的な操作+継承をすれば解決。
継承はtextboxクラスにURL(string)や前回更新時間(date)などを登録してた気がする。
ユーティリティー的な操作を具体的に言うと、まずArrayListにtextboxをaddする。Dim vu As New ArrayListとする。
そして必要に応じて For Each xxxxx In vuのようにし、ブラウザ替わりのtextboxだけに処理させるというもの
場合によっては必要な人もいるんじゃないか
959デフォルトの名無しさん:2010/04/11(日) 12:05:43
なんだよアレって。
960デフォルトの名無しさん:2010/04/11(日) 12:07:52
それはユーティリティとは言わん
アプリケーションの本質的な動作じゃないか
961デフォルトの名無しさん:2010/04/11(日) 12:11:00
>>949
アセンブラでおk
962デフォルトの名無しさん:2010/04/11(日) 12:32:47
>>958
継承使う必要ない
TextBoxやURLや前回更新時間を保持するクラスを作るほうが素直
963デフォルトの名無しさん:2010/04/11(日) 13:19:02
>>952
そんなのはカスタムコントロールにするのが第一選択で、次がFormにベタに書く方法。
そんなものを実現するために別のクラスにTextBoxの参照を渡す、などは愚の骨頂だと思う。

一体どこに自分も自分の所有者でもない第三者を登場させて話を複雑にさせる合理性があるのかさっぱりわからない。
君は根本的にOOP的な思考ができないんじゃないの?

>>958
言ってる意味がわからない。
どうしてTextBoxの所有者であるMDI子ウィンドウではなく、それとは別にTextBoxだけを
集約したオブジェクトを用意する必要があるのか。
964デフォルトの名無しさん:2010/04/11(日) 13:27:20
>>953
そういう考え方してるといつまでたっても大きなプログラムが書けるようにならないよ。

コントロールにちょっとした付加機能を付け加えるだけの訳のわからんクラスが
登場するようなアホなコードなんか、規模が大きくなると書いてる本人だって
訳がわからなくなる。

「えーとこのTextBoxは一体全体どうしてこんな振る舞いをするんだ?」と
思っても、TextBoxはカスタムコントロールでもなければ、所有者(Form)がイベントを
捕捉して制御してるわけでもないんだから。

その振る舞いを解明するには、そのTextBoxの参照を握ってる別のオブジェクトによって実現されているんだ、
ということを発見する必要がある。

そんなパズルみたいなコード読んでられっかよここのお馬鹿さんどもは。
965デフォルトの名無しさん:2010/04/11(日) 13:39:31
はいはい。お前さんの言うとおりですよ。
すごいですね。
966デフォルトの名無しさん:2010/04/11(日) 13:47:52
>>964
昨日から見てるけどさ
いい加減鬱陶しい
そろそろ、よそでやれ
ここはVBスレで皆まったりやって来てんだよ
上から目線で俺スゲーしたいならC#スレでも行って思う存分暴れてこい
967デフォルトの名無しさん:2010/04/11(日) 13:52:13
>>966
なんで「論争」の片方の当事者だけにそういうこと言うわけ?
まあ、騙るに落ちてるなw
968デフォルトの名無しさん:2010/04/11(日) 13:56:55
>>967
>> 910くらいから読み直して来い
どいつが原因なのか良く分かるから
969デフォルトの名無しさん:2010/04/11(日) 14:11:07
じゃ、どっちもいい加減にしろ。

これでいいな。
970デフォルトの名無しさん:2010/04/11(日) 14:12:41
何かアホが勘違いしてるみたいなので白状しておくけど
>>919,926,966,968 が俺

昨日パチンコ行く前にくだらねぇレス付け合ってる奴らがいるなぁと思って
それで、負けて帰って来たら、まだやってんのかよ
で、今日になってもまだやってるしよ

いいかVBスレはな
> クラスってなんですか〜?
> インスタンスってどうやって使うの?
こうゆうまったりした流れなんだよ

これからまたパチンコだ
帰って来るまでには、いつもの流れになってる事を期待する!
971953:2010/04/11(日) 14:19:48
俺が大きなプログラム書けるかどうかは大きなお世話です
これ以上やりたいならよそでやってください

OOPの設計に関して議論するスレでも立てたら?
そこでならある程度お前の意見に同意してやるが

多人数のプログラマでシステム作成してるときに交じってほしくないタイプだな
972デフォルトの名無しさん:2010/04/11(日) 15:38:51
パチするよりコーディングしてろよw
せっかくの休みなのに朝鮮ゲームとかw
973デフォルトの名無しさん:2010/04/11(日) 17:31:19
キムチくさ・・
974デフォルトの名無しさん:2010/04/11(日) 17:44:09
>>970
あなたは配列やカプセル化などちゃんと使ってますか?
975デフォルトの名無しさん:2010/04/11(日) 19:08:23
配列とカプセル化ってまた微妙な取り合わせだな…
976デフォルトの名無しさん:2010/04/11(日) 19:35:31
俺が読んだ入門書にはセットで教えられたわけだが
977デフォルトの名無しさん:2010/04/11(日) 19:36:47
クラス内部の配列をプロパティで直接公開するとカプセル化崩壊だよ
978デフォルトの名無しさん:2010/04/11(日) 19:41:42
質問です。
オブジェクトの開放にはNothingを代入するって聞いたのてすが、
明示的にNothingを入れなくても、参照している変数がなければ、
ガベージコレクタが、適当なタイミングで開放してくれますか?

' あまり良い例ではありませんが
Dim A As Object = New myClass1
… ' 何らかの操作
A = Nothing ' ← 必要ですか?
A = New myClass2
… ' 何らかの操作
A = Nothing
979デフォルトの名無しさん:2010/04/11(日) 19:44:03
>>978
>オブジェクトの開放にはNothingを代入する
そもそもこれが間違ってます
.NETではNothingを代入するのはほとんどの場合意味がありません
使わなくなったらほっとけばGCに回収されます
980デフォルトの名無しさん:2010/04/11(日) 19:51:06
> .NETではNothingを代入するのはほとんどの場合意味がありません

どういう場合で意味があるんですか?
981978:2010/04/11(日) 19:52:57
>>979
ありがとうございます。
つまり、参照元がなくなったオブジェクトは、
適当なタイミングでGCに回収されるから、
参照が終わったらNothingを代入するとかは必要ないんですね。
982デフォルトの名無しさん:2010/04/11(日) 19:54:31
>>980
インスタンスAがフィールドとしてインスタンスBへの参照を持ってて
Aはまだ使うけどBはもういらない場合、Nothingを代入すればBをGC対象にできる
983デフォルトの名無しさん:2010/04/11(日) 20:01:30
忘れちゃうから、常にNothingするようにしとこーっと。
984デフォルトの名無しさん:2010/04/11(日) 20:09:28
それがいらないのがVBのいいとこなのに・・
985デフォルトの名無しさん:2010/04/11(日) 20:10:44
>>980
VB的には、WithEvents付きの変数の場合は特に意味があるね。

というか、FormのフィールドをWithEvents付きにした場合でかつ
イベントハンドラでForm上のコントロールを弄ってる場合は(ほとんどの場合そうだと思うけど)
FormClosedとかでNothing入れておかないとまずいケースもある。
986デフォルトの名無しさん:2010/04/11(日) 20:41:26
どうまずいの?
ほとんどの場合、イベントハンドラはフォームのメソッドだろうし。
どっちかっていうとほとんどの場合はまずくないと思うが…
987デフォルトの名無しさん:2010/04/11(日) 20:44:23
まあ、イベントハンドラの登録が盲点になりやすいのは同意するけどね。
現実にはそれで引っかかることって、普通に作ってればあまりないような気もするのよね。
988デフォルトの名無しさん:2010/04/11(日) 20:50:47
>>985
普通はフォームとコントロールの寿命は一致するから問題ない
989デフォルトの名無しさん:2010/04/11(日) 21:00:17
>>988
それは.NETの世界ではその通りなんだが、
コントロールみたいにWin32の世界ではそうじゃない。

現実問題、ハンドルが破棄されたコントロールを操作することになって例外が発生する場合がある。
990デフォルトの名無しさん:2010/04/11(日) 21:04:56
イベントハンドラとGCの関係で一番注意が必要なのは
Sharedイベントに登録したイベントハンドラの外し忘れ
参照を掴みっぱなしになるからNothingを代入しようが関係なく確実にメモリリークする
991デフォルトの名無しさん:2010/04/11(日) 21:14:24
>>989
でもさ、フォームを閉じた後に、ハンドルが必要になるような操作を行うようなイベントが発行されるような操作を、
コントロールに対して行うことって普通あるかな?
そして、あったとして、それはコントロールにNothngを代入することでかいけつするような問題かな?
ってとこなんだよね。
むしろ問題があるなら、ハンドラ側で調整すべきな気もする。
992デフォルトの名無しさん:2010/04/11(日) 21:19:43
>>990
それさ、確かに盲点的で気づきにくいのは確かなんだけどさ、
そこで問題になるほどリークが発生するような状態になることって
少ないと思うんだよね。

まず、静的イベントに大量に登録するのは、普通に組んでてやることって少ないと思うんだよね。
んで、イベントに登録するのは多くないけど、その登録される一個のオブジェクトが巨大だとか、
そういうことはあり得るけども、大量データを持ちつつ静的イベントに登録するなんてのは、
元々寿命が長いオブジェクトな事が多い気がするんだよね。

となると、後は大量データとかをメンバに保持しながら、静的イベントに登録して、
すぐに不要になるオブジェクトとかなんだけど、そういうのって普通に作ってるとあまりない気がする。
993デフォルトの名無しさん:2010/04/11(日) 21:31:18
>>964
拡張プロバイダとかならそんなことにはならないよってかならないように作るわな、当たり前。

ToolTipが表示されたとき、このテキストボックスはなんでこんな動作をするんだ、
カスタムコントロールでもないのに、どこで制御してるんだ、発見できない、なんてことにはならないだろ?

まあ全選択状態にするとかはテキストボックス系のコントロールに限った話になるが、
要はいろんなコントロールに対して横断的な処理を行いたいとき、コントロールを拡張するって方法だと、
使うコントロールをみんな拡張する必要がある、そんなのはあまり好ましくないってこともある。
拡張した各コントロールでそれぞれそういう処理を書くことになるんだぜ?
だってまとめてどっかに書いたら、それはつまりユーティリティ的な機能を作るってことだからな、それはだめなんだろ?
994デフォルトの名無しさん:2010/04/11(日) 21:34:26
ともかく、横断的な観点で何らかの処理を行いたいとき、
クラスを拡張して各クラスに書くってのは、もはや一般的にもあまり推奨されないやり方になってる。
995デフォルトの名無しさん:2010/04/11(日) 21:37:25
>>992
静的イベントに限らないよ
メインフォームにサブフォームのイベントハンドラを登録したりすれば同じ
996デフォルトの名無しさん:2010/04/11(日) 21:41:29
まあ静的イベントの話で書いたんで。

>メインフォームにサブフォームのイベントハンドラを登録したりすれば同じ
これも確かにそうなんだけど、普通気づくんじゃないかなって気がする。
いや、気づかんかなー
997デフォルトの名無しさん:2010/04/11(日) 21:43:17
WPFだとWeakEventパターンの登場だな。
998デフォルトの名無しさん:2010/04/11(日) 21:50:18
.NETリリースする最初に気づいてればよかったのにな、WeakEventの必要性。
999デフォルトの名無しさん:2010/04/11(日) 21:50:33
ちゃんとGCとイベントの仕組みを理解してないとわからないだろうな
わかってなくても一つ覚えでこうすれば問題無いというような話じゃないんで
1000デフォルトの名無しさん:2010/04/11(日) 21:50:33
要するにデータベースの操作でOpenしたものを必ずCloseしろってのと同じで、
イベントハンドラも追加したら必ず削除しろってことでOK?
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。