2020-12-01から1ヶ月間の記事一覧

LINQ:複数項目のSelect

'---複数項目Selectする場合は、匿名クラスに値を入れないといけない Dim list = list6.Select(Function(x) New With {.GrantSum = x.UserGrant + 100, .UserGrant}) For Each x In list Console.WriteLine(x.GrantSum & " " & x.UserGrant) Next ’---Select…

フォーム間の値の受け渡し

■値を渡すフォームを開く側 '---passRecValueを授受する値とする。 Dim passRecValue as ClassTest ’---passRecValueに渡す値をセット passRecValue =渡し元Formでの処理 '---RecFormを渡し先Formとする。このメソッドの戻り値で ’---渡し先Formで処理された…

Propertyに対するリフレクション

VB

<<準備>> Dim tUser As New TUserInfo Dim tList As New TData(Of TUserInfo) Dim tdUsr As New TDUserInfo(tUser, tList) (*)TDataはジェネリックな自作クラス (*)tList.DlListは、List(Of T) ①実行時型情報取得 Dim typ As Type = tList.GetType Dim typ2 …

BaseForm

Public Class BaseForm Implements IBaseControl, IFormInit <DefaultValue(0)> <Browsable(True)> <Description("当Controlを使用可能となるRoleId")> Public Property RoleId As Integer Implements IBaseControl.RoleId Sub New() InitializeComponent() Me.Font = New Font(BaseConstants.FONT_MEIRYO, 9) Me.MaximizeBox = Fals…</description("当controlを使用可能となるroleid")></browsable(true)></defaultvalue(0)>

BaseTestBox

