顯示具有 C# 標籤的文章。 顯示所有文章
顯示具有 C# 標籤的文章。 顯示所有文章

2012年8月6日 星期一

C# webBrowser方法

使用webBrowser控制時
想利用程式來執行網頁做到監控或是自動輸入功能
所以介紹一下
webBrowser的一些簡單使用方式

登入帳號
 HtmlElement ClickBtn = null;
 HtmlDocument doc = webBrowser1.Document;
            for (int i = 0; i < doc.All.Count; i++)
            {
                if (doc.All[i].TagName.ToUpper().Equals("INPUT"))
                {
                    switch (doc.All[i].Name)
                    {
                        case "login":   //找login的輸入格
                            doc.All[i].InnerText = Login;
                            break;
                        case "password":   //找password的輸入格
                            doc.All[i].InnerText = Pw;
                            break;
                        case "submitbtn":    //找submitbtn的按鈕
                            ClickBtn = doc.All[i];
                            break;
                    }
                }
            }
            try
            {
                ClickBtn.InvokeMember("Click");
                webBrowser1.Navigate(URL);
            }
            catch ()
            {
            } 



抓取值
            HtmlDocument doc = webBrowser1.Document;
            HtmlElement table1 = doc.GetElementsByTagName("table")[7];  //找第7個table
            HtmlElement tr1 = table1.GetElementsByTagName("tr")[3];  //找第3個tr
            HtmlElement td1 = tr1.GetElementsByTagName("td")[1];     //找第1個td
            label1.Text = td1.InnerText;          //SHOW出

2012年4月17日 星期二

C# SQL connectionString 連接至webconfig

紀錄一下 把DB連接字串設定從webconfig讀取 SqlDataSource1.ConnectionString = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

2011年11月14日 星期一

C# Web service

最近研究一下 web service
因為 新增一個web service
VS已經幫你做好範例hello world
所以
很簡單的
照弄一個就能跑了
只是public 上面要多個 [WebMethod]
才會被讀取到

然後前端要讀取
要先將web service加入Service References中
給予web service的URL 給名稱就行了
宣告只用

ServiceReference1.Service1SoapClient newServiceReference = new ServiceReference1.Service1SoapClient();


另外提一下
FW4.0沒有web service可以選
要改成3.5才有
4.0已經被WCF吃掉了 XD

2011年10月5日 星期三

C# datatable 插入其他的datarow

當如果宣告
Datarow時候沒有宣告成屬於datatable的Datarow時候
想要將這個Datarow插入是不行的
會跟你說
This row already belongs to another table.
所以勒...
插入時候必須用ImportRow


Datatable.ImportRow(NewDatarow);

C# datatable 複製格式

一開始以為...
datatable格式可以用這招複製

DataTable NewDatatable = OldDatatable;
NewDatatable.Rows.Clear();


結果
當我第二步清除NewDatatable時候 舊的也會被砍掉!!!!!
囧
後來才知道要用這方式複製格式...

DataTable NewDatatable = OldDatatable.Clone();


XD

2011年8月30日 星期二

Asp.net Master按鈕在子層執行

其實其他功能也都可以
只是Button是最常被用到 所以拿出來講

應該有人會跟我一樣
想要把Button擺Master內
但是希望某幾個子層會發動做些事情吧

所以
提供下列這方法

在子網頁的.aspx 加上

<%@ MasterType VirtualPath="~/MainMaster.master"%>


在Master.cs 加上

public delegate void MasterPageEventHandler(object sender, System.EventArgs e);
public partial class MainMaster : System.Web.UI.MasterPage
{
public event MasterPageEventHandler MasterButtonMain;
protected void LinkButtonMain_Click(object sender, EventArgs e)
{
if (MasterButtonMain != null)
MasterButtonMain(sender, e);
}
}


在子網頁.CS 加上

protected void Page_Load(object sender, EventArgs e)
{
Master.MasterButtonMain += new MasterPageEventHandler(MasterButtonMain);
}
void MasterButtonMain(object sender, EventArgs e)
{
//你所需的程式
}


蠻特別的玩法 XDD
大家可以玩玩看

2011年3月27日 星期日

2011年3月24日 星期四

C# Process Bat Show 訊息框

一般來說
如果要跑Bat
看到很多網頁都是把訊息框關閉
把值傳入Form內顯示出來
但是勒
我發現如果回傳的字串太多顯示字元太多
不知道為啥
他就當掉了 囧
所以勒
我就把顯示框顯示+關閉回傳訊息
讓他直接彈跳出一個CMD顯示視窗出來顯示訊息
結果意外的順暢啊!!!!!

如果沒有要抓Bat內的顯示字串
單獨只是要跑而已
其實可以不要關閉顯示視窗


//ProcessRunInfo.RedirectStandardError = true;
//ProcessRunInfo.RedirectStandardInput = true;
//ProcessRunInfo.RedirectStandardOutput = true;
ProcessRunInfo.CreateNoWindow = false;
//ReturnString = ProcessRun.StandardOutput.ReadToEnd(); //將結果SHOW出

