Just a note on one way of accomplishing this:
Dim objAccess As Object = CreateObject("Access.Application")
objAccess.OpenCurrentDatabase(strFileName)
objAccess.Visible = True
objAccess.DoCmd.Maximize()
objAccess.DoCmd.OpenTable(strTableName)
Tuesday, August 21, 2007
Wednesday, August 15, 2007
Console and Windows Form in the same application
I recently needed to write a program that had an attended and unattended mode:
1. Create a console application in Visual Studio .NET.
2. Use this as a template:
Module Module1
Sub Main()
If Command$() = "-winform" Then
Dim frm As New testform()
Windows.Forms.Application.Run(frm)
Else
Console.WriteLine("this is the console option")
End If
End Sub
End Module
1. Create a console application in Visual Studio .NET.
2. Use this as a template:
Module Module1
Sub Main()
If Command$() = "-winform" Then
Dim frm As New testform()
Windows.Forms.Application.Run(frm)
Else
Console.WriteLine("this is the console option")
End If
End Sub
End Module
Saving window settings in My.Settings
This is useful for saving window position and size when an application closes and then restoring these settings when the application starts again.
1. In app.config, create three new settings:
- IsMaximized (Boolean)
- MainFormPosition (System.Drawing.Point)
- MainFormSize (System.Drawing.Size)
2. In the form's Load event handler, add the following code:
If My.Settings.MainFormPosition <> Nothing _
AndAlso My.Computer.Screen.Bounds.Contains(My.Settings.MainFormPosition) Then
Me.StartPosition = FormStartPosition.Manual
Me.Location = My.Settings.MainFormPosition
Else
Me.StartPosition = FormStartPosition.CenterScreen
End If
If My.Settings.IsMaximized <> Nothing _
AndAlso My.Settings.IsMaximized Then
Me.WindowState = FormWindowState.Maximized
Else
Me.WindowState = FormWindowState.Normal
End If
If My.Settings.MainFormSize <> Nothing Then
Me.Size = New Size(Math.Max(100, My.Settings.MainFormSize.Width), Math.Max(100, My.Settings.MainFormSize.Height))
End If
3. In the form's FormClosing event handler, add the following code:
If Me.WindowState = FormWindowState.Maximized Then
My.Settings.IsMaximized = True
My.Settings.MainFormPosition = New Point(Me.RestoreBounds.Left, Me.RestoreBounds.Top)
My.Settings.MainFormSize = New Size(Me.RestoreBounds.Width, Me.RestoreBounds.Height)
Else
My.Settings.IsMaximized = False
My.Settings.MainFormPosition = Me.Location
My.Settings.MainFormSize = Me.Size
End If
1. In app.config, create three new settings:
- IsMaximized (Boolean)
- MainFormPosition (System.Drawing.Point)
- MainFormSize (System.Drawing.Size)
2. In the form's Load event handler, add the following code:
If My.Settings.MainFormPosition <> Nothing _
AndAlso My.Computer.Screen.Bounds.Contains(My.Settings.MainFormPosition) Then
Me.StartPosition = FormStartPosition.Manual
Me.Location = My.Settings.MainFormPosition
Else
Me.StartPosition = FormStartPosition.CenterScreen
End If
If My.Settings.IsMaximized <> Nothing _
AndAlso My.Settings.IsMaximized Then
Me.WindowState = FormWindowState.Maximized
Else
Me.WindowState = FormWindowState.Normal
End If
If My.Settings.MainFormSize <> Nothing Then
Me.Size = New Size(Math.Max(100, My.Settings.MainFormSize.Width), Math.Max(100, My.Settings.MainFormSize.Height))
End If
3. In the form's FormClosing event handler, add the following code:
If Me.WindowState = FormWindowState.Maximized Then
My.Settings.IsMaximized = True
My.Settings.MainFormPosition = New Point(Me.RestoreBounds.Left, Me.RestoreBounds.Top)
My.Settings.MainFormSize = New Size(Me.RestoreBounds.Width, Me.RestoreBounds.Height)
Else
My.Settings.IsMaximized = False
My.Settings.MainFormPosition = Me.Location
My.Settings.MainFormSize = Me.Size
End If
Turning off auto-scrolling in a bound DataGridView
I was running into an issue where I didn't want the grid to auto-scroll or change the selected row when the underlying DataSource property was changed. Here's what I came up with:
' dgv is a DataGridView control with SelectionMode set to FullRowSelect and MultiSelect set to False.
Dim intSelectedIndex As Integer = 0
If dgv.SelectedRows.Count > 0 Then
intSelectedIndex = dgv.SelectedRows(0).Index
End If
Dim intDisplayIndex As Integer = dgv.FirstDisplayedScrollingRowIndex
' Set dgv.DataSource here
dgv.ClearSelection()
If intSelectedIndex < dgv.Rows.Count Then
dgv.Rows(intSelectedIndex).Selected = True
Else
dgv.Rows(dgv.Rows.Count - 1).Selected = True
End If
If intDisplayIndex > -1 Then
If intDisplayIndex <>
dgv.FirstDisplayedScrollingRowIndex = intDisplayIndex
Else
dgv.FirstDisplayedScrollingRowIndex = dgv.Rows.Count - 1
End If
End If
' dgv is a DataGridView control with SelectionMode set to FullRowSelect and MultiSelect set to False.
Dim intSelectedIndex As Integer = 0
If dgv.SelectedRows.Count > 0 Then
intSelectedIndex = dgv.SelectedRows(0).Index
End If
Dim intDisplayIndex As Integer = dgv.FirstDisplayedScrollingRowIndex
' Set dgv.DataSource here
dgv.ClearSelection()
If intSelectedIndex < dgv.Rows.Count Then
dgv.Rows(intSelectedIndex).Selected = True
Else
dgv.Rows(dgv.Rows.Count - 1).Selected = True
End If
If intDisplayIndex > -1 Then
If intDisplayIndex <>
dgv.FirstDisplayedScrollingRowIndex = intDisplayIndex
Else
dgv.FirstDisplayedScrollingRowIndex = dgv.Rows.Count - 1
End If
End If
Labels:
data bound,
DataGridView,
DataSource,
scrolling,
VB.NET
Subscribe to:
Posts (Atom)