VB.NET質問スレ(Part43) [無断転載禁止]©2ch.net
レス数が900を超えています。1000を超えると表示できなくなるよ。
>>844
元号ってOSから引っ張ってきてるんじゃないかなぁ
OSが対応されればそれで行ける気がするけど、1.1動くOSってどこまでだっけ
未だに1.1のシステム抱えてる身としては他人事ではない >>846
Windows10は1.1が動かない(とされてる)
業務ソフト納入してる客先でPC機器類納入してる別の会社が勝手にWindows10に変えようとして
慌てて一台リースを延期してもらった
>>847
2.0でビルドしたものが4.0で動いたというのが興味深い 2.0以降はいちおう上位互換考慮されてるはずだからなぁ
OSもフレームワークもサポート切れだから、アプリもサポートできません
アプリバージョンアップしてください(もちろん有償で!)
こう言って通れば良いんだがなぁ コマンドプロンプトで実行するプログラムで、C言語のsystem()関数と同様の関数ありますか。
Processクラスは別画面で起動します。同じ画面で実行したいもんで。 >>851
UseShellExecute = False にしてみたら? Class clsMai
Public Text As String = ""
Public size As Integer = 0
End Class
Dim lm As New List(Of clsMai)
このとき
dim sum as integer = 0
dim dt as new clsMai
dt.text = "aaa"
dt.size= 10
lm.add(dt)
lm.sum += dt.size
最初はListだったんだがSumが追加したい。こういう時にはlmはどういうように定義するのがいい? Class clschkMai
Inherits List(Of clschkMaisu)
Public sum As Integer
End Class
これで
lm.add(dt)とやるだけで上記のlm.sum+=dt.sizeも行うようにしたいのだがやり方が分からない。 >>854
List<T>を継承じゃなくて中に持つクラスを作るだけでしょ。
あるいはsumを頻繁に使うのでなければ、LINQのSumを使った方が簡単
それと今時変なハンガリアンやめなはれw
Claass MaiList
Private _list as New List( Of Mai)
Private _sum as Integer = 0;
Public Sub Add(x As Mai)
_list.Add(x)
_sum +=x.size
End Sub
Public Property Sum as Integer
Get
return _sum
End Get
End Property
End Class おお!! そういうことか。ありがとう。 addがOverridesできないものかと悩んでた。
clsXXXって書き方は駄目なのか? 何か不都合があるんだろうか? アッ、駄目だ。継承しないとlm(3).textのようにインデクサでのアクセスができない。 >>857
インデクサ(VBは既定のプロパティと言うと思うけど)も自分で書けばいいんだよそれはwww
簡単でしょw
何でこの程度のことを思いつかないのw それはできないでしょ。 lm.lst(i).text みたいになってしまうから。これは面白くない。
lm(i).textにしたいわけだ。 アッ、List(of ss)ができるのだからできるのか? できる筈だよな。調べてみる。 ここで聞くのが適切かわからなかったんですが、ご存知の方がおられましたらお教え下さい。
症状
win10のアップデート1703へ更新した直後から、datagridview内への入力時にIMEがオンになっている場合に、最初の入力文字が2つ入力される。バックスペースで消した後は、通常通り入力できる。IMEオフ時の半角は通常通り入力可能。
例えば「は」と入力しようとした場合は「hha」と下線付きで入力されてしまいます。
開発環境では再現しないのですが、何が考えられるでしょうか?
明日、IMEのプロパティのなかの直接入力をしないのチェックを外すのを試して頂く予定ですが、他に何かこうじられる手はありませんでしょうか? csvから以下の様なデータをよみこんでDataGridViewに、キーが5件以上のレコードだけ表示したいのですが可能でしょうか?
キー,品名,重量,形状
A001,aaa,111,丸
B001,bbb,222,バツ
csvは5000レコード程になります。
キーは700種類くらいです。
宜しくお願いします。 何が分からないんだ?
CSVファイルを読み込みか?
GroupByの使い方か?
5件以上の抽出方法か?
複数Groupのフラット化か?
DataSourceプロパティか? >>868
csvからキーが5件以上重複しているものを抽出する部分です。 同時には無理
まずはCSVから全データを読み込み
そのデータをLinqかなんかで絞り込む
この2つの手順が必要 JETとかACEとかでSQL書けば同時に出来る気がしないでもないがな >>870
とりあえずcsvをデータテーブルに入れデータグリッドビューに表示は出来るのですが、Linqが難しく書けません。
教えていただけませんか?
5件以下のレコードだけ表示の間違いでした。 「GROUP BY キー」して、「HAVING 5件以下」して、「SelectMany」するだけだろ?
どこが難しいんだ? 結果的に同じになればいいんだったら処理は遅くてもやり方はいろいろあると思う。 >>873
linqで抽出した後に、データグリッドビューに表示が出来なくて何が悪いのか理解できず諦めました。
結局csvに対してsql文を書いて873さんの言う通りGroup ByとHavingで実装いたしました。
お騒がせしてしまい、すみませんでした。 datagridviewで集計処理をやりたいです。
具体的には、項目毎の小計行をdatagridviewへ追加して、最終行に総計を出したいと思っています。
Forループでやってみたのですが、小計行を追加すると最終行が変わってしまい最終行まで処理を行えません。
Doループでやってみようと考えたのですが、最終行判定方法が分かりません。
datagridviewで上記の様な集計を行う方法を教えてください。 データを行追加しながら小計や総計を出せば最終行を気にする必要はないと思いますが >>877
datatableをバインドしているのですが、datatableから1レコードづつ追加して小計行を入れる感じでしょうか? <例1>
dim a As decimal = "0.12340000"
Console.WriteLine (a)
⇒0.12340000
<例2>
dim a As decimal = 0.12340000
Console.WriteLine (a)
⇒0.1234
<理想>
dim a As decimal = "0.12340000"
Console.WriteLine (a)
⇒0.1234
理想のように出力させる方法ってないでしょうか >>879
Console.WriteLine(a.ToString("G29"))
または
Console.WriteLine("{0:G29}", a) すいません、書き方が悪かったです。
出力させると言うよりは、
dim a As decimal = "0.12340000"
の宣言後にa=0.1234と内部的に認識?させたいです。
文字列変換時のformatは使いたくありません
decimal等に一度キャストして再度decimalに戻せば消えるんでしょうか むしろ後続のゼロを保持するDecimalで勝手に後ろの0を消す
VBのエディタだかコンパイラだかに問題があるけど
Decimal.Parse(a.ToString("G29"))でもすれば 何が言いたいのか何がしたいのかさっぱりわからんけど、
そもそも文字列リテラルでdecimalを初期化するのが間違ってる Dim a As String = "0.12340000"
Dim b As Decimal = CDec(a)
これでええで Decimalって後続ゼロを保持してるとかいう仕様なんだが
実際の小数点以下桁数については、取得するメソッドとかすら用意されてないぽいよな
なんでそんな片手落ちな仕様なんだろ >>885
これで取得できるみたい
Dim a = Decimal.Parse("0.12340000")
Dim len = Decimal.GetBits(a)(3) >> 16 And &HF
Console.WriteLine(len) ' 8 関係あるようでないけどsqlserverのnumeric型に1とかを格納して1.000000になるのって防げないよね?
Decimalに代入して扱うとずっとゼロが残るもんで
ToString("G29")を全部に書き加えたんだけど、もっと頭の良い方法あったなら死にたい (1) 必要もないのにDecimalなんか使わない
(2) 必要な精度に合わせて丸めることを覚える(実数型っていうのはそうやって使う) Oracleだと後続ゼロは勝手に除去するし面倒やね >>887
SQL ServerのNumeric型は指定精度の固定小数点だし、そんなことになるか?
どうやって取得してるのか、簡単なコードあっぷしてくれ すんません、.net nativeってどうなったんですかね? >>890
datareader経由で普通に取得してた記憶がある
テーブルに格納した時点でnumericなら1.000000~みたいになるし、それがむしろ正常なのでは? Dim pic As PictureBox = New PictureBox
pic.Width = PictureBox3.Width
pic.Height = PictureBox3.Height
pic.Top = PictureBox3.Top
pic.Left = PictureBox3.Left
pic.BackColor = cs.GroupColor
こんな感じでインスタンスを作ってその位置と外形だけ複製したいのだがなんかよい方法ない? だめだ。 もっとスマートな方法はある。何か考えろ。
デリゲート使って簡単にできんか?
それとか、、、コピーモードもあるはず そんな汎用的じゃない処理がライブラリにあるわけないでしょ
世の中自分を中心に回ってるとか思ってる? PictureBOxにコピーコンストラクタを追加する。
dim pic as picturebox = new ExPictureBox(PictureBox3)
みたいなことはできんか? Class exPictureBox
Inherits PictureBox
Sub New(pp As exPictureBox)
MyClass.Width = pp.Width
MyClass.Height = pp.Height
MyClass.Top = pp.Top
MyClass.Left = pp.Left
End Sub
End Class
これをPictureBoxにキャストはできんのかなー 「継承のルールによると、派生オブジェクトは常に基本クラスの変数に代入できると規定
されています。」
できる筈だが、エラーになるな。 >>899
マジボケ?
コンストラクタの引数の型はPictureBoxにしないとダメなんじゃないの?
それから、そんなつまらん処理のためにいちいち新しい型を作るとか無駄。
せいぜい拡張メソッドでいいでしょ
Public Module Exetnsions
<Extension()> _
Public Function GetMimic(p as PictureBox) as PictureBox
....
End Function
End Module IIf(count Mod 2, leftp = GroupBox4.Left, leftp = GroupBox3.Left:top += ctl.Height
これってなにか良い方法ない? そんなものない。だから、世の中君を中心に回ってない。
ついでに言うと、それもダメ。もう全然ダメ
それ意図した通り動かないはずだからやってみ なんか廃れてるけど質問ここでいいのかな
初心者向けの本買って、
その通りにサンプルアプリ作ってるんですけど、
TextBoxコントロール入れて、fontプロパティをメイリオの16pt、
Sizeプロパティを55,55にしろってのがあるんだけど、
その通りにするとSizeが55.39に勝手になってしまって高さが55になりません
多分フォントサイズに自動的に高さを合わせてるから39に勝手になってるんだろうけど、
どうすれば高さも55になりますか? >>909
テキストボックスの右上の方にちっちゃい右向きの三角の記号あって▶そこクリックでMultiLineっていうの出てこない?
もしくはテキストボックスのプロパティからMultiLineをtrueにする VB2010使ってて最近2017使い始めたのですが、ショートカットキーでCTRL+↑してもプロシジャーの先頭に移動しません。
どなたか教えてくださいませ。 excelシートみたいなのの無償で使えるコンポーネントない? VB初心者です。
下記のコードでアプリケーション起動時に
1.データテーブルを作成
2.CSVファイルからデータテーブルへデータを読み込み
3.データテーブルのデータをデータグリッドビューへ表示
としています。ここまでは完成しています。
アプリケーション上にデータの追加ボタンbtn_add_Clickを作成してアプリケーション上からデータをリストへ追加していきたいです。
DataTableにデータを追加して、そのデータをデータグリッドビューへ表示したいのですがどのようなコードにすればいいでしょうか?
ご教示お願い致します。
入力フォームはすでに作っていて、テキストボックスA、B、C、Dとその入力されたデータをもとに内容が変わるラベルE、Dがあります。
長文すぎて書き込み拒否されるのでコードはリンク先で失礼します。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13187386258 DataSourceのDataTableに追加するコードをButtonのクリックイベントに書けばいい。
DataGridViewにバインドしているから反映される。
コードからバインドされたDataGridViewには追加出来ないからSourceに追加する。 >>917
回答ありがとうございます。
いろいろ調べてDataTableに追加しようとしましたがうまくできず
DataTableと別にDataTable2をつくってDataTableと結合→DataGridViewに表示しようとしたのですがそれもでうまくできませんでした。
DataTableに追加するか
DataTable2を作成、DataTableとDataTable2を結合
のどちらかの例文を教えて頂けないでしょうか?
よろしくお願いいたします。 DGVしゃ足りないんだからそれこそエクセル(クローン)しか無いだろ
でも.NetじゃOLE出来ないしなー
(表示だけならWebBrowserで出来るみたいだけど) >>918
Dim tbl As New DataTable(“table”)
Dim row As DataRow
'1列目
row = tbl.NewRow
row("Item1") = "A1"
row("Item2") = "A2"
row("Item3") = "A3"
tbl.Rows.Add(row)
'2列目
row = tbl.NewRow
row("Item1") = "B1"
row("Item2") = "B2"
row("Item3") = "B3"
tbl.Rows.Add(row)
'途中挿入
row = tbl.NewRow
row("Item1") = "C1"
row("Item2") = "C2"
row("Item3") = "C3"
tbl.Rows.InsertAt(row, 1)
みたいな感じで出来ない? >>920
参考にして少し弄ったらできました。
ありがとうございます。
新たな壁に直面して
DataTableをCSVファイルで保存したいのですがうまくいきません。
ご教示願います。 >>922
そのコードはどうすればボタンクリックイベントにできますか? クリックイベントで、ConvertDataTableToCsvにデータテーブルとcsvのパスとヘッダーを書き込むならTrueを渡して呼び出すだけ。 >>924
パラメーターdt ,svPath,writeHeaderに対して引数が指定されていませんとエラーがでるのですがどうすればいいですか?
Private Sub btn_hozon_Click(sender As Object, e As EventArgs) Handles btn_hozon.Click
ConvertDataTableToCsv
End Sub >>925
ConvertDataTableToCsv(DataTable(“table”),”C:\test.csv”,True)
みたいにして引数を渡して呼び出せばいいです。
ファイル名やデータテーブル名などは、自分の環境に合わせて下さい。 >>926
ありがとうございます。
一応保存には成功しました。
しかし、一番最期の行が消えてしまいます(CSVに保存されていない)
どうすればいいですか? DataGridView上の特定の文字列のセルの文字色を変更したいですがやり方がわかりません。
例えば5列目1行目と5行目にAAAがあってこれを赤色、5列目3行目と4行目にBBBがあってこれを青色、といった感じで文字色変更したいです。
下記のコードでセルを選んで文字色を変えることには成功しましたがここからどのようにすれば、AAAやBBBといった文字列のセルの文字色を変更できるかがわかりません。
Me.database.Item(5, 1).Style.ForeColor = Color.Red >>930
セルの値がAAAかどうかを1セルずつチェックする すいません、ここが最適だと思ったので教えてください!!
Spread(グレープシティ社)のWindows Formのバージョン8で
右端に列を追加するにはどうすればいいですか?
右端で右クリックして列を追加すると右から2番目に追加されてしまって困っています! スレ違い
せっかく高い金払ってるんだからサポートに聞け 餅は餅屋に聞くという思考が次第に薄れてきている事を感じさせますね。 SpreadのことはGrapeCityに、VB.NETのことはマイクロソフトに聞くべし
だったら何でこのスレあるの? グレープシティっていいの?
あとエクセルなんとかってとこのが定番化だった気がする ActiveX(〜VB6)までは世話になったけど、.Net になってからGrapeCity には関わるまいと誓った。 質問させてください、2つの波形の位相差(シーター)を求めたいです。
chartコントロールに位相差の違う2つの波形を表示させてその位相差を測定したい。
例)https://blog-imgs-86-origin.fc2.com/m/0/k/m0kichiazuma416/066_01.png
最終的にはこの様な物を作りたい。
http://siesta.la.coocan.jp/zk/PwrChk2/pwrchk2.html
この作例だと、電流値と電圧値をchartコントロールに入れて、
chartコントロールに演算させて力率を出しているのだと思うのですが。
どうなんでしょうか。 >>944
とりあえずchartコントロールに何かを計算させようって発想は根本的に間違ってるw
エクセルじゃないんだからwww
chartが担うのは表示機能だけw
当たり前だけど位相差は測定値の時系列から自分で計算するコードを書くしかない。
ひょっとしてそもそも位相差が何を意味するか分かってないんじゃないの? レス数が900を超えています。1000を超えると表示できなくなるよ。