Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 107,657

HOME > .NET Framework > Forum > WinApp C# อธิบายปัญหาไม่ถูกครับ นึก คำศัพท์ทางโปรแกรมเมอร์ก็ไม่ถูกด้วย(5555)





 

WinApp C# อธิบายปัญหาไม่ถูกครับ นึก คำศัพท์ทางโปรแกรมเมอร์ก็ไม่ถูกด้วย(5555)

 



Topic : 133795



โพสกระทู้ ( 3,957 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook



พอดีเพิ่งเจอหานี้ แล้วอยากแก้แบบด่วนๆ ครับ
ปัญหาประมาณว่า ค่า ที่ประกาศไว้ มันไม่เปลี่ยนตามครับ

ผมลอง เทส ประมาณว่า
สร้าง static class ขึ้นมา ครับ

Code (C#)
 public static class Class1
    {
        public static void testExButton(this Button btn, string str)
        {
            btn.Click += new EventHandler((object sender, EventArgs e) =>
            {
                MessageBox.Show(str);
            });
        }
        
    }


จากนั้น ไปตั้งค่าใน ฟอร์ม ครับ

Code (C#)
 public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();

           button2.testExButton(s);

        }
        string s = "";
        private void button1_Click(object sender, EventArgs e)
        {
            s = DateTime.Now.ToString();
        }

    }


ผมใช้ extension method ของ Button ที่สร้างมา
คือ
Code (C#)
button2.testExButton(s);


เพื่อให้มัน MessageBox.Show ตามที่ใน Class1 ครับ

ปัญหาคือ ค่า s มันเปลี่ยนแล้ว จาก button1_Click
แต่ใน
Code (C#)
 btn.Click += new EventHandler((object sender, EventArgs e) =>
            {
                MessageBox.Show(str);
            });


ค่า str ยังเป็นค่า "" ตามค่า s เหมือนเดิมอยู่
ต้องทำยังไง ครับ ค่า str ถึงจะเปลี่ยนตามค่า s




Tag : .NET, Win (Windows App), C#







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2019-06-24 23:50:48 By : lamaka.tor View : 195 Reply : 16
 

 

No. 1

Guest


น่าจะให้อาจารย์หน้าฮี จัดสักหน่อยนะ
"คือถ้าจะเขียนโปรแกรมให้ดี ก็ต้องเข้าใจพิ้นฐานมันก่อน อย่าเรียนลัด
เข้าใจว่าเก่ง แต่ต้องเข้าใจหลักการก่อน โค้ดข้างบนง่ายนิดเดียว
แค่เข้าใจว่าอะไรทำก่อน ทำหลัง เท่านั้นครับ"

ถ้าอยากให้เข้าใจมากขึ้น ควรอ่านอันนี้ เขาเขียนได้ดีอยู่นะครับ
หรือจะไปอ่านแบบ eng ก็ไม่ว่ากันครับ ค้นหาคำว่า OOP เด้อ

https://www.tamemo.com/post/122/all-about-oop-1-class-and-object/






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-25 08:21:11 By : บัญดิษฐ
 


 

No. 2



โพสกระทู้ ( 3,957 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 1 เขียนโดย : บัญดิษฐ เมื่อวันที่ 2019-06-25 08:21:11
รายละเอียดของการตอบ ::
ถ้าเขียน แบบนี้มันก็ทำได้ครับ

66

แต่ผมอยากส่งตอนที่ สร้าง Form1 ครับ
คือ โค้ดจริง ต้องใช้เยอะครับ เลยไม่สะดวกที่จะมาเขียนตาม ตอนที่ค่า s มันเปลี่ยน
แสดงว่าผมคิด นี่ผิดหลักใช่ไม๊ครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-25 09:22:06 By : lamaka.tor
 

 

No. 3

Guest


Code (C#)
        public static string หำ = "";

        public static void testExButton(this Button btn,  string หำ)
        {
            btn.Click += new EventHandler((object sender, EventArgs e) =>
            {
                string X = string.IsNullOrEmpty(หำ) ? Form1.หำ : หำ;
               _= MessageBox.Show(X);
            });
        }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-25 12:03:21 By : xxx
 


 

No. 4



โพสกระทู้ ( 3,957 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

[quote-nojavascript:MM_openBrWindow('/upload_images.php','upload','scrollbars=no,resizable=no,width=612,height=620');=3]ตอบความคิดเห็นที่ : 3 เขียนโดย : xxx เมื่อวันที่ 2019-06-25 12:03:21
รายละเอียดของการตอบ ::
แบบนั้นมันได้ก็จริงแต่จะมีปัญหาเวลาเรียกใช้ทีละหลายๆ Button ไม๊ครับ


Code (C#)
public Form3()
       {
           InitializeComponent();
          button1.testExButton(s1);
          button2.testExButton(s2);
          button3.testExButton(s3);

       }


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-25 17:56:24 By : lamaka.tor
 


 

No. 5



โพสกระทู้ ( 3,957 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตัวนี้คือโค้ดจริงครับ
Code (C#)
public static void SetGridDefaultCellStyle(this System.Windows.Forms.DataGridView dgv,bool ShowID = true, bool SetManEdit = true,  int ColumnID = 1,string AutoID = "")
        {
            dgv.SetDefaultCellStyle();
            if (!ShowID)
            {
                dgv.Columns[0].ReadOnly = true;
                dgv.AllowUserToAddRows = false;
                dgv.AllowUserToDeleteRows = false;
                dgv.ReadOnly = true;
            }
            if (SetManEdit)
            {
                dgv.Columns[dgv.Columns.Count - 1].ReadOnly = true;
                dgv.Columns[dgv.Columns.Count - 1].Width = 250;
                dgv.Columns[dgv.Columns.Count - 2].ReadOnly = true;
                dgv.Columns[dgv.Columns.Count - 2].Width = 250;
                dgv.Columns[dgv.Columns.Count - 3].Width = 250;
               // if(id != null) dgv.Columns[ColumnID].Visible = false;

                dgv.CellValueChanged += new DataGridViewCellEventHandler((object sender, DataGridViewCellEventArgs e) =>
                {
                    DataGridView _dgv = sender as DataGridView;
                    if (e.RowIndex < 0) return;
                    if (!string.IsNullOrEmpty(UserLogin.EmployeeName))
                        dgv[_dgv.ColumnCount - 2, e.RowIndex].Value = UserLogin.EmployeeName;

                    dgv[_dgv.ColumnCount - 1, e.RowIndex].Value = DateTime.Now;
                    
                   /* if (id != null || e.RowIndex > 0)
                    {
                        
                        if (string.IsNullOrEmpty(dgv[ColumnID, e.RowIndex].Value.ToString()))
                            dgv[ColumnID, e.RowIndex].Value = id;
                    }
                    */
                    if (string.IsNullOrEmpty(AutoID) && string.IsNullOrEmpty(dgv[0, e.RowIndex].Value.ToString()))
                    {
                        string format = new Regex(@"(\d{1,})", RegexOptions.None).Replace(AutoID, "");
                        
                        if (e.RowIndex == 0)
                        {
                            dgv[0, e.RowIndex].Value = (1d).ToString(AutoID);
                        }
                        else
                        {
                            int _id = new Regex(@"(\d{1,})", RegexOptions.None).Matches(dgv[0, e.RowIndex - 1].Value.ToString())[0].Groups[1].Value.ToInt();
                            dgv[0, e.RowIndex].Value = (_id).ToString(AutoID);
                        }

                    }

                });

                dgv.KeyDown += new KeyEventHandler((object sender, System.Windows.Forms.KeyEventArgs e) =>
                {
                    if (e.KeyCode == System.Windows.Forms.Keys.Delete &&
                System.Windows.Forms.MessageBox.Show("คุณต้องการลบข้อมูลหรือไม่", "Warning", System.Windows.Forms.MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No
                && UserLogin.CheckUserConferm() == false)
                    {
                        DataGridView g = sender as DataGridView;
                        g.AllowUserToDeleteRows = false;
                    }

                });
            }
        }


จาก

Code (C#)
if (id != null || e.RowIndex > 0)
                    {
                        
                        if (string.IsNullOrEmpty(dgv[ColumnID, e.RowIndex].Value.ToString()))
                            dgv[ColumnID, e.RowIndex].Value = id;
                    }


ในโค้ด ด้านบน คือผมอยากให้ DataGridView มันเพิ่ม ค่า ID ต่างๆ เมื่อมีการเปลีย่นแปลง และ ค่า ID หลัก เป็นค่าว่าง ครับ
เช่น

ฟหดกฟ

คือให้มัน Add ค่า COMPANY_ID ใน DataGridView ครับ

ซึ่งในโปรแกรมมี DataGridView กับ ID ต่างๆเยอะมาก
ผมจึงเขียนเป็น Exten ออกมาเพื่อให้ใช้ได้กับทุก DataGridView
ติดอยู่จุดเดียว คือ มันรับค่าตั้งแต่แรกไปใช้ ไม่ใช่ค่าที่แก้แล้วครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-25 20:02:39 By : lamaka.tor
 


 

No. 6



โพสกระทู้ ( 3,957 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

พอดีงานเร่ง เลยต้องเขียนเหมือนเดิมไปก่อนครับ

333

แต่ก็ยังอยากได้วิธีแก้อยู่นะครับ

สำหรับท่านใดที่อยากลดโค้ด
เราสามารถใช้ delegate สำหรับๆ หลายๆ Control ได้นะครับ
อย่างเช่น โค้ดที่มันคล้ายๆกัน แบบนี้

456

เราก็ยุบให้เป็น แบบนี้

65

ถ้าอยากให้มันใช้ได้กับทุกฟอร์มก็เขียนไว้ใน Exten ประมาณนี้ครับ

65

vb.net

sgdddf


ประวัติการแก้ไข
2019-06-25 20:35:14
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-25 20:26:12 By : lamaka.tor
 


 

No. 7

Guest


Quote:
https://docs.microsoft.com/en-us/aspnet/core/mvc/advanced/app-parts?view=aspnetcore-2.2

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-26 11:46:04 By : xxx
 


 

No. 8

Guest


จาก #No 6 การลดโค๊ด จริงฯแล้วก็ไม่ได้เขียนแบบนี้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-26 11:58:28 By : xxx
 


 

No. 9



โพสกระทู้ ( 3,957 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 8 เขียนโดย : xxx เมื่อวันที่ 2019-06-26 11:58:28
รายละเอียดของการตอบ ::
ปกติเขียนกันยังไงบ้างครับ
ขอความกรุณา แนะนำตัวอย่างได้ไม๊ครับ
จะได้ไปปรับใช้ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-26 12:15:37 By : lamaka.tor
 


 

No. 10

Guest


@บัญดิษฐ
--- xxx คือหลานเหลนโหลนของหน้าฮี ถ้านับอายุ
1 อายุหายใจ
2 อายุปี
3 อายุร้อยปี
4 อายุพันปี
5 อายุหมื่อนปี
...
...
ปี้ปี้ปี้.... จะหน่วยนับอะไรก็ช่างแม่งมันเหอะ

xxx คิดได้ระดับนี้แสดงว่าไม่ธรรมดา (เขาเคยเล่าควยในใจให้ผมฟัง)
--- พี่พี่พี่ (ผมแอบยิ้มอยู่ในใจ เอ็งอายุหายใจแค่ 2 วินาที และตัวตรูกำลังจะตายด้วยวัยกำลังจะเข้าไกล้พันปีอายุ)


เขาเคยเล่าควยในใจให้ผมฟัง (xxx เขาเล่ามาให้ผมฟังอย่างนั้น ผมก็ต้องฟังเหตุผลเดียวก็คือ น้องสาว 2 คน ของมันหน้าตาดี คนหนึ่งขาว และอีกคนหนึ่งดำ)

...
...
...

SAP & Microsoft CRM/etc...

... เมื่อก่อนผมตอบโจทย์ไม่ได้ แต่วันนี้ไม่เหมือนเดิม


ผมใช้ศัพท์คำนี้ว่า CMS บนความต้องการของโปรแกรมเมอร์ ชาวไทย/ชาวทวย ทุกฯฯฯคน (รวมถึงสุนัขทุกตัวด้วย)
--- MVC อยากจะแก้ไข ก็แก้ไป
------ Model/View/Controller/etc...
--- อยากจะเพิ่ม อยากจะลบ ก็ทำไป
--- อยากเพิ่ม Table ในฐานข้อมูลจริง
--- อยากเพิ่ม หน้าจอ แสดงผลเอง
...
...
...
--- อยากไช้ Angular/React/Reแดก/ ห่าเหวอะไรก็ว่ากันไป
--- อยาก... ก็ทำไป ทำไปเลย

--- อยากใช้ Theme โน้นโน่นนี่ (Bootstrap 3/ BootStrap 4) อะไรก็ได้ก็ว่ากันไป

จากรูปภาพด้านล่าง ไม่ต้องลองจินตนาการว่า


ผมตอบโจทย์ได้แล้ว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-26 12:27:27 By : หน้าฮี
 


 

No. 11

Guest


Ass_01_Furture
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-26 12:29:42 By : หน้าฮี
 


 

No. 12

Guest


Code (XML)
    <link rel="stylesheet" href="~/assets2/css/ASS.css">
    <script>
        window.RootURL = '@Url.Content("~/")';
        console.log(window.RootURL);
    </script>
</head>
<body>
    @{
        var txtTopLeftMenus = System.IO.File.ReadAllText("./wwwroot/menus/TopLeftMenu.txt");
        var txtTopRightMenus = System.IO.File.ReadAllText("./wwwroot/menus/TopRightMenu.txt");
        //พวกอยากจะเพิ่มอยากจะลบอะไร ก็ทำไปตามสะดวก
    }
    <div class="ass-header">
        <div class="container">



ปล. สิ่งเหล่านี้ผมเตรียมเอาไว้ให้ แต่คนทำไม่ใช่ผม แต่เป็นพวกคุณเอง (อยากจะแก้ อยากจะเพิ่ม อยากจะลบ อยาก...)

หลักการคือ Inject

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-26 12:37:26 By : หน้าฮี
 


 

No. 13

Guest


@TOR_CHEMISTRY ถ้าคุณต้องการคำตอบ ค้นหาคำว่า Injet

ความต้องการของคุณมันไม่ง่ายแต่ก็ไม่ยาก

ความต้องการของผม ถ้าโปรแกรมเมอร์เขียนโค๊ดเข้ามายังโปรแกรมของผม อทิเช่น

Code (VB.NET)
Public Class หอยหาย
  Public Property Id As Integer
  Public Property Name As String
  Public Property Ass As String = "หายตอนไหนว่ะ"
 '...
End Class



ฉีด BootStrap
ฉีด css
ฉีด Html
ฉีด อยากแีดอะไรก็ฉีด ฉี่ด้วยก็ได้

เขียนหาเหวอีกตั้งมากมาย จะเขียนด้วยภาษาอะไรก็ตาม
--- มันก็ถูกฉีดเข้ามาได้ (Inject) และพร้อมใช้งาน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-26 12:52:45 By : หน้าฮี
 


 

No. 14

Guest


สิ่งที่ผมทำไปแล้วมีดังนี้
-- Model ชื่อว่า หอยModel.DLL (RDBMS ALLS)
-- View ชื่อว่า หอยView.DLL
-- Controller ชื่อว่า หอยController.DLL
-- JSFramework ชื่อว่า หอยJSFramwork.DLL
-- Boostrap Framework ชื่อว่า หอยBootstrap.DLL
------ เห็นอะไรสวยฯ อยากใช้ก็ใช้อันนั้นแหละ โปรแกรมของผมไม่ได้ห้ามเอาไว้ อยากทำอะไรก็ทำ
-- Html ชื่อว่า หอยHTML.DLL
-- css ชื่อว่า หอยCSS.DLL

เหลือแต่ว่าโปรแกรมเมอร์จะเขียน หอย???.DLL อะไรเพิ่มเติมเข้ามาอีก
(เพิ่ม/แก้ไข/ลบ ได้ด้วยโปรแกรมเมอร์เอง)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-26 13:00:34 By : หน้าฮี
 


 

No. 15

Guest


.NET Core ผมเอาอยู่ แต่ผมอยากจะใช้ ฺBlazor (มันพึ่งมา)
ไม่รู้ว่ามันจะมีโอกาสได้ใช้งานมันหรือเปล่า

...
...
...

ปล. ที่ผมบอกว่าผมไม่ได้สนใจ Angular/React/Vue/etc.. ก็เพราะเจ้านี่แหละ Blazor
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-26 13:16:34 By : หน้าฮี
 


 

No. 16

Guest


.NET Core >= 2.2 มันก็คงจะไม่หนีไปจากนี้ไปมากนัก ถ้าผมเดาไม่ผิด เช่น

Code (C#)
        public async Task<string> RenderToStringAsync(string viewName, object model)
        {
            var httpContext = new DefaultHttpContext { RequestServices = _serviceProvider };
            var actionContext = new ActionContext(httpContext, new RouteData(), new ActionDescriptor());

            using (var sw = new StringWriter())
            {
                var viewResult = _razorViewEngine.FindView(actionContext, viewName, false);

                if (viewResult.View == null)
                {
                    throw new ArgumentNullException($"{viewName} does not match any available view");
                }

                var viewDictionary = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary())
                {
                    Model = model
                };

                var viewContext = new ViewContext(
                    actionContext,
                    viewResult.View,
                    viewDictionary,
                    new TempDataDictionary(actionContext.HttpContext, _tempDataProvider),
                    sw,
                    new HtmlHelperOptions()
                );

                await viewResult.View.RenderAsync(viewContext);
                return sw.ToString();
            }
        }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-26 13:18:31 By : หน้าฮี
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : WinApp C# อธิบายปัญหาไม่ถูกครับ นึก คำศัพท์ทางโปรแกรมเมอร์ก็ไม่ถูกด้วย(5555)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2019 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่