把大多數回傳的部份都註解(關掉)
建立一個視窗出來
不回傳結果
這樣就可以了

2011年3月3日 星期四

C# Process 中途輸入值

StandardInput 可以在執行後 如需輸入值
可以用這個將值帶入


ProcessRun.Start();
ProcessRun.StandardInput.Write(WriteLine);
ProcessRun.WaitForExit();

2011年2月20日 星期日

C# 多執行緒 引用元件

常常用到多執行緒時候
發現你的元件不能跑
試看看這樣的方式


if (InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate
{
textBox1.Text += "Hi";
textBox2.Text += "OK!!";
}));
return;
}

2011年1月27日 星期四

C# String.join 字串合併

記錄一下
可以用來串字串
就不用判斷 是不是第一個 還是最後一個的功能
直接用就好了
不過他要用Array

string.Join(",", StringValue.ToArray())

2011年1月25日 星期二

C# Copy DataGridView 資料

懶的自己全選複製
所以寫成一個Button可以點


dataGridView1.SelectAll();
if (this.dataGridView1
.GetCellCount(DataGridViewElementStates.Selected) > 0)
{
try
{
// Add the selection to the clipboard.
Clipboard.SetDataObject(
this.dataGridView1.GetClipboardContent());
}
catch (System.Runtime.InteropServices.ExternalException)
{
}
}


參考網站

2011年1月20日 星期四

C# 執行程式 Or Cmd指令

用C#跑process來執行程式或是下 Cmd指令


System.Diagnostics.Process ProcessRun = new Process();
ProcessRun.StartInfo.FileName = "cmd.exe";
//選擇執行程式OR CMD 如果要下程式則可打上路徑+程式名
ProcessRun.StartInfo.UseShellExecute = false;
ProcessRun.StartInfo.RedirectStandardInput = true;
ProcessRun.StartInfo.RedirectStandardOutput = true;
ProcessRun.StartInfo.CreateNoWindow = true;

ProcessRun.Start();
//ProcessRun.StandardInput.WriteLine("dir"); //下CMD指令
ProcessRun.StandardInput.WriteLine("exit"); //下CMD指令

ProcessRun.WaitForExit();
this.textBox1.Text = textBox1.Text + ProcessRun.StandardOutput.ReadToEnd(); //將結果SHOW出
ProcessRun.Close();

2010年11月25日 星期四

C# ?? 問號 用法

是用來判斷是否為Null 如果是Null 回傳 ?? 後方的值
如果不是Null 回傳?? 前方的值


int x = null;
int y = x ?? -1;

2010年11月21日 星期日

C# Linq Pivot 樞紐

由於要做分析
所以有用到這東西
所以紀錄一下
Linq 用法


var LinqDataSource = from a in Linq.Mains
group a by a.date.Date into b
orderby b.Key
select new
{
Date = b.Key,
Total = b.Count(),
Project1 = b.Where(x => x.ProjectNo == 1).Count(),
Project3 = b.Where(x => x.ProjectNo == 3).Count(),
Project5 = b.Where(x => x.ProjectNo == 5).Count(),
Project7 = b.Where(x => x.ProjectNo == 7).Count(),
Project9 = b.Where(x => x.ProjectNo == 9).Count(),
};


不過麻煩的是
要先知道他欄位
但是像我想要直接用CODE抓欄位的就........
還在找動態方式...
先紀錄一下!!!

2010年11月18日 星期四

C# Chart 資料無值顯示零

一串資訊進來
每天日期不同
但是有幾天是跳過的
則要帶0進去

要用
下列方式

protected void Chart1_DataBound(object sender, EventArgs e)
{
Chart1.DataManipulator.InsertEmptyPoints(1, IntervalType.Days, "Series1");
}


這樣畫出來的曲線圖才會有0值 不然都會直接從A直接連到B點
資訊就會錯誤了

2010年10月27日 星期三

C# throw 用法

用於自訂錯誤上
就是如果遇到自訂問題
會中斷程式而跑出自己定義的錯誤
所以大致上都會搭配Try Catch使用

string message = string.Format("connection timeout");
throw new TimeoutException(message);


然後try Catch 就如這樣用

try
{
connn();
}
catch (TimeoutException ex)
{
MessageBox.Show(ex.ToString());
}

2010年10月22日 星期五

C# errorProvider

用來提示錯誤用
主要寫法

if (textBox1.Text == "")
errorProvider1.SetError(textBox1, "No Data!!");
else
errorProvider1.SetError(textBox1, "");


可提示textBox1錯誤部份

2010年10月21日 星期四

C# Form 開啟 新的Form

Form 開新的Form


private Form2 form2 = new Form2(); //外面全域變數


try //開啟地方
{
form2.Show();
}
catch
{
form2 = new Form2();
form2.Show();
}

這樣寫 如果Form2被關掉也可以繼續打開
如果有打開 不會再打開第二次

2010年10月20日 星期三

C# TabControl 不能改變 Tab

加入這個Selecting觸發 就行了

private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
e.Cancel = true;
}