2015年12月3日 星期四

Android常用監聽

Button
View.OnClickListener
物件點一下

View.OnLongClickListener
物件長按

Radio
RadioGroup.OnCheckedChangeListener
單選群組中,選項變更

EditText
TextWatcher
輸入文字時

CheckBox
CompoundButton.OnCheckedChangeListener
複選選項變更


Spinner
AdapterView.OnitemSelectedListener
一選取項目就觸發






Android要使用Listener來監聽物件

//首先需在MainActivity implements監聽動作
public class MainActivity extends AppCompatActivity
implements RadioGroup.OnCheckedChangeListener,TextWatcher
{
RadioGroup unit;
EditText value;
TextView txv;

@Overrideprotected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
//設定要監聽的物件
    unit=(RadioGroup)findViewById(R.id.radioGroup);
    unit.setOnCheckedChangeListener(this);
    value=(EditText)findViewById(R.id.editText);
    value.addTextChangedListener(this);
    txv=(TextView)findViewById(R.id.textView2);

}

//以下是監聽的事件
@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {
    calc();
}


@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {

}

@Overridepublic void afterTextChanged(Editable s) {
    calc();
}

protected void calc(){
   
}

}

使用String.format()格式化字串

String.format()可以用來格式化字串

例如
浮點數取小數點後一位
String.format("%.1f",3.14159);會取得3.1

%將3.14159帶入
.1取得小數點後一位
f要轉換的值是浮點數

判斷EditText有無輸入值

要判斷EditText有無輸入值,可用以下方式判斷
if("".equals(editText.getText().toString().trim()))
{
}

或可用
editText.getText().length()== 0

editText.getText().toString() == null 
editText.getText().toString().equals("")

2015年10月19日 星期一

NTP SERVER LIST


要使用網路對時,可使用下列伺服器

tick.stdtime.gov.tw
tock.stdtime.gov.tw
time.stdtime.gov.tw
clock.stdtime.gov.tw
watch.stdtime.gov.tw

2015年10月13日 星期二

使用ajax非同步更新網頁資料

至https://jquery.com/
下載jquery,複製到網站伺服器上

在<head>中引用jquery
<script type="text/javascript" src="jquery-2.1.4.js"></script>


要非同步更新的物件
 <span id="LiveUsers" style="color:#99FF33;">目前人數0,總人數0</span>



計算人數的程式寫在ashx上,回傳字串為"1,1"使用java script,至每隔一秒更新資料


<script type="text/javascript">    

//至ashx取出回應的資料,
       function UserCountValue() {
           $.ajax({
               url: "VideoUserCount.ashx",  //程式路徑
               contentType: "text/plain",     //回傳資型態
               success: function (rvalue) {
                   var a = rvalue.split(',');    //拆解字串取出要顯示的值
                   $("#LiveUsers").text("目前人數 " + a[0] + ", 總人數 " + a[1]);                        
               },
           })
       }

//第一次啟動網頁時先執行一次
       UserCountValue();

//每隔一秒更新一次
       setInterval("UserCountValue()", 1000);    
 </script>

如需動態產生java script,可使用Page.ClientScript

在後置程式碼中,要動態產生java script可使用Page.ClientScript

共有三種模式

Page.ClientScript.RegisterClientScriptBlock

Page.ClientScript.RegisterStartupScript

Page.ClientScript.RegisterClientScriptInclude



Page.ClientScript.RegisterClientScriptBlock會產生在<form>標籤的下面


Page.ClientScript.RegisterClientScriptInclude會產生在<form>與</form>之間


Page.ClientScript.RegisterStartupScript會產生在</form>標籤的上面


範例
string ScriptText = @"alert('ok');";
                               
 Page.ClientScript.RegisterStartupScript(this.GetType(), "自訂名稱",ScriptText, true);

要取得其他網頁資料,可用 HttpWebRequest

在網頁中如有部份資訊來自其他網頁,可用HttpWebRequest來取得其他網頁資料,
以下範例使用ashx抓取某個網頁的xml資料,再取出想要的部份資料

// 建立HttpWebRequest物件
        HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://...");

//有需要登入的網頁,需增加登入帳號      
        myHttpWebRequest.Credentials = new NetworkCredential("帳號", "密碼");

 //取得HttpWebResponse物件
        HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();

 //取得關於HttpWebResponse資料流
        Stream receiveStream = myHttpWebResponse.GetResponseStream();
        Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

  // 建立資料流讀取物件
        StreamReader readStream = new StreamReader(receiveStream, encode);
        string ReadString = readStream.ReadToEnd();

//將資料流轉為xml文件
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(ReadString);

