- AtomicObject OO Link, needs investigating
August 19, 2006
Useful Javascript Links
- Image Gallery implemented in Javascript - A smart looking web page.
- Javascript for beginners
You can always include the last update date on your page by using the following code:
<script language="JavaScript"> document.write("This page created by XXXXX Last update:" + document.lastModified); </script>
BeginInvoke On A Gui Object
Good article on BeginInvoke and Invoke differences
On the GUI class (form or control derived object):
private delegate void DataChanged(Object Sender, BindingEventArgs Args); private void HandleDataChanged(Object Sender, BindingEventArgs Args) { // If this delegate is invoked on another thread if (InvokeRequired) { // Asynchronously call THIS method later // but this time on our own GUI thread // BeginInvoke translates to a PostMessage call on // our window. BeginInvoke(new DataChangedDelegate(HandleDataChanged), new object[] { Sender, Args }); } else // when the method is invoked on the GUI thread { // Update our forms/controls as required UpdateGui(Args); } }
WIndows CE Notes.Links
- Cannot call BeginInvoke on a delegate in WIndows CE version of .NET
- Open Net Compact framework Library
Initializing A ComboBox In CE.NET With The Values of An Enum
SomeEnum status; int offset = 0; bool defined = false; do { status = (SomeEnum)offset++; defined = Enum.IsDefined(typeof(SomeEnum), status.ToString()); if (defined) { comboBox.Items.Add(status); } } while (IsDefined); comboBox.SelectedIndex = 0;
Using A ListView
To get a nice excel type view of the list set the properties 'View=Details' and 'GridLines=True' or put the following code in the designer
//this.listView.Anchor = //Dont forget to set the anchors appropriately this.listView.AllowColumnReorder = true; this.listView.View = System.Windows.Forms.View.Details; this.listView.GridLines = true; // Select highlights a full row this.listView.FullRowSelect = true; // Select a single row only this.listView.MultiSelect = false; // Keep selected rows highlited even when the control does not have the focus this.listView.HideDelection = false;Adding items to the ListView
private const int NAME_COLUMN = 0; private const int ID_COLUMN = 1; void PopulateListView() { // DONT call "listView.Clear()" or you'll lose all your // column data and then wonder why you table is empty! listView.Items.Clear(); // Add the item to the ListView string[] fields = new string[] { "column1string", "column2string", ... }; OR fields[NAME_COLUMN] = xxx.Name; fields[ID_COLUMN] = xxx.Id.ToString(); ... ListViewItem lvItem = new ListViewItem(fields); // Insert at the top of the listview control listView.Items.Insert(0, lvItem); // Append to the end of the ListView control listView.Items.Add(lvItem); // with custom listviewitems MyListViewItem li = new MyListViewItem(...) listView.Items.Add(li); }To update a column:
private void UpdateIdColumn(int id) { listView.Items[m_SelectedIndex].SubItems[ID_COLUMN].Text = id.ToString(); }Optionally define a custom list view item which holds a reference to one of your types XXX
internal class MyListViewItem : ListViewItem { internal MyListViewItem(XXX xxx) : base(new string[] { xxx.Name, xxx.Description, }) { XXX = xxx; } internal XXX XXX { get; set; } }
private void listView_SelectedIndexChanged(object sender, EventArgs e) { if (listView.SelectedItems.Count == 0) { // Are there any controls need enabling/ // disabling when the nothing is selected button.Enabled = false; return; } // Are there any controls need enabling/ // disabling when the nothing is selected otherCtrl.Enabled = true; foreach (ListViewItem lvi in lvParts.SelectedItems) { ((XXX)lvi.Tag).DoSomething(); // or MyCustomListItem li = lvi as MyCustomListItem; if (li != null) { li.XXX.DoSomething(); } break; } }Dont forget to add a method to resize the columns:
private void FitColumnsToListView() { int extra = ListViewSpareColumnSpace(lvParts); if (extra > 0) { lvParts.Columns[0].Width += extra; } } private int ListViewSpareColumnSpace(ListView lv) { if (lv.Columns.Count == 0) return 0; int width = lv.Size.Width; int usedWidth = 0; // 2 pixels for the divider lines foreach (ColumnHeader ch in lv.Columns) { usedWidth += ch.Width + 2; } int extra = width - usedWidth; return extra; }To disable selection of listview items, handle the ItemSelectionChanged event on the listView:
private void listView_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { if (e.IsSelected) e.Item.Selected = false; }
Use Reflection To Set A Value On A Field
Setting a field on an object by reflection
private static void SetFieldViaReflection(
object obj,
string fieldName,
object value)
{
Type InstanceType = Instance.GetType();
FieldInfo fi = InstanceType.GetField(fieldName,
BindingFlags.NonPublic | BindingFlags.Instance);
if (fi != null)
{
fi.SetValue(obj, value);
}
}
SetFieldByReflection(object, "m_field", somevalue as object);
Subscribe to:
Posts (Atom)