Wednesday, September 17, 2014

[C#] Console 應用程式路徑

MVA Twenty C# Questions Explained - [04 How do I get the application's path in a C# console app?]

Console 路徑
namespace MVATwentyQuestions
{
    class Program
    {
        static void Main(string[] args)
        {
            // 利用 Reflection 來進行
            string ConsolePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
            Console.WriteLine(System.IO.Path.GetDirectoryName(ConsolePath));
        }
    }
}
Winform 路徑
private void btnPath_Click(object sender, EventArgs e)
{
    string WinformPath = Application.StartupPath;
    MessageBox.Show(WinformPath);
}

Tuesday, September 16, 2014

[C#] Interface

此論壇問題練習是根據前輩提供給原 PO 的建議
如果您是寫win form可以寫以下功能:form1、form2 都可以開啟 form3,form1 有text box、form2 有combo box,請寫出 form3 button click 後可以取得開始自己的那個表單裡控制項的值
  • 建立 IDemo Interface 並建立 showData Method
namespace WindowsFormsApplication1
{
    public interface IDemo
    {
        string showData();
    }
}

Monday, September 15, 2014

[ASP.NET] 格式化日期資料

拿論壇問題來練習一下
資料在 MS SQL 內是利用 date 資料型態 儲存,但是在 DataGridView 上卻連時間都顯示出來,EX:MS SQL => 2014/08/24、GrdView => 2014/08/24 2014/8/26 上午 12:00:00,要如何在 DataGridView 只顯示 2014/08/24
  • 直接在控件上設定 DataFormatString
[ASP.NET] 格式化日期資料-1

[ASP.NET] 格式化日期資料-2

在 GridView 控件上設定完成後,可以在 .aspx 內看見 DataFormatString 設定值

[ASP.NET] 格式化日期資料-3
  • 利用 Code 設定 DataFormatString
using System.Data;
using System.Data.SqlClient;

namespace DateFormat
{
    public partial class Demo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                string connString = @"Data Source=Win7\SQL2012;Initial Catalog=AdventureWorks2012;Integrated Security=True";
                using (SqlConnection conn = new SqlConnection(connString))
                {
                    string TSQL = "SELECT Data AS Data1 , Data AS Data2 FROM dbo.Demo";
                    SqlDataAdapter da = new SqlDataAdapter(TSQL, connString);
                    DataTable dt = new DataTable("Demo");
                    da.Fill(dt);

                    // 設定 DataFormatString
                    BoundField colFormat = GridView1.Columns[1] as BoundField;
                    colFormat.DataFormatString = "{0:yyyy/MM/dd}";
     
                    GridView1.DataSource = dt;
                    GridView1.DataBind();
                }
            }
        }
    }
}
[ASP.NET] 格式化日期資料-4

Saturday, September 13, 2014

0Y4M-翻身

手不會被身體壓住後,翻成功的機率越來越高,在過一陣子應該就會爬啦 ~~


Wednesday, September 10, 2014

[C#] 呼叫父建構子

MVA Twenty C# Questions Explained - [05 How do you call a base constructor in C#?]
namespace MVATwentyQuestions
{
    class Test
    {
        // 故意用 public 來方便 demo,實務上應該設為 private
        public string _name = "";

        public Test(string name)
        {
            _name = name;
        }

        public virtual void ConvertToUpper()
        {
            _name = _name.ToUpper();
        }
    }
}
namespace MVATwentyQuestions
{
    class InheritTest : Test
    {
        // 錯誤的呼叫方式
        // base("NewName");

        // Demo1 和 Demo2 只能存在一個,請自行轉換 comment 來觀察結果

        // demo1:正確呼叫 base 的方式
        public InheritTest(string name): base(name)
        {

        }

        // demo2:呼叫 base 前,先利用 method 把參數都變成大寫
        public InheritTest(string name): base(ModifyBase(name))
        {

        }

        private static string ModifyBase(string newName)
        {
            return newName.ToUpper();
        }
    }
}
namespace MVATwentyQuestions
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine();
            Test nTest = new Test("Base");
            Console.WriteLine(nTest._name);

            InheritTest iTest = new InheritTest("NewName");
            Console.WriteLine(iTest._name);
        }
    }
}

Demo1 結果
[C#] 呼叫父建構子 -1

Demo2 結果
[C#] 呼叫父建構子 -2