VB.NET質問スレ(Part43) [無断転載禁止]©2ch.net

レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん2016/06/15(水) 11:41:09.50ID:bPj3FmGk

860デフォルトの名無しさん2017/12/15(金) 13:44:55.16ID:M7F98+kf
アッ、List(of ss)ができるのだからできるのか? できる筈だよな。調べてみる。

861デフォルトの名無しさん2017/12/15(金) 13:47:03.03ID:M7F98+kf
解った!! ありがとう。

862デフォルトの名無しさん2017/12/20(水) 21:39:40.25ID:AHvtW6qd
ここで聞くのが適切かわからなかったんですが、ご存知の方がおられましたらお教え下さい。

症状
win10のアップデート1703へ更新した直後から、datagridview内への入力時にIMEがオンになっている場合に、最初の入力文字が2つ入力される。バックスペースで消した後は、通常通り入力できる。IMEオフ時の半角は通常通り入力可能。
例えば「は」と入力しようとした場合は「hha」と下線付きで入力されてしまいます。

開発環境では再現しないのですが、何が考えられるでしょうか?
明日、IMEのプロパティのなかの直接入力をしないのチェックを外すのを試して頂く予定ですが、他に何かこうじられる手はありませんでしょうか?

863デフォルトの名無しさん2017/12/20(水) 21:53:14.40ID:XaT4vAqr
とりあえず使ってるIMEが何か調べる

864デフォルトの名無しさん2017/12/20(水) 23:49:49.75ID:AHvtW6qd
MSIMEです。

865デフォルトの名無しさん2017/12/22(金) 20:50:18.27ID:8bp8uCql
csvから以下の様なデータをよみこんでDataGridViewに、キーが5件以上のレコードだけ表示したいのですが可能でしょうか?

キー,品名,重量,形状
A001,aaa,111,丸
B001,bbb,222,バツ

csvは5000レコード程になります。
キーは700種類くらいです。
宜しくお願いします。

866デフォルトの名無しさん2017/12/22(金) 21:58:13.05ID:L0WeFQPL
可能です

867デフォルトの名無しさん2017/12/23(土) 05:25:16.08ID:syScn12J
>>866
教えていただけませんか?

868デフォルトの名無しさん2017/12/23(土) 08:21:17.89ID:3noaHCAM
何が分からないんだ?
 CSVファイルを読み込みか?
 GroupByの使い方か?
 5件以上の抽出方法か?
 複数Groupのフラット化か?
 DataSourceプロパティか?

869デフォルトの名無しさん2017/12/23(土) 08:45:58.27ID:De0LpaYa
>>868
csvからキーが5件以上重複しているものを抽出する部分です。

870デフォルトの名無しさん2017/12/23(土) 09:20:56.16ID:Px5uJlt7
同時には無理
まずはCSVから全データを読み込み
そのデータをLinqかなんかで絞り込む
この2つの手順が必要

871デフォルトの名無しさん2017/12/23(土) 11:45:58.00ID:afY4COyy
JETとかACEとかでSQL書けば同時に出来る気がしないでもないがな

872デフォルトの名無しさん2017/12/23(土) 18:30:01.78ID:De0LpaYa
>>870
とりあえずcsvをデータテーブルに入れデータグリッドビューに表示は出来るのですが、Linqが難しく書けません。
教えていただけませんか?

5件以下のレコードだけ表示の間違いでした。

873デフォルトの名無しさん2017/12/24(日) 07:37:12.94ID:hpg5RGLX
「GROUP BY キー」して、「HAVING 5件以下」して、「SelectMany」するだけだろ?
どこが難しいんだ?

874デフォルトの名無しさん2017/12/24(日) 08:51:11.82ID:26rA4GtJ
結果的に同じになればいいんだったら処理は遅くてもやり方はいろいろあると思う。

875デフォルトの名無しさん2017/12/24(日) 12:14:59.40ID:qNqolCPw
>>873
linqで抽出した後に、データグリッドビューに表示が出来なくて何が悪いのか理解できず諦めました。
結局csvに対してsql文を書いて873さんの言う通りGroup ByとHavingで実装いたしました。
お騒がせしてしまい、すみませんでした。

876デフォルトの名無しさん2018/01/08(月) 08:29:11.48ID:UszQx08Q
datagridviewで集計処理をやりたいです。
具体的には、項目毎の小計行をdatagridviewへ追加して、最終行に総計を出したいと思っています。