//找出預讀取的元素
        XmlNodeList NodeList = xmlDoc.SelectNodes("WowzaStreamingEngine/VHost/Application");


//使用迴圈取出資料
        foreach (XmlNode xn in NodeList)
        {
            if (xn["Name"].InnerText == "live")
            {        
                context.Response.Write(xn["ConnectionsCurrent"].InnerText+",");
                context.Response.Write(xn["ConnectionsTotal"].InnerText);                          
            }        
        }

//關閉 myHttpWebResponse及 readStream
        myHttpWebResponse.Close();
        readStream.Close();      

2015年7月21日 星期二

C#民國年西元年轉換

西元年轉民國年時,如果使用addyear(-1911)的方式,會有閏年的問題,例如2012/2/29使用addyear(-1911)會變成101/2/28,使用字串拆解的方式又過於冗長, NET Framework有提供方便的轉換方式,來解決這問題

西元年轉民國年
System.Globalization.CultureInfo tc = new System.Globalization.CultureInfo("zh-TW"); tc.DateTimeFormat.Calendar = new System.Globalization.TaiwanCalendar();
DateTime dt = DateTime.Now;
Response.Write(dt.ToString(tc));


西元年日期驗證
 DateTime dt = DateTime.Now;
 DateTime.TryParse("2015/7/21", out dt) ;


民國年轉西元年 
System.Globalization.CultureInfo tc = new System.Globalization.CultureInfo("zh-TW"); tc.DateTimeFormat.Calendar = new System.Globalization.TaiwanCalendar(); Response.Write(DateTime.Parse("104/7/21",tc).Date.ToString("d"));



民國年日期驗證
System.Globalization.CultureInfo tc = new System.Globalization.CultureInfo("zh-TW"); tc.DateTimeFormat.Calendar = new System.Globalization.TaiwanCalendar();
DateTime result;
try
 {
     result = DateTime.ParseExact("104/7/21", "d", tc);
     Response.Write("Ok");
 }
   catch (FormatException)
{
   Response.Write("Wrong");
 }

2015年6月23日 星期二

Asp.Net DropDownList在有連接DataSourceID時,如果預設要使用自定的ListItem

首先新增預設要顯示的ListItem,然後在DropDownList中的AppendDataBoundItems="True"即可,範例如下 請選擇

2015年3月6日 星期五

Windows ODBC

Windows2008之後,ODBC有分64及32的版本,預設的會以64位元為主,如果需要使用32位元的ODBC,需自行執行程式 64 位元 ODBC 位置:C:\Windows\System32\odbcad32.exe 32 位元 ODBC 位置:C:\Windows\SysWOW64\odbcad32.exe

2015年1月31日 星期六

Intel AC7260安裝事項

1.無線分連接的加密方式必須選擇WPA\WPA2-PSK,加密模式為AES才能夠支援,否則連線速度會被限制在54M 2.無線網路的WMM模式必須啟用 3.在使用Intel ac7260這張網卡時,如果不穩定或時常斷線,請上Intel網站將驅動程式更新到最新 4.網卡的進階選項中,HT模式要設為VHT模式 5.要知道目前無線網路速度,可點選網卡按右鍵,選擇狀態

2015年1月25日 星期日

要以程式的方式觸發某個事件

例如:在按鈕中要觸發另一PictureBox的Click事件 pictureBox1_Click(null, null); 或是 pictureBox1_Click(null,new EventArgs()); 如果是按鈕的話可用 Button1.PerformClick();

要判斷某個按鈕是否被按下

在KeyDown中按下某個按鈕才可執行某個動作,可用 //例如:要知道是否按下空白建 if (e.KeyCode == Keys.Space) { //要執行動作 } 如果是組合按鈕,例如:Ctrl+Alt+Q結束程式 if (e.Control == true && e.Alt==true && e.KeyCode==Keys.Q) { Application.Exit(); }

2015年1月20日 星期二

From全螢幕設定

在Form設計畫面中設定 1.FormBorderStyle=None 2.WindowState=Maximized 3.TopMost=true 在程式碼中加入 this.FormBorderStyle = FormBorderStyle.None; this.WindowState = FormWindowState.Maximized; this.TopMost = true;

2015年1月19日 星期一

.NET報表

在設計時需注意幾點,避免產生空白的第二頁 aspx設定 1.在崁入ReportView元件時,長寬要指定,以A4的尺寸來說,寬21cm,長29.7cm 2.ZoomMode設為FullPage rdlc設定 1.在工具列上的報表中,選擇報表屬性,裡面可以定義報表尺寸及邊界 2.主體的大小要設定