Imports System.ComponentModelImports System.Web.Caching Public Class BaseTextBox Implements IBaseControl <DefaultValue(0)> <Browsable(True)> <Description("当Controlを使用可能となるRoleId")> Public Property RoleId As Integer = 0 Implements IBaseControl.RoleId Private _font As Font = New Font(BaseConstants.FON…</description("当controlを使用可能となるroleid")></browsable(true)></defaultvalue(0)>

BaseDataGridView

ColumnHeadersHeightSizeModeをEnableResizingにしないと ColumnHeaderの高さを変更しても反映されないが、 なぜかここで設定した値が使用先で反映されない。 使用先で手動にてColumnHeadersHeightSizeModeをEnableResizing に変更する必要がある。 Imports …

LINQ:クラスのリストから項目、値を条件に指定し削除

■条件指定にて削除 DList.RemoveAll(Function(x) x.GetType().GetProperty(keyName). GetValue(x) = keyValue) ・Dlist:削除対象List ・keyName:条件を掛ける対象列名 ・keyValue:条件値

変数、オブジェクトの型名を取得する

VB

■単一データの場合 ・item.GetType.Name ■GenericなList等の場合 List.GetTypeでは正しく取得できない。 List内の一つのデータに対して行う ・List(0).GetType.Name

LISTにLINQのOrderByを使うとList型でなくなる

■ListをLINQのOrderByで並べ変え、再度Listにセットすると型が違う為エラーとなる OrderBy結果をToListすることで、Listに変換可能。 (*)NGケース Dim testList as Lits(T) = workList.OrderBy(Function(x) x.Id) (*)OKケース Dim testList as Lits(T) = wor…

DataGridView:CurrentRowがセットされない

■CurrentoRowは挙動に変なとこがある。SelectedRowsを使え Me.DgvUserInfo.SelectedRows(0).Cells(NameOf(TUserInfo.UserId)).Value 理由はよくわからないが、データ読込後に自動でCurrentRowがセット されない場合がある。 DataSourceを再セットすると消え…

DELETE句でJOIN

SQL

■DELETE句でJOINする場合は、DELETEの後に消す対象のテーブル名を記述DELETE g FROM GrantRoles gLEFT OUTER JOIN roles r ONg.roleid = r.roleidWHEREr.roleid IS NULL

継承時のコンストラクタについて

VB

■実行されるコンストラクタ ・継承時は、基底クラスのコンストラクタも同時に実行される。 実行順序は、基底クラス→サブクラスとなる。 何階層にも渡って継承されているクラスの場合、大本の既定クラスにまで さかのぼり実行される。 ■基底クラスにデフォル…

List(T)のコピー

VB

’---コピー元List:listDim list As List(Of TAgmtHoliday) '---コピー先List:upList Dim upList As List(Of TAgmtHoliday) = New List(Of TAgmtHoliday)(list)

カスタムコントロールの既定のpropertyの上書き

VB

■独自のpropertyは自動実装propertyでサクッとできる <DefaultValue(0)> <Browsable(True)> <Description("当Controlを使用可能となるRoleId")> Public Property RoleId As Integer = 0 ’上記の様に、propertyの初期化で初期値も与えて置ける。 ■規定のpropertyはShadowsなりしないと駄目っぽい Private _columnHeadersHeightSizeMode As DataGri</description("当controlを使用可能となるroleid")></browsable(true)></defaultvalue(0)>…

Form上のContextMenuStripを取得する

VB

■Form.Controlsでループしても、ContextMenuStripとその中身は取得できない。 CpntextMenuStrip内のItemでループする必要がある。 For Each var In ctr.Items (*)varにContextMenuStrip内のToolStripMenuItemがセットされる Next ・ctr:ContextMenuStrip

ComboBox:Textに注意

■ComboBoxの値取得には、.Textや.SelectedValueが使えるが、Textは注意が必要。 DropDonwSytleをDropDownとDropDonwListにした場合では、それぞれ各イベントの 走るタイミングが違うのだが、特にDrowDown(Edit可能)の場合に、いくつかの 変更後イベント時、…

WindowsForm:よく設定するproperty

■MaximizeBox:最大化ボタンの表示/非表示 ■MinimaizeBox:最小化ボタンの表示/非表示 ■FormBorderStyle:Fixed〇〇にすることで、フォーム自体のリサイズを禁止する

OverrideとShadow

VB

OverrideもShadowも、親Classて定義されているメソッドの内容を 子クラスで変更する際に使用されるが、挙動は少し事なる。 ■Shadow Public Class class1 Sub test() MessageBox.Show("Class1") End Sub End ClassPublic Class class2 Inherits class1 Shadow…

カスタムコントロール(自プロジェクト内で)

VB

①ソリューションエクスプローラで右クリック ②新規追加⇒カスタムコントロールを指定 (ユーザコントロールではないので注意) ③追加したファイルのDesingner.vbを開き、継承するクラスを変更 Inherits System.Windows.Forms.Control⇒ Inherits System.Windows.…

TListClass(TList)

Imports System.ComponentModelImports System.Data.SqlClientImports System.Reflection Public Class TData(Of T As New) Implements IDisposable Public Property DTable() As DataTable Public Property DList() As List(Of T) Public Sub New() Me.DLis…

TClass(T〇〇)

Public Class TUserInfo Implements ITData Public Property UserId As String Public Property UserName As String Public Property UserPassword As String Public Property UserGrant As Integer Public Property GrantText As String Public Property Us…

UpdateClass(TDUpd〇〇)

Imports System.Data.SqlClientImports System.TextPublic Class TDUpdUserInfo Inherits BaseDAO Private Const TABLE_NAME As String = "UserInfo" Private ReadOnly _tCls As TUserInfo Sub New(ByVal tCls As TUserInfo) MyBase.New _tCls = tCls End Su…

InsertClass(TDIns〇〇)

Imports System.Data.SqlClientImports System.Text Public Class TDInsUserInfo Inherits BaseDAO Private Const TABLE_NAME As String = "UserInfo" Private ReadOnly _tCls As TUserInfo Sub New(ByVal tCls As TUserInfo) MyBase.New _tCls = tCls End S…

SelectClass(TD〇〇)

Imports System.Data.SqlClientImports System.Text Public Class TDControlNoManager Inherits BaseDAO Private Const TABLE_NAME As String = "ControlNoManager" Public Property TData As TControlNoManager Public Property DataList As TData(Of TCont…

DAO

Imports System.Data.SqlClientImports System.Runtime.CompilerServices Public MustInherit Class BaseDAO Private connection As SqlConnection Public Sub Execute() Me.connection = New SqlConnection(GetConfigParameters.GetMSSQLConnectString) Usi…

DataGridView:最終列の幅をDGVの全体幅に合わせる

■以下の処理を読み出し時やColumnWidthChangedイベントにセット (*)最終列の幅を、DGV全体幅-(全列幅-最終列幅+スクロールバー幅+RowHeader幅) にすればよい。 Public Sub DataGridViewLastColumnWidthSetting(ByVal ctrl As DataGridView) Dim allWidth As …

DataGridViewのProperty色々

(1)新規行追加の許可/不許可 ・AllowUserToAddRows True/False (2)奇数行のスタイル設定 ・AlternatingRowsDefaultCellStyle (3)偶数行のスタイル設定 ・RowTemplate‐DefaultCellStyle (4)列幅の自動調整を設定 ・DataGridViewAutoSizeColumnsMode -AllCells…

Listの先頭に要素を追加

VB

■Listの先頭(任意の位置)に要素を追加するには、Insertを使う ・tList.Insert(Index,要素) Index:追加位置。0を指定すれば先頭に追加される。 ■Listの最後尾に追加する場合はAddでOK。

CheckedListBox:Itemのセット

■CheckedListBox CheckedListBoxは何故かDataSourceが使えない…。 (*)Propertyにはあるが、DataSourceに値をセットした時点で何故かエラー。 ■仕方ないのでItemをAddする Dim wList As List(T) Dim wkp As KeyValuePair(Of Integer, String) For Each wrk In…

DataTableをEntityクラスのListに展開する

VB

Protected Sub ConvertToTClass(Of T As New)() Dim tBase As New T _tList = New List(Of ITData) Dim properties As PropertyDescriptorCollection = TypeDescriptor.GetProperties(tBase.GetType) For Each dRow In _dt.Rows tBase = New T For Each prop…