Forループでやってみたのですが、小計行を追加すると最終行が変わってしまい最終行まで処理を行えません。
Doループでやってみようと考えたのですが、最終行判定方法が分かりません。

datagridviewで上記の様な集計を行う方法を教えてください。

877デフォルトの名無しさん2018/01/08(月) 17:50:23.27ID:4DzBbICP
データを行追加しながら小計や総計を出せば最終行を気にする必要はないと思いますが

878デフォルトの名無しさん2018/01/08(月) 19:38:43.65ID:UszQx08Q
>>877
datatableをバインドしているのですが、datatableから1レコードづつ追加して小計行を入れる感じでしょうか?

879デフォルトの名無しさん2018/01/21(日) 17:49:05.41ID:xVt4kZ2y
<例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

理想のように出力させる方法ってないでしょうか

880デフォルトの名無しさん2018/01/21(日) 18:19:11.18ID:RCjuWkB1
>>879
Console.WriteLine(a.ToString("G29"))
または
Console.WriteLine("{0:G29}", a)

881デフォルトの名無しさん2018/01/21(日) 19:42:04.55ID:xVt4kZ2y
すいません、書き方が悪かったです。

出力させると言うよりは、
dim a As decimal = "0.12340000"
の宣言後にa=0.1234と内部的に認識?させたいです。
文字列変換時のformatは使いたくありません

decimal等に一度キャストして再度decimalに戻せば消えるんでしょうか

882デフォルトの名無しさん2018/01/21(日) 22:12:27.71ID:PGD2ovYS
むしろ後続のゼロを保持するDecimalで勝手に後ろの0を消す
VBのエディタだかコンパイラだかに問題があるけど

Decimal.Parse(a.ToString("G29"))でもすれば

883デフォルトの名無しさん2018/01/21(日) 22:16:38.18ID:8mbnCibk
何が言いたいのか何がしたいのかさっぱりわからんけど、
そもそも文字列リテラルでdecimalを初期化するのが間違ってる

884デフォルトの名無しさん2018/01/22(月) 09:16:19.77ID:26rmQH+m
Dim a As String = "0.12340000"
Dim b As Decimal = CDec(a)

これでええで

885デフォルトの名無しさん2018/01/22(月) 20:18:35.99ID:AesY7cS1
Decimalって後続ゼロを保持してるとかいう仕様なんだが
実際の小数点以下桁数については、取得するメソッドとかすら用意されてないぽいよな
なんでそんな片手落ちな仕様なんだろ

886デフォルトの名無しさん2018/01/22(月) 21:11:58.46ID:BhdsaoHH
>>885
これで取得できるみたい

Dim a = Decimal.Parse("0.12340000")
Dim len = Decimal.GetBits(a)(3) >> 16 And &HF
Console.WriteLine(len) ' 8

887デフォルトの名無しさん2018/01/23(火) 21:18:21.91ID:NPbHldMa
関係あるようでないけどsqlserverのnumeric型に1とかを格納して1.000000になるのって防げないよね?
Decimalに代入して扱うとずっとゼロが残るもんで
ToString("G29")を全部に書き加えたんだけど、もっと頭の良い方法あったなら死にたい

888デフォルトの名無しさん2018/01/23(火) 21:52:20.10ID:8AbQh9Sj
(1) 必要もないのにDecimalなんか使わない

(2) 必要な精度に合わせて丸めることを覚える(実数型っていうのはそうやって使う)

889デフォルトの名無しさん2018/01/23(火) 22:09:43.15ID:NPbHldMa
Oracleだと後続ゼロは勝手に除去するし面倒やね

890デフォルトの名無しさん2018/01/24(水) 01:20:12.88ID:FR3L8fOM
>>887
SQL ServerのNumeric型は指定精度の固定小数点だし、そんなことになるか?
どうやって取得してるのか、簡単なコードあっぷしてくれ

891デフォルトの名無しさん2018/01/25(木) 21:17:36.29ID:kHl9XEzA
すんません、.net nativeってどうなったんですかね?

892デフォルトの名無しさん2018/01/26(金) 00:31:48.81ID:xgA/ZrEm
>>890
datareader経由で普通に取得してた記憶がある
テーブルに格納した時点でnumericなら1.000000~みたいになるし、それがむしろ正常なのでは?

