VB.NET質問スレ (Part ..
[2ch|▼Menu]
116:108
06/08/22 15:56:59
>109-112
1、Button1でタイマースタート。 Label2,Label3に乱数表示開始。
2、Button2でタイマーストップ。Label2,Label3に表示されている乱数をa,bに数値として代入する。
3、a,bが同じ数であった場合のみ、再度、自動的に選び直させてLabel2,Label3に表示させる。


明らかに滅茶苦茶かもしれませんが、以下を試しても無理でした。

Do
Timer1.Enabled = True
If Timer1.Enabled = True Then
Timer1.Enabled = False
End If
Loop Until a <> b


a,bの値が変わってないと仰るのも、どうしてであるのかよくわからないので、是非ともご教授下さい。

そして、スレ違いのようですので、然るべきスレへのご誘導も宜しくお願いします…


117:デフォルトの名無しさん
06/08/22 16:17:25
>>116
Rnd()のシードが変わらないからずっと同じ値が帰って来てるんじゃないの?


118:デフォルトの名無しさん
06/08/22 16:22:34
>>116
ここでいい。
ここがお前様を立派な(?)プログラマにしてくれる(はず)。
・・・ところで試さずに聞くけど乱数ってちゃんと違うものになるか?
シード値とか無いと同じタイミングで作られた乱数って同じになるような無いような・・・。
まぁお前様よりドヘタレな俺の与太だから忘れてくれ。

119:デフォルトの名無しさん
06/08/22 16:29:09
> Timer1.Enabled = True
> If Timer1.Enabled = True Then
んと

120:デフォルトの名無しさん
06/08/22 16:52:46
>>116
初めにそれを書けばすぐ解決してたぞ

Private Sub Button1_Click()
Timer1.Enabled = True
End Sub

Private Sub Button2_Click()
If Label1.Text <> Label2.Text Then
Timer1.Enabled = False
End If
End Sub

Private Sub Timer1_Tick()
Label1.Text = CInt(Rnd() * 52)
Label2.Text = CInt(Rnd() * 52)
End Sub


121:デフォルトの名無しさん
06/08/22 17:00:41
> 3、a,bが同じ数であった場合のみ、再度、自動的に選び直させてLabel2,Label3に表示させる。
は、そういう意味なの?

122:113
06/08/22 17:14:49
質問が意味不明ですか?
それともアホすぎる質問なのかな・・・

123:デフォルトの名無しさん
06/08/22 17:16:51
>>113は乱数君と同一人物?

124:デフォルトの名無しさん
06/08/22 17:19:25
>>122 素直に こうしとけば?
do
 do

 loop until a=b
loop until a=b

125:113
06/08/22 17:50:58
なんだか自分でもわけわからなくなってきたので出直します。

>>123
いや今日から始めたので違います。

126:デフォルトの名無しさん
06/08/22 18:08:58
>>121
確かにそこを正確に説明しないと伝わらない

127:116
06/08/22 18:35:21
>117
是非に、詳しい具体策をお教え下さい!

>120
コードを書き直して、Int→CIntにもしましたが、同じ数が表示されて思うようにはなりませんでした…

3、a,bが同じ数であった場合のみ、再度、自動的に選び直させてLabel2,Label3に表示させる。
というのは、単に、結果としてLabel2とLabel3に表示されている数が異なれば良いんです。助けてください…

128:デフォルトの名無しさん
06/08/22 19:39:21
>>127
>>101では駄目なの?

129:116
06/08/22 19:45:42
>118
忘れてました…
ちゃんと違う値になる事の方が多いですが、デバックモードはコンピュータがあらゆる場合を試そうと判断しているのか、数回繰り返しているだけで2数が一致したりします(一致するのは1/52の確率です)。

130:デフォルトの名無しさん
06/08/22 19:52:29
「はぁ〜 プップクプ〜ッ ♪」
   ∧_∧   ∧_∧  ∧_∧
  (・ ε ・)  (・ ε ・)  (・ ε ・) 
  ⊂    つ ⊂    つ ⊂    つ
   (_)`J   (_)`J   (_)`J
    「やれ プップクプ〜 ♪」
    ∧_∧  .∧_∧   ∧_∧
  ∩ ・ε・ ∩ ∩ ・ε・ ∩ ∩ ・ε・∩
   〉    ノ 〉    ノ 〉    ノ
   し´ (_)  し´ (_)  し´ (_)
「 アキヒロ〜音頭で プップクプーの プ♪」
   ∧_∧   ∧_∧  ∧_∧
  (・ ε ・)  (・ ε ・)  (・ ε ・) 
  ⊂    つ ⊂    つ ⊂    つ
   (_)`J   (_)`J   (_)`J


131:デフォルトの名無しさん
06/08/22 20:33:37
>>116
>>a,bの値が変わってないと仰るのも、どうしてであるのか

aとbは値型でしょ?
参照型ではないから

>>Do
>> Label2.Text = Int((52 * Rnd()) + 1)
>> Label3.Text = Int((52 * Rnd()) + 1)
>>Loop Until a <> b

これでは、Label2.TextとLabel3.Textの値は変わるけどaとbの値に変動はないんだから、永遠ループに入ると思うんだが。

132:116,127
06/08/22 21:11:22
>128
>101でもダメでした…

>131
Do
Label2.Text = Int((52 * Rnd()) + 1)
Label3.Text = Int((52 * Rnd()) + 1)
a=Val(Label2.Text)
b=Val(Label3.Text)
Loop Until a <> b

もしくは
Do
Label2.Text = Int((52 * Rnd()) + 1)
Label3.Text = Int((52 * Rnd()) + 1)
a=Str(Label2.Text)
b=Str(Label3.Text)
Loop Until a <> b
としてみます。
ありがとうございます!

133:デフォルトの名無しさん
06/08/22 21:27:46
それよりも、何でラベルのテキストを変更してからそれを変数に取ろうとするの?
普通変数に受けてそれをコントロールに落とそうとしない?
オレはコントロールはあくまで人間とのインターフェースだと思ってるけどな

134:デフォルトの名無しさん
06/08/22 21:36:29
それよりも彼の場合まずロジックを考えられるようになる方が先決。

135:デフォルトの名無しさん
06/08/22 21:48:05
ちょっとした疑問なんだが、

>>Do
>>Label2.Text = Int((52 * Rnd()) + 1)
>>Label3.Text = Int((52 * Rnd()) + 1)
>>a=Str(Label2.Text)
>>b=Str(Label3.Text)
>>Loop Until a <> b

タイマーで乱数まわす意味あるのか?
シード設定もしてないようだし。

136:デフォルトの名無しさん
06/08/22 22:07:42
そもそも>>120でやっても
>>127
> コードを書き直して、Int→CIntにもしましたが、同じ数が表示されて思うようにはなりませんでした…
と、「同じ数が表示された」ってことなんだから、何か根本的に間違ってる/理解していないと思う。

137:89
06/08/22 22:26:52
>>120
button2押しても止まらないときがあるような・・・

>>135
スロットっぽくしたいんじゃないの?

ちなみに俺が言いたかったのは、Timer1_Tickで
Do
a = CInt((52 * Rnd()) + 1)
b = CInt((52 * Rnd()) + 1)
Loop Until a <> b
Label1.Text = a
Label2.Text = b
まぁ、選びなおしは停止するタイミングでやった方がいいかもね

138:デフォルトの名無しさん
06/08/22 22:54:52
>>137
「同じだったら止まらない」仕様通りでは?

139:デフォルトの名無しさん
06/08/23 00:04:39
なあ、俺の思い違いだったらいいんだが。

スロットって回転してる間は、別に表示してる値の評価なんてしなく
てもいいんでないか? ストップボタンを押した時に、初めて表示さ
れてる値を比べて、当たり外れを付けるもんだろ?

140:デフォルトの名無しさん
06/08/23 00:06:05
誰が比較して当たり外れを付けろと

141:デフォルトの名無しさん
06/08/23 00:17:12
例え確立やタイミング的に大丈夫でもTimer内でLoopは嫌だな。俺は。
それはさておき、
> まぁ、選びなおしは停止するタイミングでやった方がいいかもね
を考えてと、質問者のやり方に近い作りにすると、たったこんだけ。効率とか他の仕様とかコーディングポリシーとかは無視して。
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
hoge()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Timer1.Enabled = True
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Timer1.Enabled = False
Do Until Me.Label1.Text <> Me.Label2.Text
hoge()
Loop
End Sub
Private Sub hoge()
Me.Label1.Text = CInt((52 * Rnd()) - 1)
Me.Label2.Text = CInt((52 * Rnd()) - 1)
End Sub

要は質問の仕方の悪さで長引いただけだと。

142:デフォルトの名無しさん
06/08/23 00:52:40
ここは
 値型と参照型
 値の代入と参照の代入
の区別がつかないヒドイ言語ですね

どうしてこのような言語仕様になっているか
エロイ人教えてください。

143:デフォルトの名無しさん
06/08/23 01:06:29
何処の受け売り?

144:デフォルトの名無しさん
06/08/23 01:22:48
>>142
またC++の悪口か

145:デフォルトの名無しさん
06/08/23 01:36:58
ところでスロットを作りたいのでなければ何を作りたかったのだろうか

146:デフォルトの名無しさん
06/08/23 08:30:41
> スロットを作りたいのでなければ
同じ数値を排除したいって言ってるので最初っからスロットなんて考えられないのに。

147:デフォルトの名無しさん
06/08/23 09:41:41
>>84でスロットという言葉が出ているんで仕方ないんでないか?

148:デフォルトの名無しさん
06/08/23 10:23:10
絶対に当たらないスロットを作って稼ごうとしたのでは

149:デフォルトの名無しさん
06/08/23 10:59:17
Datagridviewをコード内で作成したDataTableにバインドして利用しようとしています。
データを表示するまでは可能なのですが、DataTableにデータを追加してもDatagridviewが更新されないで
表示が固まってしまいます。再描画?か何かが必要なのだと想像するのですが、分かりませんでした。
InvokeとかBackgroundworksなどを使うと良いとはあったのですが、理解できませんでした。
どのように処理すれば良いのでしょうか?よろしくお願いします。

(こんな感じのコード)
Dim ds as Dataset
Dim dt as Datatable
Dim bind1 As BindingSource

Sub form1_load() Handles MyBase.Load
ds.Tables.Add(dt)
dt.Columns.Add("column1", GetType(String))
(以下略)

bind1.DataSource = dt
Datagridview1.DataSource = bind1

End Sub

Sub test()

Dim Row as DataRow
Row = dt.NewRow
Row(0) = "a"
Row(1) = "b"
dt.Rows.Add(Row)

End Sub


150:デフォルトの名無しさん
06/08/23 11:50:22
テキストファイル読み込みは
textfieldparserとstreamreaderどっちを使ったらいいの?

151:デフォルトの名無しさん
06/08/23 12:35:59
読んで字の如く

152:デフォルトの名無しさん
06/08/23 12:55:37
>>150
中身による。

153:デフォルトの名無しさん
06/08/23 16:40:42
>>151-152
textfieldparser
テキストの分野の解析?
streamreader
流れながら読む?

csvとかにはtextfieldparserで
通常はstreamreaderってことですかね


154:デフォルトの名無しさん
06/08/23 17:00:05
>>153

>>2
MSDN
URLリンク(msdn2.microsoft.com)

textfieldparser
>構造化テキスト ファイルの解析に使用するメソッドとプロパティを提供します。

streamreader
>特定のエンコーディングのバイト ストリームを読み込む TextReader を実装します。


とりあえず、読んだ方がよいかと。

155:デフォルトの名無しさん
06/08/23 21:38:07
Do-Loopキモイ。

156:デフォルトの名無しさん
06/08/23 21:42:09
乗り遅れ突っ込みもキモイ

157:デフォルトの名無しさん
06/08/23 23:33:27
うそつきはDoLoopのはじまり

158:デフォルトの名無しさん
06/08/24 08:10:35
>>154
おお、ありがとう。

159:デフォルトの名無しさん
06/08/24 09:19:11
最近はMSDNすら見ないのか・・・・・

160:デフォルトの名無しさん
06/08/24 11:32:50
ここの議論はいつも Do Do めぐり。

161:デフォルトの名無しさん
06/08/24 17:51:13
URLリンク(homepage1.nifty.com)

ここ見ながら勉強してるんだけど、
graphicsで描写したものを消すにはどうしたらいいの?

一度最小化するとかってのは無しで・・・。

162:デフォルトの名無しさん
06/08/24 17:56:05
無限ループしたらパソコン壊れますか?

163:デフォルトの名無しさん
06/08/24 18:41:08
デルノートなら爆発もありうるな

164:デフォルトの名無しさん
06/08/24 19:05:46
>>161
Invalidate

165:デフォルトの名無しさん
06/08/24 21:06:59
VB2005の解説サイトで良いところありませんか?

Cなんかは簡単に見つかりましたが、
VBではテンプレみてもどれがいいのか、
何を書いているのかほとんどわかりません。
>>161みたいなものがいいのですが、
あまり体系立った説明がされていない
(後回し後回しで要点がつかみ難い)
のでわかりにくいです。

具体例を用いてあると尚良いのですがどこかありませんか。

166:デフォルトの名無しさん
06/08/24 21:23:36
>>165
>>3-5

167:デフォルトの名無しさん
06/08/24 21:49:23
テンプレみてもどれがいいのか
何が書いてあるのかほとんどわかりません…
ある程度基本が身に付いた人であれば
知りたい情報はどこにあるか見当もつけられると思うのですが
現時点では>>3-5のサイト一通り巡回してもわけがわかりませんでした。
あと、関係ないのも多数混じっていませんか?


168:デフォルトの名無しさん
06/08/24 21:55:17
>>164
さんくす。でも具体的な使い方はどうやればいいの?
MSDNで検索したけどワカラン

たとえば
ボタン1をクリックしたらピクチャーボックス1に黒い円が浮かび上がって
ボタン2をクリックしたらその円が消えるようなプログラムは
どうする?

169:デフォルトの名無しさん
06/08/24 22:11:53
>>168
背景色で塗りつぶしたらよかんべえ




170:デフォルトの名無しさん
06/08/24 22:13:46
>>167
「あまり体系立った説明がされていない」なんてえらそうなこと言う
前に、まずどこでもいいからひとつでも全部通して読むべきだよ。い
まの「どこがわからないのかわからない」状態から脱したいならね。

171:デフォルトの名無しさん
06/08/24 22:16:16
だるまの目を塗りつぶしたいんだけど、
背景色で塗りつぶすとだるまも消えちゃう・・・。
だるまも再表示するようにしても、うまくいかないのよー

172:161・168・171
06/08/24 22:19:12
↑は>>169宛です

173:デフォルトの名無しさん
06/08/24 22:20:00
>>167
体系立った説明が欲しいなら、仕様書。これ。
URLリンク(msdn.microsoft.com)

>>171
逆に考えるんだ
描画したものを消すと考えるんじゃない
描画したものの上から黒眼/白眼を書けばいいと考えるんだ

174:デフォルトの名無しさん
06/08/24 22:36:10
>>173
ありがと。考え方は理解できた。
でもだるまの目の部分よりも、塗りつぶす黒目が大きい場合はどうしたらいいの?

175:デフォルトの名無しさん
06/08/25 01:17:25
buttonの名前をいじってて
cancelbuttonにしたらエラーが多発してデザイン画面が出てこなくなった・・・。
いったん他の名前に変えて難を逃れたんだけど、
もともとのデザイン画面がでてこない・・・。
表示タブのデザインっていうの選んだらデザインタブでてくるよね?
再起動してもでてくるよね?

・・・出てこない。
・・・オワタ?

176:デフォルトの名無しさん
06/08/25 02:01:48
自分でデザイン部分のソース修正。

177:デフォルトの名無しさん
06/08/25 02:11:22
>>175
CancelButtonとかAcceptButtonは地雷。つかプロパティ名とかぶるのでそういうことになるよ。
フォーム名.Designer.vbをごりごり修正。

178:デフォルトの名無しさん
06/08/25 08:38:42
FlexGridで処理後に次の行特定の列を選択した状態にしたいのですが、
選択するとそこがboolreanで勝手にチェックがはいってしまいます。

FlexGrid.cols(4).type=boolrean
FlexGrid.select(3,4)

初歩的だと思いますが何か設定があるのでしょうか?

179:デフォルトの名無しさん
06/08/25 09:18:23
boolrean

180:デフォルトの名無しさん
06/08/25 12:10:23
DataGridViewの中にコンボボックスをいれたいんだけどどうすんの?

181:デフォルトの名無しさん
06/08/25 12:33:00
いれればいいじゃん

182:デフォルトの名無しさん
06/08/25 14:45:26
それがわからんのです(´;ω;`)ブワッ

183:デフォルトの名無しさん
06/08/25 14:54:09
DataGridViewの、コンボボックスにしたい列をコンボボックスにしてあげればいいと思うよ。

184:デフォルトの名無しさん
06/08/25 15:03:14
そのままやんけ!って思ったけどそのままやったんですね。
できました。どうもありがとうございます。<(_ _)>

185:178
06/08/25 18:36:20
自分で解決できました。
ただ単にarrolweding=falseにするだけでした。

186:デフォルトの名無しさん
06/08/25 20:29:54
arrolweding

187:チョ初心者
06/08/25 21:02:24
クラスにテキストボックスそのものを渡して
キーコードに応じて処理をしてテキストボックスの中身を変えて戻す
そうゆうのって問題なしですか?


188:デフォルトの名無しさん
06/08/25 21:35:09
それにキモさを覚えなければ問題ないが、
それにキモさを覚えないのには問題があるな

189:デフォルトの名無しさん
06/08/25 21:42:37
>>187
そうしたい理由や手順をフローにして書いてみそ。
もっと洗練されたやり方があるかもしれない。

190:デフォルトの名無しさん
06/08/25 22:46:28
助けてください。いろいろ調べたのですが、うまく出来ません。

参照の循環する依存関係で苦しんでます。
同じソリューションの別プロジェクトの画面遷移をしたいです。
スタートアップのA画面からB画面へ、そしてB画面からA画面へ
戻る遷移になります。つまり、相互遷移です。
B画面が開いたら、A画面は閉じるのが条件です。
で、双方のプロジェクトに参照設定を試みました。
下記の図です。
ソーリューション
 |
|-プロジェクトA
参照設定(FormB.dll)
   FormA
|-プロジェクトB
   参照設定(FormA.dll)
FormB
当然ながら、循環参照でエラーとなります。

基礎的な事でしょうが、
まだ、開発経験が浅く、どう調べていいかがわかりません。
ヒントなりもといただきたいと考えております。
よろしくお願いします。

191:デフォルトの名無しさん
06/08/25 22:53:26
流れを管理するプロジェクト C を作って、C が AB を参照。
AB は他は気にせず自分の事だけやればよい。

192:190です。
06/08/25 22:54:28
書き残しました。
共通部分をクラスライブラリとして括り出して、それを参照する
とういう方法論までは、わかったのですが、
そこから先がわかりません。
下の図のように、新プロジェクトを作成し、
そこで、イスタンス化を計ったのですが、
やはり、循環参照でエラーになります。
ソーリューション
 |
|-新プロジェクト
参照設定(FormA.dll,FormB.dll)
classA
|
 |-プロジェクトA
   参照設定(classA.dll)
   FormA
 |-プロジェクトB
   参照設定(classA.dll)
   FormB

193:デフォルトの名無しさん
06/08/26 01:00:09
っていうか、プロジェクトとか、クラスライブラリを参照するってことの意味を
何か勘違いしているような。。

いやそれ以前にクラスって概念からしてわかってないんじゃねえの?
フォームなんてハリボテに過ぎないもの、推移とかいったって所詮
表示したり消したりするだけのことなのに、いちいち画面ごとにプロジェクト分ける気か?

194:187
06/08/26 03:12:35
>>189
遅くなりましたが…
理由は入力チェックをクラスで纏めたい為です。
・エスケープなら指定オブジェクトへフォーカスを移す。
・リターンなら種類によってコードチェック
次のオブジェクトにフォーカスを移す。
・入力ミスならエラー表示をする。
と、そんな感じにしたいのですが
フォーカス指定と入力テキストボックスで3つもオブジェクトを渡すのってマズいのかな…と

先生方、もっとカコイイやり方があれば是非ご教授下さい
始めたばかりで、クラスとかもよく分かってないですが…(つД`)


195:デフォルトの名無しさん
06/08/26 03:27:21
>>194
単にチェック&エラー表示したいだけならErrorProviderがお手軽だけど。

196:デフォルトの名無しさん
06/08/26 03:57:15
過去に既出であったり、王道があれば教えてください。

WMPのように、多重起動せず受け取ったコマンドラインを
すでに起動している同じソフトに送信するのに
・APIのSendMessage GetMessege
・APIのSetProp GetProp
・127.0.0.1でSOCKET
・変数のポインタをどっかのファイルに書き込むorレジストリでそこを読んで 改変
・特定のファイルorレジストリでそこを監視
・.net新規のものでもっといいのあるよ〜

受け渡しは前述の通り、文字列だけです。
使用バージョンは VB.net 2005です。
これらの中で”一般的にはこれ”等あればご教授お願いします。

197:デフォルトの名無しさん
06/08/26 05:27:20
>>196
プロジェクト−プロパティ−アプリケーション「単一インスタンスのアプリケーションを作成する」。VB専用。

名前つきMutex(System.Threading.Mutex)を使う。C#でも可能、データの受け渡しは不可。


198:デフォルトの名無しさん
06/08/26 05:30:58
>>196
あとは、.NETリモート処理を使う方法もあるが、実例はあまり見たことがない。
.NET 2.0で追加されたIpcChannelが9x系ではエラーになるなど問題が多い。

199:デフォルトの名無しさん
06/08/26 07:42:50
Formにスナップ機能?winampのように他のウィンドウや画面の端にくっついたりするにはどうすればいいですか?
教えてください。お願いします。

200:190です。
06/08/26 11:55:03
>>193
すいません、正直、あまり、わかっていません。

動きは全て、仕様です。
Formの開閉時に、DBに接続して、Select,Update,Insertを
行う仕様になってます。

201:デフォルトの名無しさん
06/08/26 12:02:46
>>197-198
どうもありがとうございます。

単一インスタンスにすると2重起動時、
Loadなりなんなりで
後から起動したほうを終了して、
普通に宣言してある変数の内容を書き換えるだけで
すでに起動していた側からその変数を見たら変更されてて
この目的なら万事おk ってことですよね?

とりあえず試してくるw

202:デフォルトの名無しさん
06/08/26 12:11:29
そんなことしなくても後から起動されたほうは勝手に終了する。
先に起動してた方のMy.Application.StartupNextInstance イベントのパラメータに
後から起動したコマンドラインが渡されるので後はお好きなように。
つーかMSDN嫁。

203:デフォルトの名無しさん
06/08/26 12:17:23
>>202
そんな楽にできるのかw
MSDNじっくり読んできます〜
マジありがとう。

204:デフォルトの名無しさん
06/08/26 12:20:32
>>200
>>191さんが書いてるのは仕様に外れるからダメってことか?

205:149
06/08/26 12:33:16
その後色々と調べたところ、同じ症状の対策がでてました。

DataGridViewのスクロールバーがおかしくなる
URLリンク(dobon.net)


delegate void DataTableAddRowCallback(DataTable dt, DataRow dr);
private void DataTableAddRow(DataTable dt, DataRow dr)
{
if (dataGridView.InvokeRequired)
{
DataTableAddRowCallback d = new DataTableAddRowCallback(DataTableAddRow);
Invoke(d, new object[] { dt, dr});
}
else
{
dt.Rows.Add(dr);
}
}

//別スレッドから
DataTableAddRow(dataSet.Tables["TableName"], dataRow);


で、解決するらしいのですがC#はさっぱりで、VBに書き換えも撃沈しました。
どなたか、教えていただけないでしょうか。よろしくお願いします。

206:デフォルトの名無しさん
06/08/26 12:40:25
>>195 遅くなりましたが、有り難う御座いました
こんな見易い便利なの物があるんですねーー
初めてみました(´Д`)
複数コード入力した後の最終チェックなんかに使ってみたいです


とはいえ、やはりコード入力がものすんごいあるので
フォームでのコード入力のところをごっそり省きたい……
やはり、オブジェクト渡してやっちまいまつ(゚∀。)

207:デフォルトの名無しさん
06/08/26 12:47:17
>>205
>>149のコードを見る限りDataRowへのデータの追加を
別スレッドでやってるようには見えないんだが、そこんとこはどうなの?
同一スレッドでやってるんならリンク先の対策は役に立たないと思うが。

208:149
06/08/26 13:06:25
>>207
すいません、そうでした。現在のソースはこのような感じです。仮想モードは使っていません。

  Dim ds as Dataset
  Dim dt as Datatable
  Dim bind1 As BindingSource
  Friend WithEvents Bg_main As System.ComponentModel.BackgroundWorker

Sub form1_load() Handles MyBase.Load
  ds.Tables.Add(dt)
  dt.Columns.Add("column1", GetType(String))
(以下略)
  bind1.DataSource = dt
  Datagridview1.DataSource = bind1
  Bg_main.RunWorkerAsync() '別スレッドへ
End Sub

Sub Bg_main_DoWork() Handles Bg_main.DoWork
  Row = dt.NewRow
  Row(0) = "a"
  Row(1) = "b"
  dt.Rows.Add(Row)
End Sub

Bg_main.RunWorkerCompleted で追加を検出してMe.Refreshでも固まってしまいます。DataGridViewで何かイベントがいるのかな。

209:デフォルトの名無しさん
06/08/26 13:13:30
>>208
順序がおかしいな。
別スレッドで DataSet/DataTable にデータを突っ込む>元スレッドで DataSource に設定
だ。

> DoWork イベント ハンドラでユーザー インターフェイス オブジェクトを操作しないように注意する必要があります
と MSDN にあるが、 DataSource に設定済みの DataSet/DataTable への操作も UI の操作に当たる。

210:149
06/08/26 13:35:50
>>209
レスありがとうございます。
頻繁に書き換えがあるので、左記にDataSourceを割り当てているのです。
実際には、スレッドは沢山あって、それぞれにDataDableを更新しています。

その更新結果を、DataGridViewにリアルタイムで表示しているのですが、スクロールバーが出ると固まってしまいます。
MSDNにはUIを操作するなと書いてあるのは知ってますが、リアルタイムでデータが流れてくるので、別スレッドに流し込まない
と処理が間に合わないのが現状でして。

表示自体は、RunWorkerCompletedにMe.Refresh()を入れれば改善はされるのですが、やはり触ると固まってしまいます。
そこで、色々調べたら>>205の症状と似ていたので。

205のソースは、いろいろと変更して入れて見る努力はしたのですが、そもそも知識不足で理解できませんでした。

211:デフォルトの名無しさん
06/08/26 13:50:50
だったらこんなところに質問している間に理解しようとすればいいのに。
この人に限らないけど、ダメな奴っていうのは基本的に努力の方向が間違ってるよ。

212:149
06/08/26 13:55:24
>>211
C#のヘルプとか見ながら色々と試行錯誤しているんですけど、なかなか上手くいかなくて。。。。

213:デフォルトの名無しさん
06/08/26 14:06:52
いや、だからたぶんデリゲートとかスレッドがよく分からんのでしょ?
だったらまずそれを理解しろよ。でなきゃ埒があかん。小学生でもわかる理屈。
@ITとかCodeZineに解説あるし、別にたいして難しいもんじゃない。

214:デフォルトの名無しさん
06/08/26 14:15:37
> スレッドは沢山あって、それぞれにDataDableを更新しています。
ってアンタ……


なんか色々絶望的だな

215:149
06/08/26 16:32:56
Invokeを使ってもやっぱりかたまる。DataGridViewのイベント関係なのかも。


Delegate Sub DataTableAddRowCallback(ByVal dt As DataTable, ByVal dt_row As DataRow)

Public Class Form1

>>208と一緒

  Public Sub DataTableAddRow(ByVal dt As DataTable, ByVal dt_row As DataRow)
   If DataGridView1.InvokeRequired Then
     Dim d As DataTableAddRowCallback
     d = New DataTableAddRowCallback(AddressOf DataTableAddRow)
     Me.Invoke(d, New Object() {dt, dt_row})
   Else
     dt.Rows.Add(dt_row)
   End If
  End Sub

Sub Bg_main_DoWork() Handles Bg_main.DoWork
  Row = dt_temp.NewRow
  Row(0) = "a"
  Row(1) = "b"
  DataTableAddRow(dt, Row)
End Sub

End Class


216:デフォルトの名無しさん
06/08/26 19:00:19
ダメグラマが「固まる」って言葉が好きなのは法則か何かかねw

ダメグラマはなんでダメなくせになんでいきなり全部を完成させようとするんだろう。
そのくせ問題が起こると、「問題の切り分け」すらしようともせず、
全然見当違いのことを問題の原因だと思い込む。

もちろん彼はシンプルなコードを書いて、本当に彼が思っていることが
問題の原因なのか、確認しようともしない。

217:デフォルトの名無しさん
06/08/27 00:42:02
510 :ワールド名無しサテライト:2006/08/26(土) 09:43:50.46 ID:8fm3vXed
「やっぱりVBが悪いんじゃないか。VBなんて」
「いいえ。全ては使い方しだい。私たちがVBの本当の使い方を見せてあげますわ。」

218:デフォルトの名無しさん
06/08/27 13:02:03
スマートクライアント(リッチクライアント)についてサンプルが載ってる
本でいいのって無いですかね?

219:デフォルトの名無しさん
06/08/27 15:42:58
ネットで見つからなければ本も期待できないと思ったほうがいい

220:デフォルトの名無しさん
06/08/27 18:49:09
そっか、したら、もう少しネット浮浪者でがんばってみる。

221:デフォルトの名無しさん
06/08/28 01:05:59
>>215
同じインスタンスなら、Invokeなんてまったく意味ない。

単にロジックがおかしいんだと思うけど、
ソースコピって一からデバッグしてくれる親切な人なんていないんだからさ、
もうちょっと、的を絞って質問できないか?

あとデータ量が多いならMSDN読んで作り直したほうがいいかもしれない。


222:デフォルトの名無しさん
06/08/28 02:02:42
>同じインスタンスなら、Invokeなんてまったく意味ない。

( ゚д゚)



( ゚д゚ )

223:デフォルトの名無しさん
06/08/28 02:15:54
こっちみんな

224:デフォルトの名無しさん
06/08/28 05:08:38
みんな〜こっちこっち〜

225:デフォルトの名無しさん
06/08/28 16:07:38
VB.NET2003でTabControlついてですが
デフォルトでは標準コントロールらしく味がありません。
これはデザインを変更することは可能ですか?

226:デフォルトの名無しさん
06/08/28 16:47:53
継承して頑張ってみれば?


227:デフォルトの名無しさん
06/08/28 19:18:30
>>225

つ VB2005
話はそれからだ。



228:デフォルトの名無しさん
06/08/28 20:39:13
>>227
2005のはどんな感じですか?

229:デフォルトの名無しさん
06/08/28 22:24:41
私VB.NETの初心者です。
CopyMemory
の使い方が分からなくて、たまたま見つけた
URLリンク(www.winapi-database.com)
の例

Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" _
(Destination As Integer, Source As Integer, ByVal Length As Integer)

を試したらエラーしたので、二行目を適当に変更して

(ByVal Destination As IntPtr, ByVal Source As String, ByVal Length As Integer)

としたら無事動きました。
動いたのはいいのですが、これでいいのかどうかよく分かりません。
適当に勘で置き換えただけです。
それで質問なのですが、私が行った操作は、VBでは何という分野ですか?
こういうことに関してより詳しくなるためには、私は何を勉強すればいいでしょうか?
よろしく。


230:デフォルトの名無しさん
06/08/28 23:00:01
>>229
自学して理解できない人が触ったらだめだよ。そういうAPIは。
つりじゃなくまじめに。
子供には早いって奴。

231:デフォルトの名無しさん
06/08/28 23:34:36
>>229
P/Invokeだけど、
本当にCopyMemoryする必要があるの?
ライブラリ内で完結できるなら初学の頃はフレームワークの外にでるべきじゃない

232:132:乱数君
06/08/28 23:57:56
やっと時間を持てるようになり、皆さんのご意見を参考にさせていただいて、まずは、タイマーを外しまして(出来れば、タイマーを使ってスロットのようにしたかったのですが、背に腹は代えられません)、思うような成果が得られました。
ただ、以下のコードをButton1_Clickに記入しているにもかかわらず、

Do
Label3.Text = Int((52 * Rnd()) + 1)
h = Val(Label2.Text)
i = Val(Label3.Text)
Loop Until h <> i

何のコードも記入していないはずのButton2をクリックした時に、上記のイベントが起きます。(Button1をクリックした時には何も起きません。)
これは何故なのでしょうか…?

233:デフォルトの名無しさん
06/08/29 00:14:13
それは霊のしわざです

234:デフォルトの名無しさん
06/08/29 00:30:26
>>232
半年くらいコーディングやめてバカンスにでも行ってきたら?
つーか何で>>141とかでダメなのかと。

235:デフォルトの名無しさん
06/08/29 11:08:42
夏休みの宿題なんじゃねーの?

236:232
06/08/29 12:02:00
>234
Private Sub 『hoge』
というツール?がよくわからなかったので、参照が出来ませんでした…
>235
リミットはありませんが、何とか時間のある夏のうちに完成させておきたいんです。

237:デフォルトの名無しさん
06/08/29 12:15:31
>>236
> Private Sub 『hoge』
> というツール?がよくわからなかったので、参照が出来ませんでした…
これが仮に「釣り」ではなく真面目な回答なら、煽りでも何でもなく真面目な助言なんだが、
初心者向けの書籍を最低一冊は自分で購入して学習ないといけない。

238:デフォルトの名無しさん
06/08/29 12:17:45
>>236
どうやら Handles の意味も調べなおしといたほうがよさそうだな・・・

239:デフォルトの名無しさん
06/08/29 12:21:26
> Private Sub 『hoge』
> というツール?がよくわからなかったので、参照が出来ませんでした…

この時点でスルー決定でおk?

240:デフォルトの名無しさん
06/08/29 13:09:49
ワロタ


241:236
06/08/29 13:57:31
私は.NETしか使用した事がありませんから、>141に使われている言語全体が、私が使用しているものと違い、何の本を参考にしていいのかもわかりません。
少なくとも、『学生のためのVisual Basic .NET』(東京電機大学出版局)には、件のワードは載っていないと思われます。
どうかお知恵をお貸し下さい…

242:デフォルトの名無しさん
06/08/29 13:58:36
これは・・・

243:デフォルトの名無しさん
06/08/29 14:08:28
クマー

244:デフォルトの名無しさん
06/08/29 14:09:25
>>241
URLリンク(bookweb.kinokuniya.co.jp)
これか?
第6章に書いてないか?
"hoge"は命名の例え。"baka"でも何でも自分で付けるもの。
(各自コーディング規約に則っての修飾等は置いておいて)
普通はその自分で作った関数の機能がわかるように命名する。
関数に名前を付け、中身も(この例だとRnd()のある2行)記述し、使いたい各所でその名前にて呼び出す。
Private, PublicやSub, Functionについても第6章に書いてあると思われ。

君はその本を読んだのかもしれないが、理解も習得もしていないし断片を記憶に留めることもしていない。

245:デフォルトの名無しさん
06/08/29 14:11:56
>>241
目次で見る分には十分そうな気もするんだが。
URLリンク(www.tdupress.jp)

このあたりからやってみたらどうだろう?
URLリンク(www.seshop.com)

あと、>>141のコードを丸ごと動かしてみてトレースしてみたら?

246:デフォルトの名無しさん
06/08/29 14:16:56
> >141に使われている言語全体が、私が使用しているものと違い

この時点でスルー決定でおk?

247:デフォルトの名無しさん
06/08/29 14:20:43
foo() や bar() 関数(api?)をよく見るのですが、
どのリファレンスにも載っていません。
どうもいろいろな言語に共通しているようですが、
いったいどういう動作をするのでしょうか。教えてください。

248:デフォルトの名無しさん
06/08/29 18:42:43
また人に教えを垂れたい「答えたがりクン」と、友達がいないからこんなところでも
馴れ合いたい「馴れ合いクン」が湧いてくるんだろw

馬鹿なことだよな。
こういう奴らはどっちかというと本来質問する側にまわるヘッポコ野郎のくせに、
自分で自分の利用可能なリソースを破壊してることにも気づかないんだから。

こんな下らん馴れ合いが続けば、ある程度スキルがあるまともな奴から去っていくだろ。

249:デフォルトの名無しさん
06/08/29 19:17:46
本人乙

250:241
06/08/29 20:07:47
>244>245
>141のコードを記述してみると、確かに、うまく動作していました。プロシージャの項目と言わず、もっと精進していくつもりです。大変にお騒がせしました。ありがとうございます。

>248
きっと、ある程度スキルがある人の事は、ある程度スキルがある人にしかわかりません。揣摩臆測でしょう。

251:デフォルトの名無しさん
06/08/29 20:51:28
>>232

貴方のいうButton1_Click は、別にどんな名前でもいい。これは解るかな?
そして、好きなイベントをHandleできるということも解るかな?

コレが解ればなぜButton2をクリックしてButton1_Click が動くのかは理解できるだろう。



252:232
06/08/29 21:05:36
>251
ありがとうございます。今はわかりませんが、精進してわかり得るように努めます。

253:デフォルトの名無しさん
06/08/29 21:14:10
精進する気がある奴ならそんな程度の質問などしないはずだがね。
まあ人事だからどうでもいいけど。
ただ鬱陶しいから二度と来ないでは欲しい。

254:デフォルトの名無しさん
06/08/29 21:18:23
多重起動時のウィンドウ制御について教えてください。

アプリを多重起動させようとしたときに、
既に同じアプリが動いてれば、何もさせずに、
起動済みのインスタンスをアクティブにして、
2つ目に起動したインスタンスは何もせずに終了させるという
ロジックを組もうとしています。

インスタンスが起動済みかどうかは Process.GetProcessesByName
などを使って判別することができ、
1つ目のインスタンスにPostMessageでWM_USERを送り、
自分自身でアクティブ化させるという方法をとったのですが、
問題なのは、このアプリが最小化されたときは、タスクバーから消して、
トレイに格納するようにしていることです。
タスクバーから、ウィンドウを消してしまうと、
たとえアプリが起動していても、2つ目のインスタンスから、
1つ目のインスタンスのMainWindowHandleを取得しようとしても
0しか返って来なくなるようで、PostMessageが使えない状態です。
2つ目のインスタンスに何かメッセージを送る方法はないでしょうか?


255:デフォルトの名無しさん
06/08/29 21:36:33
>>254
単一インスタンスのアプリケーションを作成 ではだめなん?
だめだよね…

256:デフォルトの名無しさん
06/08/29 21:49:12
>>254
>>196以降のレスは読んでる?
つーか同一人物か?

257:デフォルトの名無しさん
06/08/29 22:06:28
Do-Loopキモイ。

258:デフォルトの名無しさん
06/08/29 22:22:26
.NETのdatagridviewに、VB6のmsflexgridでいう
margeColやmargeRowみたいな機能はありますか?
探すのですが、みつからない…Orz

259:デフォルトの名無しさん
06/08/29 22:27:16
ない

260:デフォルトの名無しさん
06/08/29 22:43:15
>>259
お答え有り難う御座いました
無いのですか…orz
編集とか出来るようなので、ないような予感はしてましたが…
(つД`)あぁ

261:254
06/08/29 23:13:32
>>255
単一でもアクティブにならないとダメなんで・・・

>>256
すみません、見逃していました
IpcChannelってのが使えそうなのでとりあえず試してみます。

262:デフォルトの名無しさん
06/08/30 00:38:03
DataGridViewに50列1万件程度のレコードを仮想モードで表示させています。
この状態で、画面をスクロールさせたり、複数セルを選択するたびに、
かなり画面がちらついてしまいます。
この現象を回避する良い方法はないでしょうか?

263:デフォルトの名無しさん
06/08/30 00:49:36
>>262

50万セルは大杉
DataGridViewに限らずもうすこし現実的な仕様を考えたほうがいい

普通にそれだけあったら絞るか分割するだろう。
50列も一度に見渡すよりも必要な列だけ見れたほうが扱いやすい事もある。
行の場合も必要な範囲をさくさく見れるほうが便利な事もある。
少なくとも1万行全部を見渡す必要なんて無いと思うが・・・

生データをただ丸ごと全部並んでればいいってもんじゃないだろお。
どうすれば最も扱いやすくなるかを考えなさい。


264:デフォルトの名無しさん
06/08/31 10:59:36
UIの仕様に話が変わってるなw

265:デフォルトの名無しさん
06/08/31 11:04:53
OS:Windows2000
言語:VB.NET(2003)

現在、CSVファイルとPDFファイルをそれぞれ暗号化し
メールで送信後、送信先で復号化して保存する
アプリケーションを作成しています。
そこで、
URLリンク(dobon.net)
を元に、暗号化と復号化機能を作成しました。

CSVファイルの暗号化、復号化は問題なく出来たのですが
PDFファイルを同じように暗号化し、復号化すると
復号化した後のPDFファイルを開くと
「この文章を開くときエラーが発生しました。
ファイルが壊れています。修復できませんでした。」
とメッセージが表示されうまく復号化出来ませんでした。
私なりに調べてみたのですが、どう解決すればよいかわかりませんでした。
どなたか、実装例や参考アドレスなどでも結構などで教えていただけないでしょうか?


266:デフォルトの名無しさん
06/08/31 11:07:55
マルチ乙

267:デフォルトの名無しさん
06/08/31 11:09:32
よくわからんが、それ対象がテキスト以外でも大丈夫なんか?

268:デフォルトの名無しさん
06/08/31 11:45:26
DecryptFileを下のやつに置き換えてないとか

269:デフォルトの名無しさん
06/08/31 12:27:28
OS:WindowsXP
言語:VB.NET(2003)

外部端子からの映像入力をリアルタイムでフォーム上に表示することって出来ますか?
出来ればやり方教えてください。

270:デフォルトの名無しさん
06/08/31 12:29:00
外部端子てなによ。キャプチャカード?

271:デフォルトの名無しさん
06/08/31 18:36:57
開発言語:VB.NET(Windowsアプリケーション)
    :SPREAD Windows FORM Edition

現在 VB.NETでフォーム上にSPREADを配置した
アプリケーションを開発しています。
そのスプレッド上の特定のセルに
フォーカスが当たった時、喪失した時に、
IMEの「全角あ」「半角ア」の制御を行いたいのですが、
なかなか実現できずに困っています。
どなたか同様の案件を実現された方がいらっしゃれば、
教えていただけないでしょうか?
よろしくお願いします。

272:デフォルトの名無しさん
06/08/31 21:08:27
パブリックな標準モジュールとクラスの差異ってばなんですか?????


273:デフォルトの名無しさん
06/08/31 21:13:13
今からVBを始めようと思っている超初心者です。
今日、PC屋に行ってVisual Basicを買おうと思ってみていたら、
Win2000とXPに対応していないものしか売っていませんでした。
Meに入るVBはどこで入手したらいいのでしょうか・・・・・・

274:デフォルトの名無しさん
06/08/31 22:41:19
>>272
たくさんあって書き切れない

>>273
VS買う金があるならOS買ってVB Express Edition使っとけ
いやまじで。

275:273
06/09/01 00:26:27
>>274
回答サンクスです
マジですか。。。
確かにVBに限らずいろんなソフトがxp/2000専用になってますもんね・・・(VB体験版もMe入らないみたいだし・・)
ありがとうございます。
xp検討してみます。

276:デフォルトの名無しさん
06/09/01 20:27:13
項目内容が同じdatatable1とdatatable2の両方を
datatable3に入れたいのですが可能ですか?


277:デフォルトの名無しさん
06/09/01 20:34:24
追記
1列ずつnewとaddで追加する方法以外で
無理ですか…?

278:デフォルトの名無しさん
06/09/01 21:54:01
insert into datatable3 select * from datatable1
insert into datatable3 select * from datatable2

279:278
06/09/01 21:55:23
あ、RDBじゃないのか。すまん。

280:デフォルトの名無しさん
06/09/02 00:26:12
>>276
最初にDataTable1の複製を作って、そこにDataSet.Mergeメソッド
で2の内容をくっつけるのはどうだろう?

URLリンク(msdn2.microsoft.com)

281:ぼよん
06/09/02 02:58:31
アニーメーションGIFを出力する方法ってご存知ありませんか?
標準のライブラリでできるのでしょうか?

282:デフォルトの名無しさん
06/09/02 03:21:05
どこに出力すんだ

283:デフォルトの名無しさん
06/09/02 06:16:04
VB.NET 2005 で
マルチスレッドWindowsサービスの
プログラムを作成しようとしているのですが
手持ちの本がサービスとスレッド関係の情報が
少ししか載っておりません。

先輩方で良い本をご存知の片がいらっしゃいましたら
教えて頂けませんでしょうか?


284:276
06/09/02 12:25:57
>>278 280 有り難う御座いました
思った感じに出来ましたーー


285:デフォルトの名無しさん
06/09/02 12:33:37
つーかそれ、VB.NETじゃなくてSQLの質問…

286:デフォルトの名無しさん
06/09/02 13:00:22
いえいえ、たぶんVB.NETで間違いないです
変数名 AS datatable

の関連です

親FILEと子FILEがあり
datatableへそれぞれdatatable1とdatatable2に入れてまとめた後、
ビューでソートしたものをdatagridviewに渡すべきか
rowをaddでゴリゴリ追加すべきか、悩むところです
(´Д`)


287:デフォルトの名無しさん
06/09/02 13:17:56
アフォの子は退場

288:デフォルトの名無しさん
06/09/02 13:59:54
もすかすて、SQLになるんですか…
まだVB.NET2005を触り初めて数日で
正直よくわかってません…orz



289:デフォルトの名無しさん
06/09/02 14:03:14
Mergeでいいやん

290:デフォルトの名無しさん
06/09/03 13:23:31
すいません、質問なんですが。
デバッグモードでプログラムを実行中に無限ループに陥ってしまった場合、
現在どのステートメントを実行しているか知る方法ってありますか?
VBというよりデバッガの質問になってしまっていますが、もしよろしければ
教えていただけないでしょうか。

291:デフォルトの名無しさん
06/09/03 13:39:28
妖しそうなコードの手前にブレークポイント置いてステップ実行。

292:デフォルトの名無しさん
06/09/03 15:46:44
大文字小文字を区別しないIndexOfって無いんでしょうか・・・
調べ方が悪いのかなorz

293:デフォルトの名無しさん
06/09/03 16:26:55
.NET 2.0/VB2005 なら String.IndexOf にオーバーロードがあるが、
それ以前なら Regex.Match でも使ってれば。

294:デフォルトの名無しさん
06/09/03 17:44:35
>>292
string.IndexOf(String, StringComparison)
string.ToLower.IndexOf(string)
string.ToUpper.IndexOf(string)

295:デフォルトの名無しさん
06/09/03 17:47:41
下の2つ、
比較先もToLower()/ToUpper()しなきゃだめじゃね?



296:デフォルトの名無しさん
06/09/03 19:18:24
日曜プログラマなんだけどVB.NETはgoto文使えないの?
VBはお気楽に使えるのがいいのにな


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5185日前に更新/247 KB
担当:undef