1 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 10:06:09 ] 前スレ VB.NET質問スレ(Part31) pc12.2ch.net/test/read.cgi/tech/1250930696/l50 テンプレは >>2-4 あたり
39 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 15:13:49 ] VB.NETの場合、通常はCallを記述したりしないのが流儀なんでしょうか
40 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 16:10:45 ] >>39 流儀ということは無いと思う。 ま、場合によっては複数人でそのコードを書く場合、引継ぎを考えて そういったルールを設ける場合もあるかもしれないけれど。 もしエラーが起きた場合、どこで起きているかを確認する為、 必ず返り値を取得し、確認するというルールがあるというのも きいたことはある。
41 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 17:10:41 ] 例外使ってれば全く不要だけどな
42 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 17:12:57 ] 何でもかんでも例外投げてりゃいい、ってもんじゃないけどな。
43 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:08:39 ] まあVB6のようにCallの有無で機能が変ったりしないからね。 意味のないものをわざわざ記述する意味は通常ないだろう。
44 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:41:46 ] &H00としたいんだけど&H0に変換されてしまう &H0=&H00で合ってる?
45 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:47:13 ] うん。
46 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 19:08:23 ] ありがとう!
47 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 23:37:24 ] 1秒ごとにタイマーでデータを更新してラベルに数値を表示するようになっているのですが、 文字を変更する際に、数値が変更前より上か下かでラベルの色を変えているのですが、 3秒後に元の色に自動的に戻るようにしたいのですが、どんな方法が良いでしょうか? 3秒未満にまた色の変更があったらそこからまた3秒をカウントしたいです。 たくさんのラベルの色を戻す処理が重なっても負荷が少なく、 フォームがフリーズしたような状態にならないようにしたいのですがどんな方法が良いでしょうか? >>23 さんありがとうございます。
48 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 01:31:24 ] >>47 メンバ変数か静的ローカル変数でカウンタ持ってタイマーのイベントが動く毎にカウントアップ 3回目が来たら色を元に戻せばいんじゃないかな? 途中で色が変わったらカウンタをクリアすればいいし フォームを止めたくないならDoEvents書くかワーカスレッド作るとか 初心者なんで見当違いだったらすいません というわけで質問させて下さい。 開発環境 :VB2005EE データベース : SQLSERVER2005EE 接続はSqlClientを利用しています。 データベースに20万件の初期データを生成するのですが 処理開始から終了まで平均して5分ほどかかります 大雑把に処理内容としては、SqlConnectionで接続して SqlCommandからInsert文をパラメータ差し替える形で発行します 課題として提出したらもうちょっと早くなるようにしてみてと 言われてしまい途方にくれています やはり作りが問題なのでしょうか? こういった場合どうするのが一般的なのでしょうか? また、あくまでVBから実行するようにとのことでストアドプロシージャは 使えません 微妙な内容で申し訳有りませんが宜しくお願いいたします
49 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 02:28:05 ] 大量データのINSERTならBULK INSERTを検討してみるとか msdn.microsoft.com/ja-jp/library/microsoft.sqlserver.dts.tasks.bulkinserttask.bulkinserttask.aspx 後、トランザクションは明示的に指定しているかい? SQL SERVERは既定のトランザクション管理モードを自動コミットとしているから 単純にINSERT文を発行するとその度にAUTO COMMITされる 大量に処理する場合は最初にBEGIN TRANSACTION、最後にCOMMIT TRANSACTIONとして TRY-CATCHで例外をROLLBACKしてやった方がいい まぁVB.NETというより内容的にSQL SERVERかな
50 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 10:18:30 ] まずは、どこに時間がかかってるのか確認することだな。 ファイルに吐きだして、BCP で突っ込む、ってのが一番速そうだけど。
51 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 17:44:58 ] こんな感じのコードなんですけど。Tryで囲んであるのに異常が起きた場合 「WiimoteException はハンドルされませんでした。」のダイアログが出るです。 exをExceptionにしてもcatchされずに↑の例外ダイアログが出るです。 どうなってるの? Try ' Wii リモコンに接続する wiimote.Connect() Catch ex As WiimoteException MessageBox.Show(ex.Message) End Try
52 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 17:55:20 ] Connect呼び出し以外で投げられてんじゃね?
53 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 17:57:33 ] たぶん別スレ
54 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 17:58:32 ] そのライブラリ?がマルチスレッドでふぁ
55 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:04:49 ] ほんとにそこで例外が発生してる?
56 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:19:24 ] 本当にそこで発生してます。 wiimote.Connect()にブレークポイントして調べた。
57 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:20:07 ] っ ttp://www.atmarkit.co.jp/fdotnet/dotnettips/320appexception/appexception.html
58 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:25:59 ] そういう問題ではなかろう…
59 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 18:29:23 ] >>56 ブレークポイントしたらどうなったんだ? 普通に考えれば有り得ない気がするんだが。 ちなみにキャッチブロックにブレークポイント仕掛けても止まらないんだよね?
60 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:12:34 ] DLLの中って落ちだろ
61 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 19:51:18 ] >>60 オチというか、たぶんそうだろうねえ。 ならそのまま[F5]押して継続すれば何も問題ない。
62 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 22:58:38 ] プログレスバーをオーディオのレベルメーターみたいに3色にしたいのですがどのようにやれば良いでしょうか?
63 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:03:01 ] プログレスバーにはそんな機能ないから、自作するしかない。
64 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:16:13 ] プログレスバーを元に改造?することはできますか? ゼロから自作ですか?
65 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:18:40 ] ゼロからじゃね?
66 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:18:57 ] 改造できるにしてもゼロから作った方が圧倒的に早いのは確実
67 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:25:35 ] .NET のプログレスバーは、Windows コモンコントロールのプログレスバーをベースにしてる。 ベースの方でそういう機能がないので、改造は面倒だろうね。 いちから作っちゃった方が早いと思うよ。
68 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:31:13 ] そうですか 作ると言ってもまるで状況が想像できないのですがすごく難しそうですね ボタンでも無理そう><
69 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:38:31 ] 数が固定なら簡単だろ? [][][][][][][][][][][][][][][][][] みたいに四角を描画していけばいいわけだ。左から、緑・黄・赤で塗りつぶすと。
70 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:46:50 ] その前の段階も良くわかっていません。 WindowsControlLiblaryというプロジェクトを開いて フォームの枠(コントロールを何も置かない状態のフォーム)みたいなのを レベルメーターみたいにしようと思ってやっているのですが、ここまではあってるでしょうか?
71 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:51:53 ] いやカスタムコントロールの方を使う いま君が開いてるのはユーザーコントロールだけどどうせデザイナ使えないから意味ない
72 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:56:41 ] カスタムコントロールで調べてみます。 ありがとうございます。
73 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:01:15 ] コントロールとして実装する前に、フォーム上でできるようにしてみるほうがいいんじゃね? できてから、コントロールにすればいいし。
74 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:08:21 ] まあ挫折するだろうな オーバーライドとかわかってないだろ
75 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:13:50 ] もう挫折してました 誰かが作ったのを探し始めてた;(vb レベルメーター コントロール 検索とかw 既存のプログレスバーのコードは見れないでしょうか?
76 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:15:47 ] 未公開 見れても読めるとも思えないけどな、C言語だろうし
77 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:17:55 ] あきらめろよ。 VB6 だろうけど、こんなのはあった。 www.a1vbcode.com/a1vbcode/app-1490.asp
78 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:18:15 ] あ。VB4 って書いてあるな。
79 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:24:15 ] 2002年にこんなもん出したのか アホだな
80 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:53:08 ] >>62 暇だったからサンプルコードを書いてみたよ。 ただ、手間だからLED状のブロック表示は諦めて単純な塗りつぶしにして手を抜いてある。 これなら意外と簡単でしょ? Public Class LevelIndicator : Inherits Control ReadOnly GreenZoneColor As Color = Color.Green Const YellowZoneThreshold As Double = 60 ReadOnly YellowZoneColor As Color = Color.Yellow Const RedZoneThreshold As Double = 90 ReadOnly RedZoneColor As Color = Color.Red Private mPercent As Double = 0 Public Property Percent() As Double Get Return mPercent End Get Set(ByVal value As Double) value = Math.Max(0, value) value = Math.Min(100.0R, value) If value <> mPercent Then mPercent = value Me.Refresh() End If End Set End Property Private Function PercentRangeToRect(ByVal percentFrom As Double, ByVal percentTo As Double) As Rectangle Dim left As Integer = CInt(Me.Width * percentFrom / 100) Dim right As Integer = CInt(Me.Width * percentTo / 100) Dim width As Integer = right - left Return New Rectangle(left, 0, width, Me.Height) End Function
81 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:54:26 ] * 80続き * Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) MyBase.OnPaint(e) Dim g As Graphics = e.Graphics Dim greenRect As Rectangle = PercentRangeToRect(0, Math.Min(Percent, YellowZoneThreshold)) Using br As Brush = New SolidBrush(GreenZoneColor) g.FillRectangle(br, greenRect) End Using If Percent >= YellowZoneThreshold Then Dim yellowRect As Rectangle = PercentRangeToRect(YellowZoneThreshold, Math.Min(Percent, RedZoneThreshold)) Using br As New SolidBrush(YellowZoneColor) g.FillRectangle(br, yellowRect) End Using End If If Percent >= RedZoneThreshold Then Dim redRect As Rectangle = PercentRangeToRect(RedZoneThreshold, Math.Min(Percent, 100)) Using br As New SolidBrush(RedZoneColor) g.FillRectangle(br, redRect) End Using End If Dim rect As Rectangle = Me.ClientRectangle rect.Width -= 1 : rect.Height -= 1 g.DrawRectangle(Pens.DimGray, rect) End Sub End Class
82 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 01:00:17 ] おおーすごい! 早速やってみます!ありがとう!
83 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 01:15:42 ] 動いたーー!! 完璧すぎてすご過ぎ ありがとう!!!!!!!!!!!!!! さっそくLEDみたいにするのをやってみます。 感謝!感謝!
84 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 01:59:40 ] なんという甘やかし・・・
85 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 03:28:06 ] ここは暇つぶしにプログラムするお題を探すスレになりましたw
86 名前:デフォルトの名無しさん mailto:age [2009/11/23(月) 09:23:51 ] >>48 場合によっては具体的なコードをここでさらして、処理過程を見直した方が 良いと思います。 DataTableを使ってまとめてupdateをしてみた場合はどうなのかとか、 いくつか実験をやってみてはいかがでしょうか。
87 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:36:50 ] 質問です。 フォーム上にいくつか連名でオブジェクト(テキストボックス)を配置し、 その各テキストボックスにアクセスする場合のコードの書き方を教えて下さい。 AccessVBAだと、以下のような感じにコードを書く事が出来ますが、VB.NETだと me(....)を書いた時点でエラーが表示されてしまいます。 dim str1 as string dim i as integer str1="textbox" i=3 me(str1 & i)="a" ループで処理をしたいので、こんな感じにコードを書きたくない場合の話です。 textbox3.text="a"
88 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:42:02 ] CType(Controls(str1&i), TextBox).Text = "a" みたいな感じでできる気がするけどあまり褒められたものではない VBAとは全く別の言語だからVBAではどうとかいう考え方は捨てた方がいい
89 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:48:45 ] >>88 すばやいレスありがとうございます。 早速コードを書いて試してみたところ、動作しました。 VBAとは別の言語であるという考えで勉強していこうと思いますが、 一つだけ追加で質問させてください。 VB.NETの場合は、フォーム上にテキストボックスをたくさん配置して おいて、それらを一括ですべてクリアにするとか、値を取得して 配列に格納するとかいう場合、以下のようなコードを書くのが一般的 ということになるのでしょうか。 Me.TextBox1.Text = "a" Me.TextBox2.Text = "a" Me.TextBox3.Text = "a" Me.TextBox4.Text = "a" Me.TextBox5.Text = "a" ・ ・ ・
90 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:49:59 ] VBAのフォームってこんなデタラメなことが出来たんだw フォームの既定のプロパティなのかな? こんなことができて嬉しい場面が思い浮かばないが・・・
91 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:51:54 ] 配列作る
92 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:52:41 ] 配列だな
93 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:55:20 ] >>90 コードが少なくて済むというメリットがあると思います。
94 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:57:29 ] >>91 >>92 配列とは、どのような意味なのでしょうか? TextBoxに格納する文字列を、TextBoxとは別に配列を宣言し、 それに格納しておいて・・・その後の処理をどうしたらいいのかの イメージがつきません。すみません。
95 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:03:09 ] >>94 配列っていうのは本当はいい答えじゃない。 要は何らかのコレクションになっていれば、そのコレクションが含んでいるアイテムを 「一括ですべて(まとめて)」操作することも出来るでしょ。 例えばVBのコントロール配列だって、君の書いているVBAのMe(コントロール名)だって そういうアイデアだよね? 要はそのコレクションを自分で用意すればいいってこと。 それはList(Of T)だったり、Dictionary(Of TKey, TValue)だったり、 ただの配列だったり、目的に合わせて適切なものをね。
96 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:21:07 ] >>95 レスありがとうございます。 となると、VB.NETの場合は、必ず以下のような関数を作らないといけなく なってくるという考えでよろしいのですよね? ・格納する配列の内容をフォーム上のオブジェクトに反映する。 ・フォーム上のオブジェクトの内容を配列に格納する。 VBAでは、直接フォーム上のオブジェクトを操作していたので、 VB.NETのこの、つなぎを行う処理を書かなければならないという 考え方にはちょっと違和感を感じますが、慣れる様にしたいと思います。
97 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:28:33 ] そもそもまとめて操作する機会なんてそんなにあるか?
98 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:30:34 ] VB.NET でも、Controls コレクションって用意されてなかったっけ?
99 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:30:36 ] コントロールそのものをコレクションに入れてもいいけど 一般にはクラスやコレクションでデータだけ別管理にした方がUIと分離できて良い方法 VBAだろうと同じ
100 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 13:08:29 ] >>97 全般的に言うと少ないとなるでしょうね。しかし、似たようなコードを たくさん書かないといけなくなったりすると、何とかならないかなと おもったりするんですよ。 >>98 詳細をお願いします。 >>99 確かにMVCモデルという言葉があるように、データと表示は分離した 作り方をした方がいいと思いましたが、型指定されたDataSetみたいな 便利機能がないのが、今のところひっかかっています。 (プログラムをしていけば、慣れていくのだと思いますが)
101 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 13:11:45 ] >>98 それが>>88 のControls
102 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 13:24:45 ] DataTable作って各TextBoxバインドすれば 一括クリアーも配列への格納も楽だよー
103 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 13:29:36 ] >>101 解説ありがとうございます。 >>102 ああ、その手がありましたね。
104 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 13:34:10 ] 型付きデータセットなんて、この文脈じゃまったく関係ないだろうに。 頭でっかちになる前に、手を動かせよ。
105 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 14:45:23 ] IExtenderProvider実装してやればいろいろできる。 グループ名プロパティ提供してグループ名で一括操作とかな。
106 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:13:45 ] >>104 私は、コードを書くよりも、いろいろ考えすぎてたようです。 もっといろいろなプログラムを作る事に集中します。 >>105 私の知識不足で、直感的にどのような操作なのかがイメージ出来ません でしたが、出していただいたキーワードを元に検索などかけて調べて みます。ありがとうございます。
107 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 15:48:10 ] >>106 とりあえずブログラムは経験だから頑張れ
108 名前:デフォルトの名無しさん mailto:age [2009/11/23(月) 16:36:33 ] すみません、質問です。 VB.NET Express のコントロールには、Lineなどというものはないのでしょうか。 フォーム上に、区切りとして、単に線を引いたり、枠線を描いたりしたいのですが。
109 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:47:34 ] labelで代用してる
110 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 16:55:25 ] VB系の拡張コントロールが提供されてなかったっけ? Lineとかそういうのが使えるやつ。
111 名前:デフォルトの名無しさん mailto:age [2009/11/23(月) 16:57:33 ] >>109 レスありがとうございます。 線や四角を描く部分をlabelで代用する場合、具体的にプロパティはどのように設定したら よいのでしょうか? BorderStyle を FixedSingle にするとラベルに枠が出来るというまでは思いつくの ですが、その後、線にしたり、任意の大きさの四角にする部分が分かりません。
112 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:02:02 ] PowerPack だな。
113 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:07:18 ] Dim NewPen As New System.Drawing.Pen(System.Drawing.Color.Black) Dim FormGraphics as System.Drawing.Graphics FormGraphics = Me.CreateGraphics() FormGraphics.DrawLine(NewPen, 0, 0, 300, 300) NewPen.Dispose() FormGraphics.Dispose() こんな感じで無理だっけ?
114 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:12:19 ] www.atmarkit.co.jp/fdotnet/dotnettips/310linecontrol/linecontrol.html 直線 www.atmarkit.co.jp/fdotnet/dotnettips/792winrectshape/winrectshape.html 四角
115 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 17:14:09 ] 失敗 www.atmarkit.co.jp/fdotnet/dotnettips/781winlineshape/winlineshape.html こっちが直線 114の直線はlabelで代用した直線
116 名前:デフォルトの名無しさん mailto:age [2009/11/23(月) 17:42:41 ] かなり早く、多くの回答ありがとうございました。 >>110 >>112 拡張コントロールを使うんですね。 >>113 出来れば、フォーム上のオブジェクトとしてマウスで操作する 方法で配置したいと思っていたのです。 もし、その方法が無理であれば、紹介していただいたコードを書く 方法を使うしかないでしょうね。 >>114 >>115 labelで代用する場合は AutoSize を false に変えたらよかったのですね。 上手くリサイズが出来なくて苦労してましたが出来ました。 紹介していただいた@ITのサイトも見てみます。
117 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 18:27:41 ] イベントプロシージャーの外に宣言した Dim num As Integer という変数をTextBoxなどのように変更のイベントを発生させるにはどのようにしたら良いでしょうか?
118 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 18:29:26 ] 無理。
119 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 19:10:05 ] >>117 その変数を自分で変更したら自分で定義した好きなイベントを発生させる
120 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 20:20:28 ] これを翻訳するとどうなりますか? Vector3[] vertexs; vertices = new Vector3[vertices.Length];
121 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 20:24:14 ] 知らんがな。
122 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 20:26:23 ] DirectXかXNAかなんか? そんなの自分で調べられないと絶対無理だよ C#どころかC++も読めないと厳しい
123 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 20:33:38 ] 2chスレッドのレス抽出をするプログラムを作ろうとしています。 URLからスレッドのHTMLを取得することはできたのですが、そこからどうすればいいのかわかりません。 プログラムの引数に指定範囲の最小、最大を与えてその範囲内のレスの本文とIDを取得したいのですが。
124 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 20:34:51 ] >120 VBでは無理
125 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 20:38:32 ] >>123 正規表現あたり .dat取得したほうが解析は楽だと思うけど
126 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 20:42:52 ] >>123 Datファイルを調べれば幸せになれるかも
127 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 20:53:08 ] レスありがとうございます。 Datファイルからの取得のほうが楽そうですね。 Datファイルからの解析となると、Datファイルのパスを取得、レス番に指定範囲行を代入、ID、本文を格納という流れになるのかな。
128 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 21:43:33 ] むかしチャレンジしたが、POSTが分からずに断念した俺登場
129 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 02:13:58 ] ログ読むだけなんでしょ。 投稿するわけじゃないんだから、POSTは関係ないでしょ。
130 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 03:02:39 ] それは設計レベルの問題。 「ソフト作りたいのですが、設計ができません」 じゃ、教えるというよりも 代わりに考えて、といってるようなもの。 作りたいと思ったなら自分で考えろ。
131 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 03:03:32 ] 自分で考えるのが嫌なら、既製品を使え。
132 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 10:09:43 ] ○×ゲームのフィールドにあたるクラスを設計・コードを記述し、 以下のスレに投稿したのですが、コーディングや設計に関する部分で、 経験豊富なプログラマーの方々が思う指摘というものを受けてみたいと思い、 こちらで質問をしてみました。 pc12.2ch.net/test/read.cgi/tech/1258895847/52-59n ざっと読んでみたところ、こちらのスレは全般的に、TIPS系の質問が 多いようですので、もし、こういった質問がスレ違いということでしたら 該当スレへの誘導をお願いしたいと思います。 どうぞよろしくお願い致します。
133 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 10:16:09 ] >>127 ローカルに保存したdatは、テキストファイルをどのような形式で表示 させるかという話だと思う。 テキストファイルの操作について分からなければ、ファイルのopenやら closeはどうやったらいいのか、といったレベルから勉強しなおした方が 良いと思う。
134 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 15:00:44 ] >>127 とりあえずテキストファイルの操作を学べばおk
135 名前:デフォルトの名無しさん mailto:age [2009/11/24(火) 15:44:43 ] すみませんが質問です。 コンボボックスやテキストボックスにて、未入力や未選択、任意に入力内容を 消した状態を確認するコードは、 If Me.TextBox1.Text = "" Then というコードのみでよいのでしょうか?それとも、 If Me.TextBox1.Text = "" Or IsNothing(Me.TextBox1.Text) Then という感じに、null判定も入れておくべきなのでしょうか? 細かいところですが、ある程度はユーザの操作内容を確実に取得できる ようなコードを書いておく習慣をつけておきたいと思い、質問してみました。
136 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 15:54:17 ] コントロールのTextがnullになることは普通ないけど (カスタムコントロールでTextをオーバーライドしてnullを返すような実装にわざとしない限り)、 一応String.IsNullOrEmptyで判断しておけば
137 名前:デフォルトの名無しさん mailto:age [2009/11/24(火) 16:06:50 ] >>136 null判定は不要だったのですね。 String.IsNullOrEmpty で判断したコードを書くように したいと思います。ありがとうございます。
138 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 16:33:25 ] VB.NET2003について教えてください。 dobon.net/vb/dotnet/form/savefiledialog.html を参考にファイル保存ダイアログを出しているのですが sfd.OverwritePrompt = True '存在しないパスが指定されたとき警告を表示する 'デフォルトでTrueなので指定する必要はない で上書きの警告ダイアログを出したとき 通常は「はい」ボタンがデフォルトになっているのですが これを「いいえ」ボタンをデフォルトにすることは可能でしょうか?
139 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 17:06:40 ] >>138 無理だったと思う
140 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 17:09:21 ] >>139 やはりそうですか。ありがとうございました。
141 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 17:10:50 ] >>140 ちょっとまて それをFalseにして自分で警告ダイアログを表示すればいいんじゃね
142 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 17:30:09 ] >>140 そもそも 「存在しないパスが指定されたとき警告ダイアログを表示する」 なのに上書き警告ダイアログを表示するってのがよく分からん
143 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 17:39:46 ] >>142 それはおそらくコピペする行を間違えているのだろうw >>138 OverwritePromptは、TrueかFalseしか指定できないので、それを 設定する方法では出来ない。となるが、>>141 にあるように、 自作で、上書きしようとしているかどうかをチェックし、 警告ダイアログをMessagebox.Show( で表示すると可能ではある。
144 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 18:02:53 ] なるほど 自分でやればいいのか。ありがとうございました。
145 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 18:49:06 ] 俺は質問者ではないが、実際にどんなコードを書いたらいいのかを 調べてたが、自作する場合はダイアログが一旦閉じてしまう方法 しかなさそうだな。(ま、それでキャンセルしたら再度ダイアログが 開くようにすればいいだけともいえるのだが) こんな感じになるんだろうな。 If sfd.ShowDialog() = DialogResult.OK Then If System.IO.File.Exists(sfd.FileName) Then ' filePathのファイルは存在する MessageBox.Show("上書きしてもよか?") End If End If
146 名前:デフォルトの名無しさん [2009/11/24(火) 20:30:58 ] 基本的な質問で申し訳ありませんが、お願いします。 一番最初に開くフォーム(Form1)で設定ファイルから値を読込み、それが、 他のフォームにおいても使えるようにしたいのですが、.NETの場合は、 オブジェクト指向言語なので、グローバル変数に値を格納というのは 良くないのですよね? では、具体的にはどうしたらよいのでしょうか? VBAの際は、モジュールを追加して、global 〜〜って感じに 変数を宣言すればよかったのですが。
147 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 20:36:50 ] Timerイベントで一秒に一回ファイルストリームに1行ずつ書き込んでいるのですが、 同じ時間が重複して書き込まれることがよくあるのですが、これは何が原因でしょうか?
148 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 20:47:41 ] >>146 public 変数 as integer こんな感じでいけた気がする
149 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 20:50:46 ] >>147 >>147 >Timerイベントで一秒に一回ファイルストリームに1行ずつ書き込んでいるのですが、 ファイルストリームに書き込むとは? >同じ時間が重複して書き込まれることがよくあるのですが、これは何が原因でしょうか? 現在の時間を書き込むってこと?kwskお願い
150 名前:149 mailto:sage [2009/11/24(火) 20:52:44 ] ミスったorz
151 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 20:56:41 ] >>146 オブジェクト指向言語だからってオブジェクト指向で書く必要はない オブジェクト指向する気ないんだったら>>147 で十分 本当に勉強する気があるならJavaでもやった方がいい
152 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 21:08:27 ] >>149 一秒ごとに変化するデータを時間と一緒に書き込んでいます。 今日日中は無人でパソコンを使いながら実行していたのではないのですが 確認したら重複がたくさんありました。
153 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 21:10:03 ] >>149 ファイルストリームに書き込むというのは StreamWriterのWriteLine(Str)という方法です。 連投スマソ
154 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 21:10:32 ] System.Windows.Forms.Timerは不正確だから呼び出し間隔を当てにしてはいけない
155 名前:149 mailto:sage [2009/11/24(火) 21:12:54 ] >>153 ああ、そういうことね Timerはそんなに正確じゃなかった気がするよ
156 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 21:21:03 ] 了解です。 時間がとんだ時に取り戻すように同じ時間を書き込んでいる感じなのですが、 これはパソコンの速度の限界なので回避しようがないでしょうか?
157 名前:149 mailto:sage [2009/11/24(火) 21:24:26 ] >>156 パソコンの早さはあまり関係ないと思う ライブラリ自体が不正確だったかな
158 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 21:26:23 ] System.Threading.TimerかSystem.Timers.Timerを使えばかなり精確 どちらも別のスレッドで呼び出されるから扱いには注意
159 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 21:58:27 ] 試してみます。 どうもありがとうございました。
160 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 22:06:51 ] ここにvbNullString vbNullChar ""の違いを説明できるヤシは居ない予感
161 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 22:13:27 ] vbNullStringはただのNothing vbNullCharは0 ""は空のStringオブジェクト
162 名前:149 mailto:sage [2009/11/24(火) 22:27:06 ] >>160 分からないならそう書けよ
163 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 22:46:11 ] >>148 >>151 レスありがとうございます。 オブジェクト指向する気が無いコードの書き方があるのも 分かりましたが、もし、オブジェクト指向する気がある場合だと、 どういう考え方になるのでしょうか? 値が格納されたクラス(もしくは構造体)を設定し、そのインスタンスを Form2がopenする際に渡すという考え方になるのでしょうか?
164 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 22:49:21 ] まあそうするのがいいと思う あと特別な理由(主にパフォーマンス)がなければ構造体は使わずクラスを使う
165 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 23:16:35 ] >>162 逆に素直に教えてクン丸出しで質問してもググレカスと返される あえて煽ったり釣ったりした方が、適度なマジレスが的確に返ってくる 度を越すと誰にも相手されずにおじゃんだけどな !
166 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 23:25:45 ] >>164 ありがとうございます。
167 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 23:27:13 ] >>165 わけのわからんかけひきはしなくていい。
168 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 23:32:16 ] >>163 いやいやそんなタコ足配線みたいなコードはOOPしようがしまいが 普通のセンスをしてれば「やりたくない」と思うはず。 冷静に考えてみ? どうして他のフォームの設定値を"Form1"が管理するの? なんでその設定値を必要とするフォーム自身で管理しようと思わないの? その方がずっとわかりやすいじゃない。
169 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 23:53:05 ] 考えるより体で覚えろ
170 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 00:53:59 ] 何も考えずに走れ!!!!
171 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 00:56:38 ] .NETフレームワークって実は内部でWIN32APIをうごかしてる?
172 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 01:00:29 ] まあそりゃWindowsとの対話は基本Win32API越しにするもんだからな
173 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 14:30:32 ] 昔はDOSやPOSIXやOS/2のAPIも聞いてくれたけどな
174 名前:デフォルトの名無しさん [2009/11/25(水) 15:14:02 ] WindowsサービスにIPCサーバーさせてるんですが、IPCクライアントから接続すると、 「IPCポートに接続できません。アクセスが拒否されました。」と出ます。 TCPの時は問題なかったのですが、IPCだとACL設定がいるようで、その方法がわか りません。 誰にでもアクセス許可させたいんですが、どのようにACL設定したらよいのでしょうか。 下記のようにしてダメでした(すいません、C#です...)。 SecurityIdentifier allUserSid = new SecurityIdentifier(WellKnownSidType.WorldSid, null); DiscretionaryAcl dacl = new DiscretionaryAcl(false, false, 1); dacl.AddAccess(AccessControlType.Allow, allUserSid, -1, InheritanceFlags.None, PropagationFlags.None); CommonSecurityDescriptor securityDescriptor = new CommonSecurityDescriptor( false, false, ControlFlags.GroupDefaulted | ControlFlags.OwnerDefaulted | ControlFlags.DiscretionaryAclPresent, null, null, null, dacl); App.configに何か書くサイトもありましたが、Expressで空のプロジェクトから自前でW indowsサービスにしたので、App.configがなく、自前で下記を追加したら「'application' のスキーマ情報が見つかりませんでした。」と怒られました。 <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.runtime.remoting> <application> <service> <wellknown mode="SingleCall" type="Server.MyRemoteObject, Server" objectUri="MyRemoteObject.rem" /> </service> <channels> <channel ref="ipc" portName="MyIpcChannel" authorizedGroup="Users"/> </channels> </application> </system.runtime.remoting> </configuration> どうしたらよいのか教えてください...
175 名前:361 mailto:sage [2009/11/25(水) 16:20:34 ] >>174 スレ違い C# の質問スレの方がいい答えがかえってくるはず
176 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 17:24:17 ] 現在オセロ作っていまして 石を置くときにクルッと一回転させてから置くような感じの効果を付けたいのですが どのように考えればいいんでしょうか? よろしくお願いします
177 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 17:27:24 ] 3Dでモデリングとか考えてないなら、 何枚か回転途中の絵を用意しといてタイマで絵を切り替えながら描画する
178 名前:176 mailto:sage [2009/11/25(水) 17:29:18 ] あ、石は単純に円で表現してます 本当は円柱で描きたかったのですがそちらの方もやり方がわかりませんでしたので・・・ では改めてよろしくお願いします
179 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 17:29:42 ] >>176 石の横幅を小さくしてから大きくする
180 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 17:31:23 ] >>178 黒と白の石をずらして重ねてみるとか
181 名前:176 mailto:sage [2009/11/25(水) 17:32:24 ] 補足書いてある間に回答がきててすれ違いになってしまいました >>177 、>>179 両方のやり方で作ってみて見た目が良かった方でいこうと思います どうもありがとうございました
182 名前:176 mailto:sage [2009/11/25(水) 17:35:03 ] これまたすれ違いに・・ >>180 早速取り入れてみます ありがとうございました
183 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 00:32:02 ] WebRequestとWebResponseクラスを使ってサイトにアクセスしているのですが、 HTMLソースをString変数に読み込んで、内容を正規表現で調べているのですが、 mshtmlクラスのように、GetElementByTagNameなどのメソッドで データの取得や設定が簡単に扱えるようにするにはどんな方法でやれば良いでしょうか?
184 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 00:37:25 ] 標準では用意されてない
185 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 00:51:58 ] DOM やりたいなら、mshtml で読み込めよ。
186 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 00:59:56 ] レスありがとうございます。 DOMというのですか。この方法はAxWebBrowserを使う時の方法しか知らないのですが、 WebRequestとWebResponseクラスを使った方法でも使うことが出来るでしょうか? ヒントでも良いので方法を教えて頂けると助かります。
187 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 01:06:38 ] msdn.microsoft.com/en-us/library/aa752047 (VS.85).aspx こーゆーやつ。
188 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 07:22:24 ] すいません、質問です。 (VB.NETというよりも、IDEに関係する話かもしれませんが) プロジェクトを作成し、プログラムを実行すると、ディフォルトでは Debugにexeが格納されますが、このexeのみを別のPCへコピーして 実行してみる事に問題はありますか? 基本は、インストーラーを作成して・・・となるのでしょうが、 私が作っているプログラムの規模が小さいのもあり、この操作方法で 今のところうまく行っているのですが、これによってどういった不具合が 予測されるかが良く分からない状況です。 どういう問題や不具合が起きると考えられるのかを教えて下さい。お願いします。
189 名前:174 [2009/11/26(木) 07:44:24 ] >>175 了解しました。 ありがとうございます。
190 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 07:44:33 ] それで動くんなら問題ない。 マナーとして、debug ビルド版じゃなくて、release ビルド版の方を 配布した方がいいかもしれんが。
191 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 09:37:07 ] どっかに、汎用の「遺伝的アルゴリズム」のソース落ちてないですか?
192 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 09:51:45 ] >>188 Debug版は配布すべきでない。 単にDebug.WriteLineなどのログ情報が必要なだけなら、 ReleaseビルドでDEBUG定数の定義を追加すればよい。
193 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 10:21:12 ] >>188 外部ツール使ってなければ 気にするのはFrameworkのバージョン位だな 3.xが入ってれば 明示的に2.0入れなくても動くんだっけ?
194 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 14:47:31 ] >>188 Debugビルドの方が、Releaseビルドより容量が大きくなることがあるんじゃなかったっけ? Debug用の情報が含まれるとかなんとかで。
195 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 15:02:02 ] ほとんど変わらんかったと思う。 でかいのはあくまでpdb。
196 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 15:38:26 ] pdbって何なの? ちょこっとプログラム組んだだけで、 ものすごいサイズのpdbファイルができることがあるんだけど・・・
197 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 17:45:10 ] どうやってデバッガがソースファイルや行位置やその他諸々を理解してると思う?
198 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 18:10:26 ] >>197 ???
199 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 18:32:07 ] 「pdbファイル」というキーワードを自ら出しておきながら ググれないとか、もうね。
200 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 21:03:01 ] >>199 すいません >>198 は誤爆なので質問者じゃありません
201 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 21:27:37 ] >>187 ありがとうございます。 ほとんど意味がわかりませんがまた調べてみたいと思います。
202 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 22:22:57 ] VBはDebug.Break()ないのけ?
203 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 22:43:32 ] System.Diagnostics.Debugger.Break()
204 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 22:59:35 ] なんか俺みたいな初級者が「開発」なんて言葉こっぱずかしくて使えない
205 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 23:59:44 ] 関数の戻り値で配列をReturnで返すには1行で書くにはどう書いたら良いですか? Function Hoge(hoge As String) As String() Dim res(1) As String res(0)="hoge" res(1)="hoge2" Return res End Function と書かずに Return {hoge,hoge2} のように書きたいです。
206 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 00:00:57 ] Return New String() { hoge, hoge2 }
207 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 00:06:39 ] >>206 さんありがとうござます。
208 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 02:10:18 ] 新規フォーム作成時の赤黄青のデフォルトアイコン↓ dobon.net/vb/dotnet/form/img/formborderstyle_single.png これを実行ファイルのアイコンにも使用したいと思っているのですが どこに存在するか分かる方いますか?
209 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 03:31:48 ] Standard以上ならVisualStudioのImageLibraryにあるかもしれんが そうでなければ勝手に使うのはライセンス違反になる気がする
210 名前:188 mailto:sage [2009/11/27(金) 07:51:56 ] debugのexeの質問へのレスをしていただいた方々、ありがとうございました。 なにやら、別の方が割り込んできている様子でしたので念のために断って おきますが、私は質問の投稿しかしていませんでしたので、それ以外の質問は 別の方だと思われます。 今のところ、特に凝ったものを使ったりはしていないのと、細かいレベルで プログラムの修正がある関係から、とりあえずは release ビルド版の配布を 行うようにしておきたいと思います。 ありがとうございました。
211 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 08:09:19 ] 別にdebugビルドをリリースしてもええよ 細かすぎんだよプログラマは
212 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 09:40:45 ] 質問です。 私はやっと、VB.NET Express Edition をある程度使いこなせるように なった者です。 このエディションだと印刷機能が低く、Line関数で座標を数値で 指定しながら程度しか帳票を作ることが出来ないようですが、 コストもある程度考えながら、保守性や生産効率性を考えた上で 帳票を作りたい場合は、どのような方法を取るケースが多いのでしょうか? 上位エディションや、Grapeなどのサードパーティー、Accessを使う方法など いろいろあるようですが、それらをそろえるには資金的な壁がありましたので、 ちょっとここで聞いてみたいと思いました。
213 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 13:05:15 ] ActiveReportsとかCrystalReportsとかが一般的だが要は金がないんだろ WordやExcelをCOM使って帳票の代わりにするとか検討してみれば 小規模であれば差込印刷とかで、アプリ側はCSVだけ作成して 帳票の印字調整はあらかじめWordに設定しておくとかすれば工数も掛からんだろ 後は時間と知識があるなら帳票コントロールの自作とかかね
214 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 13:17:12 ] iText.netがいいよ
215 名前:212 mailto:sage [2009/11/28(土) 19:15:06 ] >>213 >>214 情報提供ありがとうございます。 出していただいたキーワードをもとに調べてみます。
216 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 19:26:23 ] 自アプリのメッセージボックスをプログラムで消す(キャンセルを押す)にはAPIでハンドルを調べてAPIでメッセージを 送るという方法しかありませんか?
217 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 19:31:40 ] MessageBoxTimeOutA/W
218 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 19:33:28 ] プログラム側で勝手に「消す」ようなメッセジーボックスなら 最初から表示しなけりゃいいのに。 時限で自動的に閉じる、みたいなことがしたいのかもしれないが、 それならそういうメッセージボックスクラスを自分で作ればいい。 少なくとも俺はそうした。 別にたいした手間じゃない。
219 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 22:17:07 ] レスありがとうございます。 MessageBoxTimeOut で検索したらサンプルが出てきたので今回はそれを使ってみます。
220 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 11:38:00 ] Dim gyo As String Dim moji As Char Dim sr As New System.IO.StreamReader(Opendonfile.FileName, System.Text.Encoding.Default) '読込みモードでオープン Do Until sr.Peek = -1 '最終行が終わるまで繰り返す gyo = sr.ReadLine 'gyoに行を読み込ませる mojisu = gyo.Length '行の文字数をmojisuに代入 For count = 0 To mojisu Step 1 moji = gyo.Chars(count) MsgBox(moji) Next Loop 1行目までは行くんですが2行目に行くときに moji = gyo.char...の文で「IndexOutOfRangeExceptionはハンドルされませんでした」と出るのですがどうすればよいのでしょうか?
221 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 11:44:48 ] Lengthは文字数を返す ForはToで指定された値まで繰り返す 例えばLength=3だったとして、For 0 To 3 は何回繰り返す?
222 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 11:51:51 ] なるほど、文字数より1つ大きい値まで指定してしまったんですね。 ありがとうございました。
223 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 18:27:02 ] すみません、質問です。 クラス(DataBox)をコーディングにおいて、そのクラスの設定状況によって 別の値を取得できるかどうか、変更可能かどうか、などの動作を行うように したいと思っています。 このような動きにする場合は、プロパティでは不可能で、メソッドにて 行うということでよろしいのでしょか? イメージ的にはこんな感じです。 IF mSettei = 1 Then return mColor; Else return False; ' もしくは例外を返すとか End IF
224 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 18:30:44 ] プロパティでは「不可能」ではなく、「不適切」でした。 質問したいのは、プロパティとメソッドの使い分けの考え方の部分です。
225 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 18:56:22 ] よくわからんが…状況によって、どういう型を返すか解らんよ、ってこと?
226 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 19:19:11 ] >>225 ある状況であると、値をちゃんとかえす。 べつな状況であると、値を返さない。 という動きにしようと思っているのです。 箱が閉じて鍵がかかってデータが取れない状態と、 空いていて、データが取れる状態の二つの動作を 持たせようと思っているのです。 もしかすると、このような設計をすること自体が 間違いなのかもしれません。 箱が空いていてデータが取れるかどうかの区別は DataBoxを使用する側の方が制御するべきなのかな?
227 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 20:10:58 ] 1. 値を返せるかどうか 2. 値そのもの の2つを同時に戻したいなら、 A. 「Function Get〜(ByRef 戻り値) as Boolean」として 戻り値へ値をセットしたかどうかを返す。 B. 「Property 〜() as Nullable(Of 型)」として、返せないときは Nothing を戻す。 C. 戻り値の型が参照型なら Nothing を、値型なら (もしあれば) その型の Empty 値を戻す。 D. (プロパティだろうとメソッドだろうと構わないが) 別々に戻す。
228 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 21:09:56 ] >>226 それはダメ Getで失敗させるのはMSのガイドラインに違反する
229 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 22:25:37 ] 処理に時間がかかる大きな変数を関数に渡して その後すぐにその変数を書き換えた場合おかしな動作になりますか?
230 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 22:27:24 ] ならんよ。
231 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 22:52:59 ] 了解です。
232 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 23:34:07 ] >>226 値を返さない仕様では無く、nullpoを返すとか0や有り得ない数値(時間の分なら59以上とかマイナスの値)を返す様にするんじゃないかな。
233 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 01:24:22 ] For Each Str As String In ????? で、ListViewのSubItem(3)をStrに入れるにはどのように書けば良いでしょうか?
234 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 01:52:11 ] > ListViewのSubItem(3) とかいう謎の言葉は良くない ListViewの各アイテムの4列目を列挙したいってこと? ならListView.ItemsをFor EachつかってListViewItem列挙して それのSubItems(3).Textを取得する
235 名前:226 mailto:sage [2009/12/01(火) 11:21:31 ] みなさん、親切にご回答ありがとうございました。 >>227 「値を返せるかどうか」と「値そのもの」を、同時に一つのもの として処理をするように考えるのではなく、別のものとして 処理するように考えれば良いのですね。 >>228 Getで失敗させてはいけないという設計は知りませんでしたが、 納得はいきました。Getを使用する際は、いちいち Try 〜 Catch 〜 は 使用しませんしね。 >>232 「値が返せない」状況の場合は、例外よりも、0などを返す 方向で設計するとよさそうですね。 そのクラスを使うプログラムの方は、例外を取得するのではなく、 ちゃんとした値だったら・・・0だったら・・・という プログラムになるのですね。
236 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 15:06:10 ] >>235 エラーコード返すんだったら例外と変わらん プロパティはあくまでフィールドのように振舞うべき 素直にGetHogeみたいなメソッドにしたほうがいい
237 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 15:18:54 ] >>236 レスありがとうございます。 クラス設計を行う場合、カプセル化の実現の為、必ずSetter/Getterを設定し、 外部のプログラムは、フィールドを直接操作しないような方向で考えるべきと されていますが、VB.NETでは、そのあたりの必要機能すべてをプロパティにて 網羅している、と解釈してしまっていたところで、間違った解釈につながって しまったようです。 純粋にフィールドの値を代入したり取得したりする場合のみ、プロパティを 使用する。そして、(オブジェクトの状態により振る舞いが変わるなど) 条件付きでデータを取得したり設定したりする場合は、メソッドを作る。 という考えでいるべきなのだなと思いました。
238 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 18:15:50 ] 外からフィールドのように見えればいいんであって、 中身は自由に実装していいんだぞ。でないとプロパティの意味がない。 返す値が無いからNothingなのはかまわないが、そのNothingは取得操作が失敗したから Nothingをエラーコードとして返しているのではなく、そのプロパティの値自体がNothingという意味でなければいけない。
239 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 20:41:49 ] こういうセオリーだ、とか、これはバッドノウハウだ、とかってのは置いといて、 好きに作ってみればいいじゃん。で、ダメだったらやり直せばいいんだし。
240 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:33:42 ] 1の位や10の位で切り上げや切り捨ては行えますか?
241 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:38:46 ] >>240 除余を引いてください。 っていうか、小学生でも思いつく知恵だと思うけど・・・
242 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:38:55 ] 足して割って掛ければいいよ
243 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:42:10 ] int型なら10で割ると切捨てなので1の位が消滅する 105/10→10 これにまた10をかける
244 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 23:34:39 ] >>243 Dim val1, val2 As Integer val1 = 99999 / 100 val2 = val1 * 100 Console.WriteLine(val2) ( ゚Д゚) Math.Floor() ( ゚Д゚ )
245 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 23:43:53 ] \
246 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 23:44:54 ] /じゃなくて\ね。 っていうか、だから除余を使おうよ。
247 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 00:42:24 ] っていうか、馬鹿相手にレスするなよ。
248 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 15:03:59 ] 初心者な質問ですが宜しくお願いします。 Button1をクリックしたら、Do While〜Loopを使ってi=1から10まで加算して 初回ループ ・Console.WriteLineで標準出力ストリームに「i = 1」 ・Form1のLabel1にも「i = 1」 n回目ループ ・Console.WriteLineで標準出力ストリームに「i = n」 ・Form1のLabel1にも「i =n」 と表示させる。ということをイメージして書いたのが Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer = 1 Do While i <= 10 Console.WriteLine("i = {0}", i) Label1.Text = "i = " & i i += 1 Loop End Sub Button1をクリックした実行結果は ・標準出力ストリームは1度も表示されない。 ・Form1のLabel1には1回だけ「i = 10」と表示される。 ・ループが回っていることはステップインで確認。 何が問題なのかアドバイスお願いします。
249 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 15:19:13 ] フォームアプリケーションだとそもそも標準出力先が用意されてない デバッガの出力に表示させたいならDebug.WriteLineとか使う そのループも画面更新も同じスレッドで行われるので、ループが回ってる間画面更新できない 定期的な処理ならタイマを使う 重い処理ならBackgroundWorker辺りを使う Refreshで強制的に再描画させられるけど普通ではないしそんなループ程度じゃ視認できないだろ
250 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 16:35:33 ] >>249 回答有り難うございます。 >フォームアプリケーションだとそもそも標準出力先が用意されてない >デバッガの出力に表示させたいならDebug.WriteLineとか使う フォームだと窓表示ができないのですね。なるほど! >そのループも画面更新も同じスレッドで行われるので、ループが回ってる間画面更新できない >定期的な処理ならタイマを使う 実行結果を見ると確かにPrivate Sub Button1_Clickを抜けて初めてLabel表示が更新されるので そうかなあと思ってましたが納得です。
251 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 16:53:40 ] Labelに値をセットすることと、フォームを更新することが 異なるタイミングで行われるということなので、 Update()などで更新してやれば実現できる。 Label1.Text = "i = " & i Label1.Update() これでも処理中に画面が張り付いてしまうのは変わらないから、 本格的なアプリならTimerやBackgroundworkerをすすめる。
252 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 17:21:05 ] 質問です。 以前C++で、構造体配列を宣言するために、 typedef struct tagA { CString strName; int iCount; } tagA; CArray< tagA, tagA > tagArray; というように宣言し、構造体要素をAddしたりDeleteしたりしていました。 tagArray.Add(...) のように。 VB.NETではどのように宣言してやればいいのでしょうか?
253 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 17:32:23 ] List(Of T)とか使う
254 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 17:53:03 ] >> 253 ほんとありがとー。 Cだけしかやったことないっていうのはほんとダメだねぇ・・・ たすかりました。
255 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 19:35:30 ] そういう教科書に載ってるようなのはたいがいあらかじめ用意されてるから 自分で書こうとしてはいけない
256 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 19:38:22 ] 整数の数があるとして、 11個の連続した整数を取り出したいのに 60-50=10なのに でも50から60には11個の整数がある。 この矛盾はなに?
257 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 19:43:13 ] つれますか?
258 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 19:50:32 ] >>252 CArray 使うとか…いや、まあいい。 >>255 でもツリーとかグラフはないんだよねえ。 >>256 しょうがっこうの べんきょうは むずかしいですか? すうじを 5 と 3 にしてみるとわかりますよ。
259 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 19:51:57 ] >>256 1-1=0なのに 1から1までは1という1個の整数がある!ふしぎ!
260 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 20:10:08 ] マジレスヨクナイ
261 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 07:36:33 ] >>238 >>239 レスありがとうございます。 とりあえず手を動かしていろいろやってみたいと思います。
262 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 08:12:54 ] すいません、もう一つだけ質問です。 メンテナンス目的時のみに使用するメソッドを設定する場合の 命名規則やルールはあるのでしょうか? コーディング規約ではそういうものは見たことがないので、 質問してみました。 _(アンダーバー)で始まる名前にするなど、適当な考えで やっておくといいのかな? 細かい事を気にしすぎだという意見が出るかもしれませんが、 多くの人が必ず関係するような事だと思ったので確認しておきたいと 思いました。
263 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 08:21:45 ] さすがにメンテ云々までMSのガイドラインは無いんじゃないかな? もし、あったらごめんね
264 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 09:28:19 ] VB.NETっていきなりWindowsアプリじゃなく C言語が一番最初コマンドプロンプトでprintfだのから始まったように初歩の初歩から学べないの?
265 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 09:35:51 ] >>264 プロジェクト作成時に、コンソールアプリケーションを選べばいいと思います。 場合によっては、VB.NETから離れて、BASICを学ぶという選択肢で考えた方が いいかもしれません。
266 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 09:45:00 ] そもそも Visual なのだから、基本はフォームにコマンドボタンと テキストボックスを配置して、コマンドボタンクリック時のイベントに コードを書いていくというのが、初歩という考え方でもあると思う。 (GUIを作るまでの過程がマウスによる操作で出来るので簡単っていう 意味合いで、Visualです。)
267 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 10:07:59 ] とりあえずこれで ' save hello.vb module Program sub main Console.WriteLine("Hello World !") end sub end module vbc hello.vb hello
268 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 10:39:07 ] デバッグはドM作業っていうのがよくわかったよ 2時間悩んでもわからなかったのに寝て起きたらあっさり見つかったり
269 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 11:57:53 ] 俺はシャワーのとき解決策を思いつくよ
270 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 12:05:12 ] 俺はいつも丑三つ時に閃くな
271 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 14:40:33 ] 正規表現難しいな 数字の桁数が定まってないのは\dでは探せないしなぁ
272 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 14:44:14 ] いつからここは愚痴をいうスレになり下がったんだ?w
273 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 15:20:31 ] オレは、トイレ入ってる時だな。。 一番思いつくのは
274 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 15:56:25 ] >>271 +とか*の量子指定じゃ駄目なの? せっかくの質スレなんだから聞いてみろよw
275 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 17:08:18 ] 質問 homepage1.nifty.com/rucio/main/kiso/Scope.htm このサイトを読んでいたのですが、「2.適用範囲」の Friend を 使う場合はどんなケースであるのがいまいちわかりませんでした。 同じプロジェクトであればということですが、基本的にモジュールは 自分が今作成しているプロジェクトに組み込んで使うものではないの でしょうか。 例えば、AさんがJisakuクラスを作成し、Jisaku.vbファイルに保存。 それをBさんが、新規プロジェクトを作成し、Jisaku.vbファイルをその プロジェクトフォルダの中にコピーしてForm.vbを記述。 Cさんが自分のPCにて、それとは別に新規プロジェクトを作成し、 Jisaku.vbファイルをそのプロジェクトフォルダの中にコピーして Form.vbを記述。 という感じにやるのだと思っていたのですが、この考え方が間違いなのでしょうか。
276 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 17:40:01 ] >>275 プロジェクト内でも間違いではないが、同一アセンブリ内というのが正確だな。 アセンブリが異なれば例え同じ名前のクラスでも別のクラスという扱いになる。 .NETでは基本的にソースレベルでコピーや共有はしない。
277 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 19:01:37 ] >>263 レスありがとうございます。 使う人が使い方を間違えないような感じの名前をつけておきたいと思います。
278 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 19:18:40 ] 現在VB.NET2005にて データベースの接続及びSQL文発行を行う DLLを作成しており、 接続には『SqlDataReader』を使用しています。 Transactionを指定しない場合に 排他制御がどのように行われているのか、がわかりません。 一切排他が行われないのでしょうか? また、排他制御を実装する場合はどのようにすれば良いのでしょうか? 行いたい制御としては、 @データ取得中(SELECT)にデータ更新を抑止する Aデータ更新中(INSERT/UPDATE/DELETE)にはデータの取得/更新を抑止する です。
279 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 19:42:34 ] データベースによる
280 名前:278 mailto:sage [2009/12/03(木) 19:47:40 ] >>279 すみません、書き忘れました。 使用するデータベースは 『SQLServer2005 Workgroup Edition』です。
281 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 19:49:24 ] その質問の答えは回答者による。
282 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 19:52:59 ] SqlDataReader では接続できないんだが (SqlDataConnection だろ、ってのは置いといて) MS SQL Server の Isolation Level の設定次第。
283 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 20:04:11 ] select * from tab with(xlock)
284 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 20:04:14 ] >>278 とりあえず元スレに移動したことを書いとけよ。 マルチとかいわれんぞ。
285 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 21:19:35 ] 皆プログラミングになんのエディタ使ってる? 俺はPCがカスだから動作が重いけど楽で便利だからVBの統合開発環境をそのまま使ってるんだけど
286 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 21:21:43 ] VBでVB使わないとかただのアホかマゾ
287 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 21:24:04 ] メモ帳でやりたいけどやり方わからんから仕方なくVisual Basic 2008 Express使ってる
288 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 21:26:29 ] edlin
289 名前:デフォルトの名無しさん mailto:sage [2009/12/03(木) 21:35:22 ] .NETのクラスライブラリの糞長い型名やメンバ名なんかいちいちタイプしてられるか もともとインテリセンス前提で作られてるんであってPythonみたいな書きやすさ重視の言語とはわけが違う
290 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 07:50:49 ] >>276 レスありがとうございます。 分かりやすい説明でした。
291 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 09:34:54 ] ランダム関数についての質問です。 ランダムに数字を取得する方法は、googleで検索するとすぐに 出てきたりしますが、(例えば以下のサイトなど) www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=21547&forum=7 ある数字の幅を指定して、その範囲で数字を1回ずつ重複せずに取得する ことはできないのでしょうか? (同じ数字であるかのチェックを行うプログラムを書いて工夫をする しかないのでしょうか) (例)0〜5の数字をランダムに取得する 1回目:2 2回目:1 3回目:4 4回目:0 5回目:3 6回目:5 このような感じに数字が取得でき、6回目の数字の取得まで、 一度出た数字が重複することが無い。
292 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 09:45:05 ] dobon.net/vb/dotnet/programing/arrayshuffle.html 「シャッフル」というキーワードで調べてみるとよかったようですね。 自己解決しました。
293 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 09:49:11 ] 年末ジャンボシミュレータ作る気ですね? 解ります。(゚ー゚ )(。_。)(゚ー゚ )(。_。)ウンウン 私も考えたのですが、どっかにメモしておくしか考えつかないです。 数学板かアルゴリズムのスレで聞いてみようかと思ってました。
294 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 14:17:31 ] 質問です。 VB.NETの変数には、値型と参照型がありますが、変数にこういう二つの 概念を持たせて、プログラミングの際に使い分けをさせたりするメリット とはどういうものがあるのでしょうか? homepage1.nifty.com/rucio/main/dotnet/shokyu/standard34.htm 実際にプログラミングをする際に感じるものがいまいち見えませんでしたので 質問をしてみました。こういうプログラミングをしてみるとわかるよという ものの紹介でも結構です。よろしくお願い致します。
295 名前:デフォルトの名無しさん [2009/12/04(金) 14:22:59 ] 未定のType変数を用意し、それを後から必要に応じてセットしてから 後でそれを使ってオブジェクトを設定したい場合、 たとえば Dim TypeA as Type = GetType(Integer) ・・・ Dim ObjectA as TypeA = CType(obj, TypeA) ・・・・・(*) このようにすると(*)でエラーします。こういう使い方はNGのようで、 どういう仕方で行なうものか教えてください。
296 名前:295 [2009/12/04(金) 14:25:05 ] (*)ではコーディング状態で「TypeAは定義されていない」となります。
297 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 14:32:16 ] >>294 値型の理由は主にパフォーマンス ただし分かって使わないと却って悪化する 自分で定義する分には値型を作ることは(列挙体以外)まずないよ >>295 Dim ObjectAのところでTypeAはプログラム上確定してないんだろ? 実行時に初めて確定する ならTypeAにキャストしてどうするの? 何もできないじゃん?
298 名前:295 [2009/12/04(金) 14:43:11 ] >>297 >Dim ObjectAのところでTypeAはプログラム上確定してないんだろ? そうなんですが、たとえば、親のオブジェクトからプロパティで型を受け取って それを使ってキャストしたいと思いました。それで元々定義されたメソッドを 子の方で叩くなどしたいと。こういうのは無理なものですか?
299 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 14:55:25 ] だからさ、TypeAが何型かコーディング時に分からないのに、 どうキャストすんのよ? VBならレイトバインドでも使っとけ。 おすすめしないけど。 何がしたいか具体的に書けばもっと真っ当な方法がある可能性が高い。
300 名前:295 [2009/12/04(金) 15:23:55 ] >>299 コーディング時には実はわかっているのですが、クラス型は親の方で宣言して おきたく、子の方はいろんな種類があって実行時に型を受け取りたいということ でした。 ただ、どうも(*)という方法自体が不可能なような感じですかね?Type型のもので オブジェクトを宣言したりキャストすること自体が間違いなのかなあ・・・
301 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 16:12:35 ] 親が分かってるからとかそういう問題じゃないんだ。 コーディング時にってのは子のコーディング部分で分かってるかって意味だ。
302 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 16:19:09 ] マウスカーソルがフォーム上の指定した座標上に移動したときに その座標にグラフィックが描画されるようにしたいのですが、 そのようなイベント(?)はあるのでしょうか? どのようにすればいいのでしょうか? 現在はピクチャーボックスとマウスエンターイベントで実現しているのですが、 たくさんのピクチャーボックスを使うとものすごく重くなってしまうそうで ダメと言われてしまいました。
303 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 16:20:26 ] ひとつのピクチャーボックスでいいだろ なんでたくさん使うの
304 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 16:28:33 ] ポトペタ脳ってうざいよね
305 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 16:30:37 ] >>303 レスありがとうございます 現在はフォームにフォームのクライアント領域と同じ大きさのピクチャーボックスをすでに貼り付けていて その上に一個ずつ麻雀牌のピクチャーボックスを貼り付けている形になっています。 麻雀パイにマウスエンターすると牌が浮き上がって見えるようにしたいのですが、 これもひとつのピクチャーボックスで実現できますか?
306 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 16:32:37 ] >>302 こんな感じで領域を指定するんじゃないの? If MousePosition.X > 250 And MousePosition.Y > 250 Then Me.PictureBox1.BackColor = Color.Aqua Else Me.PictureBox1.BackColor = Color.Blue End If
307 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 16:37:10 ] データとビューはわけろよー
308 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 16:44:26 ] >>300 CType や DirectCast は「型名」を指定するものであって、 Type型で指定するわけじゃない。 >キャストすること自体が 動的な型変換は面倒だぞ。 つ[TypeDescriptor.GetConverter]
309 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 16:48:26 ] >>305 MouseEnter と MouseLeave のときだけ捕まえて描画したらええやん。
310 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 16:49:29 ] >>308 たぶん型変換したいわけではなくてどっちかというとレイトバインディングの方だと思う
311 名前:295 [2009/12/04(金) 16:55:31 ] >>308 >CType や DirectCast は「型名」を指定するものであって、 >Type型で指定するわけじゃない。 やっぱりそうだったのですか。わかりました。ありがとうございます。 >動的な型変換 >TypeDescriptor.GetConverter こういうものがあったのですね。勉強します、またよろしくです。
312 名前:295 [2009/12/04(金) 17:00:55 ] >>301 >>310 >レイトバインディング 子のコーディング時にも親を見ているのでわかっているのですが、 子の方ではそのクラスを宣言できないので、クラスの宣言自体をオブジェクト にして受け取りたいということなのでした。しかしそういうことは簡単では なさそうな感じので、とりあえず別の方法も考えてみます。
313 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 17:01:39 ] >>305 がイメージしていることって、例えて言うと、ホームページで Flashでデザインされたメニューのようなものか? マウスを動かすとリアルタイムでボタンの色や形が若干変わるという。
314 名前:デフォルトの名無しさん [2009/12/04(金) 17:30:16 ] あるイベントに対して、すでになんらかのハンドラが AddHandler されていることを知るにはどうすればよいでしょう?それらを全て 列挙することはできるでしょうか。
315 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 17:35:57 ] できないと言っていい そもそもそんなのが必要になるのってどんなときよ
316 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 17:44:26 ] ListBox を Form に貼り付けてプログラミングする場合の質問です。 ListBox は、1行につき1件のデータしか表示出来ないのでしょうか? Access の場合は、ListBox に対してテーブルそのものを貼り付けることが 出来、さらに1件目のデータを非表示にしておいて、クリックした時に そのデータを取得するということもできたりしたのですが、 そういったことができなさそうなので確認のため、書き込みました。
317 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 17:47:51 ] [質問] Panel の中に複数の RadioButton を貼り付けた場合、 現在、どの RadioButton が選択されているかをチェックするには、 Panel のプロパティからでは確認は出来ない? 貼り付けているすべての RadioButtion において If Me.RadioButton1.Checked = True Then みたいなコードを書いてチェックするしかない?
318 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 17:51:00 ] >>316 標準のListBoxはそう まあListBoxだってDataTableをDataSourceにして DisplayMemberとValueMemberを指定するぐらいならできる それで不満ならネットでMultiColumnListBoxでも探せば
319 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 17:53:40 ] >>317 うん まあ関数化しとけば便利だね >>316 ListViewとかDataGridViewとか使うのは?
320 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 17:54:11 ] >>318 すばやい回答ありがとうございました。 とりあえずは DisplayMember と ValueMember を使う方法でやってみます。 それでうまくできない場合は、紹介していただいたコントロールや Grid を使うなど別な方法を検討してみます。
321 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 17:57:26 ] >>319 回答ありがとうございます。 紹介していただいた ListView とか DataGridView の機能について 詳しく調べてみます。 初心者にも親切にありがとうございました。
322 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 17:58:58 ] arraylist(listbox.listindex)でいいじゃん
323 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 18:07:24 ] >>322 arraylist を工夫して使えば、 listbox でクリックした名前に相当する 数値データを取得することが出来るっていう意味かな? ちょっと私の頭がついていけてなくてどういうコードを書いていけば いいのかのイメージはついていませんが、いろいろとやってみます。 ありがとうございました。
324 名前:317 mailto:sage [2009/12/04(金) 18:09:15 ] >>319 レスありがとうございます。独りで考えていて不安だったけれど、 他の人の考えを聞く事が出来てすっきりとしました。
325 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 19:24:38 ] DataSetとDataGridでできるだろ。 DataGridViewじゃなくてDataGridな。