893デフォルトの名無しさん2018/01/27(土) 10:54:23.24ID:blSbszVf
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
こんな感じでインスタンスを作ってその位置と外形だけ複製したいのだがなんかよい方法ない?

894デフォルトの名無しさん2018/01/27(土) 15:01:31.82ID:1CQ9r5Ku
それでいいんじゃないの?

895デフォルトの名無しさん2018/01/27(土) 15:15:21.70ID:blSbszVf
だめだ。 もっとスマートな方法はある。何か考えろ。
デリゲート使って簡単にできんか?
それとか、、、コピーモードもあるはず

896デフォルトの名無しさん2018/01/27(土) 15:42:24.58ID:zlVwMk+1
そんな汎用的じゃない処理がライブラリにあるわけないでしょ
世の中自分を中心に回ってるとか思ってる?

897デフォルトの名無しさん2018/01/27(土) 16:36:34.58ID:blSbszVf
PictureBOxにコピーコンストラクタを追加する。
dim pic as picturebox = new ExPictureBox(PictureBox3)
みたいなことはできんか?

898デフォルトの名無しさん2018/01/27(土) 16:56:15.88ID:blSbszVf
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デフォルトの名無しさん2018/01/27(土) 17:06:40.08ID:blSbszVf
「継承のルールによると、派生オブジェクトは常に基本クラスの変数に代入できると規定
されています。」

できる筈だが、エラーになるな。

900デフォルトの名無しさん2018/01/27(土) 17:36:25.08ID:zlVwMk+1
>>899
マジボケ?
コンストラクタの引数の型はPictureBoxにしないとダメなんじゃないの?

それから、そんなつまらん処理のためにいちいち新しい型を作るとか無駄。
せいぜい拡張メソッドでいいでしょ

Public Module Exetnsions
  <Extension()> _
  Public Function GetMimic(p as PictureBox) as PictureBox
    ....
  End Function
End Module

901デフォルトの名無しさん2018/01/27(土) 18:02:03.55ID:blSbszVf
でけたーーー。サンクス。w

902デフォルトの名無しさん2018/01/27(土) 18:17:58.54ID:blSbszVf
IIf(count Mod 2, leftp = GroupBox4.Left, leftp = GroupBox3.Left:top += ctl.Height

これってなにか良い方法ない?

903デフォルトの名無しさん2018/01/27(土) 18:50:33.41ID:zlVwMk+1
そんなものない。だから、世の中君を中心に回ってない。
ついでに言うと、それもダメ。もう全然ダメ
それ意図した通り動かないはずだからやってみ

904デフォルトの名無しさん2018/01/27(土) 22:38:38.55ID:blSbszVf
ある。ぜったいにある。考えてみ。

905デフォルトの名無しさん2018/01/28(日) 14:37:36.58ID:GdggbAq+
教えてくださいだろ

906デフォルトの名無しさん2018/01/29(月) 01:02:44.26ID:T4IzQ9lA
IIF嫌いだわ

907デフォルトの名無しさん2018/01/29(月) 02:58:03.61ID:SBGh1g9E
可能であれば If 演算子を使ったほうがいい

908デフォルトの名無しさん2018/01/29(月) 11:23:57.86ID:Zkbe25Yq
何かずっと頭おかしいのが荒らしまくってたんだね

909デフォルトの名無しさん2018/02/12(月) 14:10:49.62ID:pRrQ7Rw0
なんか廃れてるけど質問ここでいいのかな

初心者向けの本買って、
その通りにサンプルアプリ作ってるんですけど、
TextBoxコントロール入れて、fontプロパティをメイリオの16pt、
Sizeプロパティを55,55にしろってのがあるんだけど、
その通りにするとSizeが55.39に勝手になってしまって高さが55になりません

多分フォントサイズに自動的に高さを合わせてるから39に勝手になってるんだろうけど、
どうすれば高さも55になりますか?

910デフォルトの名無しさん2018/02/12(月) 18:44:24.45ID:EjSCFOs0
>>909
テキストボックスの右上の方にちっちゃい右向きの三角の記号あって▶そこクリックでMultiLineっていうの出てこない?
もしくはテキストボックスのプロパティからMultiLineをtrueにする

新着レスの表示
レス数が900を超えています。1000を超えると表示できなくなるよ。
レスを投稿する