ssCAROのブログ

色んなとこで見つけたプログラムのメモ置き場っぽい

VB.net

波線を描画したい(VB.net)

波線を描画したくなった。 作成はVisual Basic 2017で行った。 DrawLineを使って描いても良かったんだけど、もう少し効率の良い方法はないかと探してみて色々試した結果、DrawCurveを使うことにした。 等間隔で中央、上、中央、下、中央…という感じでy位置を…

Edge仕様のWebBrowserコントロール(WebView)

WebBrowserコントロールを使うとIE仕様になってしまい、サイトによってはJavaScriptが動かなかったりします。 そこで、WebBrowserコントロール(IE)ではなく、WebViewコントロール(Edge)を使用します。 実行環境が決まってるようで、このバージョン以降が必要…

DataGridViewのセルで右寄せにしたときの余白を設定する

DataGridViewのセルに数値データを右寄せで表示したとき、右端に行き過ぎて何となくいやだなと思ったので、セルの余白調整方法を調べた。 dgv.Columns("ITEM_VALUE").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight dgv.Columns("I…

画面作成中にユーザーコントロールのLoadイベントを処理させない

ユーザーコントロールを使用したForm画面の作成中に次のエラーが出てForm画面が開かなくなった。 ユーザー '' はログインできませんでした。 ユーザーコントロールのLoadイベントにApp.configからDBへの接続情報を取得してDBからデータを取得、表示をするプ…

DataGridViewのセル編集が3回クリックで編集できるようになる

DataGridViewでセルを直接編集するために編集を有効にしたけどセルを3回クリックしないと、編集モードにならなかった。 1回目のクリックで、セルが選択され次のダブルクリックで編集モードになってる? ダブルクリックで編集モードとなるようにしたかったの…

PC(Windows 10)の時刻を設定するために盾マークのexeを作成

Windows 10になってからではないけど、システム時刻をプログラムから合わせるにはユーザーアカウント制御を何とかするか、管理者権限で実行するかしないと出来なくなった。 タスクスケジューラに登録して管理者で実行する方法もあるみたい。 ユーザーアカウ…

DataGridViewのセル結合(行のセルを固定)

以前に書いた記事で「DataGridViewのセル結合」をしたときだと、行を固定した場合、上手く描画できません。 その対応したプログラムを書いたのでメモ。 表を見せるのみです。 行列の追加、編集、削除や、セル幅の変更は考慮していません。 行列のヘッダーは…

WebBrowserコントロールでポップアップ表示されるユーザーとパスワードの入力

WebBrowserコントロールで機器接続用の専用ブラウザを作っていてユーザーとパスワードの入力をポップアップで聞いてくるのがあった。 色々調べるとBASIC認証すれば接続できたので、そのときのメモ。 接続するURLを次のようにして接続した。 httpとIPアドレス…

WebBrowserコントロールでもwindow.close()で閉じたい

最近の機器にはブラウザで設定が出来るものが多いです。 そこで、WebBrowserコントロールを使って特定のページを表示する簡易ブラウザを作成しました。 作成にあたり、保守モードが最初から選択されてたり、特定の文字が入力済みであったりとHtmlDocumentを…

Excelの操作用ライブラリ(NPOI)の使い方

Excelの操作にCOMを使っていたけど、プロセスが解放されたりされなかったりとどうにもこうにもなので、Excelの操作用ライブラリ「NPOI」を使ってみることにした。 参考URL 【C#】NPOIを使ってExcelファイルを作成・編集する Visual Studio 2013を使いました…

継承したコントロールのTextの初期値を変更する

Buttonを継承してカスタムコントロール(以下SearchButton)を作成した。 SearchButtonには虫眼鏡のアイコンを設定したけど、ツールボックスから配置するとTextにSearchButton1と入ってしまう。 別にTextを削除すれば良いのだけど、最初から空白が入れば良いな…

Jsonファイルの読込み、書込み

データを保存したり、マスターデータを読み込んだりしたいときはCSVでデータファイルを作っていたのを、Jsonファイルにしてみた。 Jsonファイルの読み書きは、DataContractJsonSerializerを使用すれば簡単に使える。 Jsonファイルの内容をクラスとして扱える…

DataGridViewの選択行を元の行に戻す

DataGridViewでDataSourceを設定すると選択行が先頭行になる。 選択行を覚えておき、元の位置に戻すプログラムのメモ。 '現在選択している行を取得 Dim rowFirst As Integer = 0 Dim rowCurrent As Integer = 0 If DataGridView1.CurrentCell IsNot Nothing …

DataGridViewのセル結合

DataGridViewでセルを結合するためには、自分でセルを結合したかのように描画する必要があるみたい。 見せかけのヘッダー列を固定したい場合は「行のセル固定」の記事を見てください。 そこで次の表を作成したいときのプログラムメモ。 表を見せるのみです。…

FillRectangleで塗りつぶしが出来ない

FillRectangleとDrawRectangleで塗りつぶされる領域が違ってた。 DrawRectangleより、Width, Height が、それぞれ1ずつ少なく塗りつぶされていた。 Dim g As Graphics = e.Graphics Dim rect As New Rectangle(20, 20, 120, 120) g.DrawRectangle(Pens.Blue,…

AssemblyAttributes.vbが見つからないエラーの対処

Windows 7 Professional 32ビット、VB2010を使用している環境で急に次のエラーが表示されるようになった。 エラー 1 モジュール ファイル 'C:\Users\Administrator\AppData\Local\Temp\.NETFramework,Version=v4.0.AssemblyAttributes.vb' を開けません: 指…

TableLayoutPanelにプログラムで列(Column)を追加

横にLabelを並べてチェック用の数値を表示したい。 チェック項目は設定で変更される。 Formのサイズを取得して、Labelのサイズを調整しても良かったけどTableLayoutPanelを使ってみた。 参考にしたHP http://dobon.net/vb/dotnet/control/tlrowstyles.html h…

DataTableのデータをLINQで抽出する

DataTableのSelectを使うと遅いって、よく見るのでLINQを使ってみた。 LINQがさっぱり分からなくて、とりあえずSelectの変わりになる程度のを作成した。 ItemTable (Index作成済み)には ITEM_NO, ITEM_NAME SeihinTable (Index作成済み)には SEIHIN_NO, SEIH…

Try Catchの例外を無効にする

Try Catchの例外を無効にするというか、例外発生時にコード上で停止させる方法です。 Try Catchを書くのは良いけど、エラーが出ても「動いてるように見える」のでデバッグ時には「ここでエラーでたよ!」と教えて欲しいです。 Visual Studio 2010を使用して…

DataGridViewで複数行の選択をDataRowにコピー

DataGridViewで複数行選択したデータをDataRowの配列に入れたい。 選択している1行をDataRowに入れるのはすぐに見つかった。 もっと良いやり方があるかもしれないけどメモ。 DataGridView.DataSourceにDataTableが割り付いていること。 If dgv.SelectedRows.…

DateTimePickerの選択範囲日の設定

DateTimePickerで選択範囲の日を設定するには DateTimePicker.MinDate DateTimePicker.MaxDate に日付を設定する。 次の点に注意すること MinDate = 2015/02/01 MaxDate = 2015/02/04 として、2015/03/01~2015/03/03を設定しなおす場合 MinDateに2015/03/01…

DataTableのコピー

DataTableのCopyメソッドを使用すると、値も含めてコピーできる。 コピー先のDataTableを変更しても、コピー元のデータは変わらない。 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim dt1 As New DataTab…

設定ファイルにINIをやめてXMLにする

INIファイルに慣れすぎて「今更、XMLなんて・・・」と思ってたけど勉強がてら設定ファイルをXMLにしてみる。 次のINIファイルを [AlarmSetting] OutputTime = 30 Temperature1_Output = True Temperature1_HiHiValue = 98.0 Temperature1_HiValue = 95.0 Tem…

PCの時刻同期を徐々に行う

※Windows 10だとユーザーアカウント制御のため時刻合わせが出来ないと思います。 管理者権限で実行する(タスクスケジューラから管理者権限で実行)等の対策が必要です。 PCの時刻同期をすると、設定する時刻にいっきに設定されます。 時刻が進む分には良いか…

VB.NETで月の末日を取得する

指定した月に1か月足して1日引いて・・・と求めていたけどDaysInMonth()で取得できる。 Dim temp As DateTime = DateTime.Now() Debug.Print(DateTime.DaysInMonth(temp.Year, temp.Month)) '末日を返すサンプル Public Function LastDay(d As DateTime) As …

Labelにアンチエイリアス(簡単に)

VB.NETのLabelにアンチエイリアスをしたかったけど出来なかったので調べた。 アンチエイリアス ラベル ユーザー コントロールを作成する方法 http://msdn.microsoft.com/ja-jp/library/cc440848.aspx Labelそのものにアンチエイリアスの設定が出来ないので、…

DataGridViewでセルを選択させない

DBから取得した値をDataGridViewに表示するだけで選択をさせない。 DBから取得した値で行を色分けもする。 選択したときの色を、行の背景色と同じにすれば良い。 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Lo…