1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Chém gió Buồn buồn có gì chém không các bạn ? Tớ đang ngoi ngóp C# ="=

Thảo luận trong 'Chém gió - Buôn dưa' bắt đầu bởi tuoitre, 30/4/17.

  1. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    Chào cả nhà, tớ dạo này autoit thì không học nâng cao được, giờ chuyển qua học c# thì ngu ngu quá =.='' mãi không hiểu Bạn nào chém giùm tớ cách học C# với... hihi...
     
  2. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Không là không là không :)):)):)) Triệu hồi @emga9xkc
     
    emga9xkc thích bài này.
  3. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    P/S: Để tránh việc spam 4rum (hôm bữa 4rum có đăng bài về Tìm việc: Làm đồ án hộ, thấy cũng không cần xoá nên để đấy, ai ngờ 2 ngày sau xuất hiện 2, 3 bài về Làm đồ án hộ của mấy đứa khác =.=), nên những bài liên quan chém gió tự nhiên xuất hiện nhiều sau 2pic này là iêm xoá hết nhoé. iêm là iêm không phải khó, nhưng iêm sợ mấy thánh spam phá lắm :)):)):))
     
  4. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    Chỗ này để chém gió xả sì trét mà bác cấm thế thì khu vực này chém gì bi zdờ :(( ....
    Em là muốn nâng cao nhưng mà học ngu quá nên mới nhờ các bác chỉ đường dẫn lối mà bác phũ quá... híc híc
     
  5. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Chừng nào có 1 đống bài chém gió ăn theo tự dưng xuất hiện của mấy đại ca spam dạo iêm mới xoá thôi, thým cứ yên cái mà tâm, iêm không bạ đâu xoá đó đâu =))=))
     
    tuoitre thích bài này.
  6. emga9xkc

    emga9xkc Thành viên năng động
    • 43/45

    Tham gia ngày:
    7/3/16
    Bài viết:
    232
    Đã được thích:
    205
    c# nó học dễ hơn autoit nhiều, b lại có kiến thức autoit rùi thì qua c# càng dễ :v
     
  7. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    mà hình như bác cũng học c#, bác cho e hỏi cấu trúc lệnh của c# có cái đường lối nào nó giống nhau không ạ ? hay cứ làm nhiều mới nhớ ạ =.=''
     
  8. emga9xkc

    emga9xkc Thành viên năng động
    • 43/45

    Tham gia ngày:
    7/3/16
    Bài viết:
    232
    Đã được thích:
    205
    :v c# học dễ hơn autoit nhiều, chỉ cần . 1 cái là ra hết :v ví dụ b đang tìm hiểu về Button. thì b khởi tạo 1 cái
    Button btn = new Button();
    xong ấn btn. là nó gợi ý ra 1 đống, chẳng cần học :v
     
  9. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    đây là cái khác nè, em ví dụ bác giải thích cho em với nhé...
    Mã (Text):

     if (lv_DanhSach.SelectedItems != null)
      {
      var confirmation = MessageBox.Show(
      "Bạn chắc chăn muốn xóa chứ ???",
      "Thông báo xóa", MessageBoxButtons.YesNo, MessageBoxIcon.Question
      );
      if ( confirmation == DialogResult.Yes)
      {
      for (int i = 0; i < lv_DanhSach.Items.Count; i++)
      {
      if (lv_DanhSach.Items[i].Selected)
      {
      lv_DanhSach.Items[i].Remove();
      i--;
      }
      }
      }
      }
      else
      {
      MessageBox.Show("Cái này chắc là thông báo lỗi ko chọn", "Thông báo lỗi",
      MessageBoxButtons.OK, MessageBoxIcon.Error);
      }
      }[/i][/i]

    đây là code khi mà em muốn delete 1 dòng trên listview,
    1. lv_DanhSach.SelectedItems != null : cái này nghĩa là khác rỗng hay khác cái gì hả bác ??
    2. var confirmation ngoài việc khai báo biến var ra thì mình có cách khác để hiện là nếu nó hiện ra cái dialog không bác ? vì e thấy khi khai báo biến var làm pm nó chậm lại nên nếu bắt buộc thì mình mới phải khai báo thui à :)
    3. i--; sao đoạn dưới nó lại -- bác nhỉ =.=''
    4. và thằng else cuối, em k giải thích được dòng 1 null là thế nào nên dòng 4 em cũng chịu....em làm 1 số kiểu mà nó cũng không ra được cái messagebox cuối của thằng else này =.=''
     
  10. emga9xkc

    emga9xkc Thành viên năng động
    • 43/45

    Tham gia ngày:
    7/3/16
    Bài viết:
    232
    Đã được thích:
    205
    1 là khác null, null ở đây t k pit giải thích cho b như nào, chỉ có thể lấy ví dụ, string a; thì a đang chưa có giá trị, a đang là null, còn b khai báo string a = "" thì a ở đây mang giá trị là rỗng
     
  11. emga9xkc

    emga9xkc Thành viên năng động
    • 43/45

    Tham gia ngày:
    7/3/16
    Bài viết:
    232
    Đã được thích:
    205
    2. var hiện tại đang là kiểu DialogResult, b sợ chậm có thể khai báo kiểu dữ liệu chuẩn của nó, t thì t k pit nhanh hay chậm :v
     
  12. emga9xkc

    emga9xkc Thành viên năng động
    • 43/45

    Tham gia ngày:
    7/3/16
    Bài viết:
    232
    Đã được thích:
    205
    3. i-- ở đây hình như thừa
     
  13. emga9xkc

    emga9xkc Thành viên năng động
    • 43/45

    Tham gia ngày:
    7/3/16
    Bài viết:
    232
    Đã được thích:
    205
    4. giải thích cùng dòng if đầu tiên lun, dong 1, khác null nghĩa là có ít nhất 1 listview được chọn ngược lại ko có listview nào được chọn thì sẽ dẫn tới dòng else 4
     
  14. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    sau 1 đêm suy nghĩ thì sáng nay em đã thông được 4 cái vấn đề trên, nhưng cái thứ 4 chỉ là suy đoán là : chắc ko phải listview thì nó mới báo lỗi...,
    còn câu 2 khai báo var để mình đỡ đau đầu, thì máy tính nó đau đầu thôi có gì đâu bác :D, mình đau đầu 1 tí thì máy tính nó chạy nhanh, thay khai báo kiểu var = kiểu DialogResult :v ..
    và giờ em hỏi tí là ko có cái listview.subitem.edit hay .modif nhỉ.. nếu không có thì phải có hướng suy nghĩ như thế nào hả bác =.=''
     
  15. emga9xkc

    emga9xkc Thành viên năng động
    • 43/45

    Tham gia ngày:
    7/3/16
    Bài viết:
    232
    Đã được thích:
    205
    listview có thuộc tính edit đó b
     
  16. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    không có mà bác =.='' ...
     
  17. emga9xkc

    emga9xkc Thành viên năng động
    • 43/45

    Tham gia ngày:
    7/3/16
    Bài viết:
    232
    Đã được thích:
    205
    có thuộc tính gì đó có chức năng edit, b google thử xem, t k rõ nó là cái nào, từ khi học c# t mới đọc qua listview mấy lần
     
  18. greatsky073

    greatsky073 (@_@)
    • 8/11

    Tham gia ngày:
    22/5/17
    Bài viết:
    39
    Đã được thích:
    4
    Nơi ở:
    HCM
    vậy có ai chơi android k? cho iêm mần bạn :p:p
     
  19. hoangtieubao

    hoangtieubao Thành viên
    • 8/11

    Tham gia ngày:
    31/5/17
    Bài viết:
    41
    Đã được thích:
    11


    Mình xin phép giải thích cho bạn từng vấn đề nhé (trình gà nên nếu có gì sai sót mong bỏ qua cho):

    1/ lv_DanhSach.SelectedItems là 1 Properties (thuộc tính) nên nó sẽ là kiểu giá trị Boolean (tức là chỉ Return về True / False). Vì vậy, ở đây dòng code sẽ được hiểu là có Item trong ListView được chọn hay không? (vì sẽ có trường hợp không chọn Item mà đã call đoạn code này). Mình giải thích ở đây là giải thích luôn trường hợp (4) nhé. Vấn đề trực thuộc kiến thức Error Exception trong thuật toán.

    2/ Vấn đề kiểu biến là "var" (đầy đủ là Variant) tức là kiểu biến không xác định cụ thể, nó phụ thuộc hoàn toàn vào giá trị được gán. Nếu gán biến bằng một giá trị số thì phần mềm (chính xác là trình biên dịch) sẽ tự động hiểu nó thuộc kiểu biến số (như Integer hay Single), nếu gán giá trị là một chuỗi thì nó sẽ tự hiểu biến thuộc kiểu chuỗi. Theo như đoạn code thì trình biên dịch sẽ tự hiểu biến "confirmation" thuộc kiểu "DialogResult". Riêng việc bạn chạy code trên mà chậm hay nhanh lại liên quan tới vấn đề bạn chạy code ở dạng Run Debug (test code) hay là dạng EXE Application (đã Complied). Nếu chạy Run Debug thì trình biên dịch sẽ mất một khoảng thời gian để xác định kiểu của biến "confirmation", ngược lại nếu đã Complied thì trình biên dịch đã xác định kiểu của biến "confirmation" trong quá trình đóng gói code thành EXE Application. Thế nên, nếu run file EXE thì sẽ nhanh hơn khi Run Debug để test code. Kiến thức liên quan đến ý nghĩa các kiểu giá trị trong ngôn ngữ Visual Basic (kiểu Variant)

    3/ Tại sao lại có dòng code "i--;" và ý nghĩa của nó?
    Để đơn giản dễ hiểu thì mình xin minh họa về chỉ số Index của Items có trong ListView (do code dùng Index làm chuẩn chỉ cho việc xác định Item trong ListView)

    Index là gì? Index là chỉ số thứ tự (như là 1 2 3 4 ...) của Item có trong ListView. Nó giống y chang số ID trong CSDL của MS Access. Nó là duy nhất, không thể bị chỉnh sửa và luôn theo thứ tự đúng dù ListView có bị thay đổi dữ liệu như thế nào đi chăng nữa. Theo đó, nếu ta chọn Item thứ 4 trong ListView thì Index tương ứng của nó là số 3 (vì Index trong ListView bắt đầu từ số 0)

    Vậy nếu theo đoạn code trên ta có ví dụ: Remove Item thứ 2 có số Index là 1 và sau đây là điều sẽ xảy ra
    Khi i = 1 (tức là tại vị trí Item thứ 2 trong danh sách Item của ListView) thì Item tương ứng Index = 1 sẽ bị Remove
    Tức là dãy Index của ListView sẽ thay đổi như sau: 0 / 1 / 2 --> 0 / 2 (vì Item tại Index = 1 đã bị Remove)
    Nhưng theo nguyên tắc đã nói ở trên, số Index mà hệ thống hiểu sẽ là: 0 / 1 chứ không phải là 0 / 2

    Đặt trường hợp không có lệnh "i--;" thì giá trị tiếp theo của biến i là i = 2. Như vậy theo như đã giải thích ở trên sẽ không thể tồn tại Item có chỉ số Index = 2 được
    Mà Item ta cần xét tiếp theo chính là Item có chỉ số Index = 1 (chính là giá trị đúng ban đầu theo ví dụ)
    Và để thứ tự duyệt Item đúng như ta mong muốn (đầy đủ không bỏ sót dữ liệu) thì ta phải thực thi lệnh "i--;" để giảm giá trị 1 đơn vị của biến i (theo như ví dụ là i = 0) ở tại vị trí điều kiện i = 1
    Khi đó, nó thực hiện lệnh cuối của vòng lặp for (i++; ) sẽ đưa giá trị tiếp theo của biến i là i = 1.
    Như vậy là ta đã thực hiện chính xác việc duyệt dữ liệu các Item của ListView.

    Trường hợp (3) này mình nói hơi dài dòng vì viết văn sẽ không trực quan bằng hình ảnh minh họa dễ nhìn, dễ hiểu hơn.
    Và khi bạn hiểu thì bạn sẽ thấy lệnh "i--;" là điều bắt buộc khi viết đoạn code trên.

    Thân gửi bạn :d
     
    Huân Hoàng thích bài này.
  20. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    @hoangtieubao

    Ôi ôi thần tượng của iêm năm nào đây mà :(( Cmt vẫn chất lượng như ngày xưa ấy, cái ngày iêm vẫn thường mê mẩn tìm kiếm những bài có cmt của thým để đọc (Nếu nhớ không lầm thì thým đứng top 1 người có số lượng cmt nhiều nhất hocautoit.com) :3 Thêm cái avatar vào nữa là đúng bài :3 Lúc đó cái avatar trên 4rum hocautoit nó nhỏ tí xíu, tuy vậy nhìn avatar thým iêm thấy rất ngầu, cứ như đang toả sáng trên cái nền đen giao diện của 4rum... Ôi ngày xưa ơi, liệu có thể trở lại, ôi người xưa ơi, liệu có thể quay về :((
     

Chia sẻ trang này

Đang tải...