星期二, 8月 10, 2010

Winform & Thread 筆記

在Winform 使用執行 Thread存取控制項,發生以下錯誤
{"跨執行緒作業無效: 存取控制項 'listBox1' 時所使用的執行緒與建立控制項的執行緒不同。"}

星期三, 8月 04, 2010

Linq 與IEnumerable 介面

架 構上而言,只要是實作IEnumerable介面的物件,皆可做為LINQ To Objects的資料來源,那如果只是實作了IEnumerable介面的物件呢?以.NET Framework 1.1時我們常用的ArrayList來說,是否也能做為LINQ To Objects的資料來源呢?答案是肯定的,透過LINQ To Objects所提供的Cast或是OfType函式,我們可以輕易的將ArrayList轉變為實作IEnumerable介面的物 件,進而將IEnumerable介面的物件運用於LINQ To Objects中。

System.Linq提供的擴充功能
public static IEnumerable Cast(
 this IEnumerable source
)

型別參數

TResult
要將 source 之項目轉換成的型別。

參數

source
型別:System.Collections.IEnumerable 包含要轉換之項目的 IEnumerable
參考:http://www.dotblogs.com.tw/code6421/archive/2008/05/07/3890.aspx

c# 使用WMI

利用WMI 可以輕鬆取得電腦裡面許多相關的資訊
常用的Win32類別可以在msdn查詢相關資料
http://msdn.microsoft.com/en-us/library/aa394084%28v=VS.85%29.aspx 

System.Management提供了幾種常用的Class來取得WMI相關訊息  
  • ObjectQuery
  • ManagementObjectSearcher
  • ManagementObjectCollection
  • ManagementObject   
  • ManagementClass
以下兩個通常用在遠端查詢的時候使用
  • ConnectionOptions 
  • ManagementScope

星期二, 8月 03, 2010

DataGridView加入欄位

原本想要從datagridview利用Add增加Row,利用dataSource去回寫XML,但結果果然不行。
出現了︰
當控制項已繫結資料時,無法以程式設計的方式將資料列加入 DataGridView 的資料列集合。

xmlDataSet.ReadXml(@"d:\test.xml");
this.dataGridView1.DataSource = xmlDataSet;

this.dataGridView1.Rows.Add(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text);

 改成由dataSet 去作修改在Update dataGridView就OK!!


 xmlDataSet.Tables["pc"].Rows.Add(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text);

  this.dataGridView1.Update();

星期一, 8月 02, 2010

修復滑鼠右鍵選單裡的新增文字文件功能

步驟:
  • 1.打開附屬應用程式中的記事本,將下面的機碼輸入後存檔,(例如 text.reg)
  • 2.複製以下的 程式碼

c# 測試

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Excel;
using System.IO;