TIL

Today I Leaned. 無理せず。できるときに。自分のペースで。

VisualStudio2017で「ソースは利用できません」っていうエラー出た

プログラム作ってて、実行してたら「ソースは利用できません」っていうエラー出たから、その時の対処法メモしておく。

以下の2つを試してみた結果、エラーが出なくなった

  • VisualStudioの ツール - オプション - デバッグ - 全般 - 「アドレスレベルのデバッグを有効にする」のチェックを外す
  • VisualStudioの ツール - オプション - デバッグ - 全般 - 「マイコードのみをゆうこうにする」

参考文献

デバック中に逆アセンブルのソースコードが出てくるのを禁止できませんか?

SQLの組み立て方

  • 中から、一つ一つ、足していく。
  • 最初は日本語で書く(テーブル、カラム...すべて)
    • 全部できたら、物理名に翻訳する

これで、少しは書きやすくなった

外からは読み取り専用で中では変更できるようにする ReadOnlyとProperty - VB.NET

Public ReadOnly Propertyで定義してあげればよい。

Public Class TestClass

    Private _testStr As String

    Public ReadOnly Property testStr As String
        Get
            Return _testStr
        End Get
    End Property

End Class

Public ReadOnlyだと、中からも変更できなくなってしまうため、Propertyを使う!!!

これ知った時、感動した!!!!

DataGridViewのコンボボックスの列を追加する。

「コンボボックスの表示のテキスト」と「実際の値」を別にして、コンボボックスを表示するにはDataGridViewComboBoxColumnDataSourceに設定する必要がある。

こんな感じでやりたい

f:id:tmg1998:20171206133912p:plain

以下、ソース

ChoiceContainerクラスは項目を格納するためのクラスとなっている

' テキスト列の追加
DetailDataGridView1.Columns.Add(
    New DataGridViewTextBoxColumn With {
        .HeaderText = "名前",
        .DataPropertyName = "Name"
    }
)

' -----------------------------------------------
' == コンボボックスの項目リストの作成 ==
Dim choiceList As New List(Of ChoiceContainer)

choiceList.Add(New ChoiceContainer("1", "男"))
choiceList.Add(New ChoiceContainer("2", "女"))

' == 列の作成 ==
Dim cmbBoxCol As New DataGridViewComboBoxColumn

cmbBoxCol.HeaderText = "性別"
' DataGridView1.DataSourceに設定したデータ内で表示したいプロパティと同じ名前
cmbBoxCol.DataPropertyName = "Gender"

' コンボボックスの項目リストを設定する
cmbBoxCol.DataSource = choiceList

' コンボボックスに表示するコンテナ(ChoiceContainer)のプロパティ(ValueとDisplayText)と一致させる
cmbBoxCol.DisplayMember = "DisplayText"
cmbBoxCol.ValueMember = "Value"

' 列へ追加
DataGridView1.Columns.Add(cmbBoxCol)


' 表示データ作成
Dim testList As New List(Of Test)
testList.Add(New Test("太郎", "1"))
testList.Add(New Test("花子", "2"))

DataGridView1.DataSource = TestList
''' <summary>
''' コンボボックスの項目コンテナ
''' </summary>
Public Class ChoiceContainer
    ''' <summary>実際の値</summary>
    Public Property Value As String

    ''' <summary>表示テキスト</summary>
    Public Property DisplayText As String

    Public Sub New(ByVal value As String, ByVal displayText As String)
        Me.Value = value
        Me.DisplayText = displayText
    End Sub
End Class
Public Class Test
    Public Property Name As String
    Public Property Gender As String

    Public Sub New(name As String, gender As String)
        Me.Name = name
        Me.Gender = gender
    End Sub
End Class

.NETのソースコードを見る

.NETのソースコードを見るには

をみる

ソースはC#だけど、VB.NETってないのかな...

GitHubで管理?されているっぽい

github.com

参考文献

.Netのソースコードを読む - Qiita

ラズパイにDockerをインストールする

ここを参考にいれてみた

curl -sSL https://get.docker.com | sh

でインストールできた。簡単!

参考文献

Raspberry PiにDockerを入れる - Qiita

Visual Studio for Mac で error MSB4057 っていうエラー出た

Visual Studio for Mac をインストールして、Hello World! しようと思ったら、エラー出た...

error MSB4057: The target "Build" does not exist in the project.

調べてみると、以下のようにすると解消されるらしい。

プロジェクト > [プロジェクト名] オプション > ビルド 全般 > MS Build ビルドエンジンを使用します のチェックを外す!!

解決できてよかった

参考文献

VB.NET project does not build: Error The target build does not exist in the project MSB4057 - Developer Community