AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Are you sure you want to exit?"); builder.setCancelable(false); builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { MainActivity.this.finish(); } }); builder.setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); builder.setNeutralButton("Test", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); AlertDialog alert = builder.create(); alert.show();
Attach items to a listview
A listview shows data provided by an adapter. To create a simple list use the following:
//Find the listview with id 'list' in the resources ListView listView = (ListView) findViewById(R.id.list); //Make a connection through an adapter listView.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, new String[] {"AAA", "BBB", "CCC"}));
Exact text start for DrawString with multiple font sizes.
Using DrawString texts have a horizontal spacing depending on their font size. In case of a list using multiple font sizes this looks strange. To start exactly at the same space use the following as a StringFormat argument for DrawString
StringFormat sFormat = new StringFormat(StringFormat.GenericTypographic);
Optionally execute a post-build executable
To execute a post-build command Visual C++ offers settings for both debug and release mode. Visual C# does not. To execute a post-build command based on debug or release mode use the following construct:
if $(ConfigurationName) == Release d:\test.exe $(TargetPath)
Showing time in DataGridView column
To show time in a DataGridView column set the column type to DataGridViewTextBoxColumn.
Set the columns DefaultCellStyle Format to ‘t’. You can do this in the designer or use the following code:
myGridView.Columns[0].DefaultCellStyle.Format = “t”; //0 is the required column, change if needed.
Now you can assign a DateTime to the cell value and time will show in the users preferred format (‘t’).
Drawing on a double buffered Panel , use PictureBox instead.
When in need of a simple double buffered panel, considering using a PictureBox instead. It is double buffered by default.
Check whether a form is valid.
When using modeless forms the user can close the form manually. Use the created property to check whether this is the case.
Example:
class Form1 : Form { Form2 modelessForm = null; //On mouse click show Form2 void onMouseClick(MouseButtons button, int x, int y) { if (modelessForm == null || !modelessForm.Created) { modelessForm = new Form2() } modelessForm.Show(); } }
Parsing values out of strings using culture independend settings
When parsing a value out of a string the current separator is used. In English this is a dot. In other languages a comma is being used.
When parsing a string the current culture setting is being used!
To ensure the dot is being used as separator use the method below:
double value = Convert.ToDouble(text, CultureInfo.InvariantCulture);
Executing a SQL stored procedure and read the result
Self explanatory snippet
SqlConnection db = new SqlConnection(Properties.Settings.Default.ConnectionString); try { db.Open(); SqlCommand cmd = new SqlCommand("storedProcedureName", db); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@parm1", SqlDbType.Int, 4)); cmd.Parameters.Add(new SqlParameter("@parm2", SqlDbType.Text)); cmd.Parameters["@parm1"].Value = 1234; cmd.Parameters["@parm2"].Value = "ABC"; SqlDataReader dataReader = cmd.ExecuteReader(); DataTable storedTable = new DataTable(); storedTable.Load(dataReader); foreach (DataRow row in storedTable.Rows) { //Here row contains the retrieved data. int test = Convert.ToInt32(row[0]); } storedTable.Dispose(); dataReader.Dispose(); cmd.Dispose(); db.Close(); db.Dispose(); db = null; } catch (Exception e) { System.Windows.Forms.MessageBox.Show(e.Message, "DB error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); }
Reading from a SQL database
Self explanatory snippet
SqlConnection db = new SqlConnection(Properties.Settings.Default.ConnectionString); try { db.Open(); SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT FirstName, LastName FROM Contacts", db); DataTable dataTable = new DataTable(); dataAdapter.Fill(dataTable); foreach(DataRow row in dataTable.Rows) { string firstName = row["FirstName"]; string lastName = row["LastName"]; } db.Close(); db.Dispose(); db = null;0 } catch (Exception e) { System.Windows.Forms.MessageBox.Show(e.Message, "DB error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); }