Lưu trữ cho Tháng Năm 6, 2008

Delegate

Sử Dụng Delegate Để Truyền Giá Trị Giữa Các Form  

Để có thể viết được một ứng dụng phần mềm, bạn phải biết cách truyền giá trị qua lại giữa các Form. Tuy nhiên, khi ta muốn lấy giá trị từ nhiều Form khác, chắc chúng ta sẽ gặp rắc rối với những cách làm thông thường. Delegate sẽ giúp chúng ta giải quyết vấn đề. 
Trước hết, tôi sẽ trình bày cho các bạn các truyền giá trị theo cách thông thường.

Dưới đây là giao diện của các Form:

Đây là giao diện của Form chính. có 2 textbox để hiển thị giá trị lấy từ các Form khác. 2 button có chức năng hiển thị các form mà mình muốn lấy giá trị.

Zensoft Website - Form Delegate

Còn đây là giao diện của Form 1, Gồm 1 textbox để nhập giá trị, nút button để xác nhận giá trị đó và truyền giá trị được nhập trong ô textbox cho form chính.

Zensoft Website - Using Delegate to Pass data between Forms.

Tương tự như Form 1, Form 2 cũng gồm 1 textbox để nhập giá trị, nút button để xác nhận giá trị đó và truyền giá trị được nhập trong ô textbox cho form chính.

Zensoft Website - Truyền Giá Trị giữa các Form

1. Với việc truyền giá trị thông thường:

        – Trong Form Chính:

// Ta khai báo  trường để lưu giá trị.

private string _getFirstValue = null; 

// Thuộc tính này có nhiệm vụ lấy giá trị từ các Form khác.
public string GetFirstValue 
{
      get
      {
             return _getFirstValue;
      }

      set
      {
             _getFirstValue = value;
      }

Và viết sự kiện cho nút btnGetValue1:

private void btnGetValue1_Click(object sender, EventArgs e)

        frmFirstValue first = new frmFirstValue(); 
        first.ShowDialog();
}

Và khi Form chính được hiển thị, ta phải hiển thị nhận được thông qua các thuộc tính GetFirstValue.         

private void frmMain_Load(object sender, EventArgs e)
{
        txtFirstValue.Text = GetFirstValue;
        txtSecondValue.Text = GetSecondValue;
}

         - Đối với Form 1: Ta chỉ cần viết sự kiện cho Nút btnSend:

private void btnSend_Click(object sender, EventArgs e)
{
         frmMain main = new frmMain();
         main.GetFirstValue = txtValue.Text;   // Truyền giá trị cho Form chính thông qua thuộc tính GetFirstValue.
         main.ShowDialog(); 
         this.Hide();

}

việc khai báo và xử lý sự kiện đối với Form 2 tương tự. Nhưng trong trường hợp này, khi lấy giá trị từ 2 Form khác nhau, cách truyền giá trị thông thường này sẽ không thể làm được. Vậy cách khác, ta sẽ dùng Delegate để giải quyết vấn đề:

2. Sử Dụng Delegate:

          – Dùng Delegate sẽ giúp chúng ta quyết định xem hàm nào sẽ được trong lúc chạy. Về mặt kỹ thuật, Delegate là một dạng tham chiếu được sử dụng để đóng gói 1 hàm với giá trị xác thực và kiểu giá trị trả về.

          – Trong Form 1: Ta khai báo Delegate có tên là PassData có 1 tham số kiểu string và ko có giá trị trả về.

public delegate void PassData(string value);
public PassData passData;

private void btnSend_Click(object sender, EventArgs e)

       if (passData != null)
       {
               passData(txtValue.Text);
       }
       this.Hide();

}

        – Còn trong Form chính: Ta viết Hàm GetFirstValue phải giống như khi khai báo Delegate: có 1 giá trị truyền vào là kiểu chuỗi, và không có giá trị trả về.

public void GetFirstValue(string value)
{
        txtFirstValue.Text = value;

Ta viết sự kiện cho nút btnGetValue1:

private void btnGetValue1_Click(object sender, EventArgs e)
{

       frmFirstValue first = new frmFirstValue();
       first.passData = new frmFirstValue.PassData(GetFirstValue);
       first.Show();

}

Vấn đề đã được giải quyết rất đơn giản khi ta dùng Delegate.

Để lại phản hồi

Serialization trong .NET

Serialization là một quá trình chuyển đối tượng (object) sang một hình thức khác, để sử dụng khi lưu trữ hoặc chuyển dữ liệu qua mạng. Bài viết này đề cập đến việc chuyển đối tượng sang dạng XML. 
XMLSerializer

 .Net Framework cung cấp các lớp trong namespace System.XML.Serialization cho công việc chuyển đổi này, trong đó lớp XMLSerializer có vai trò quan trọng. Mỗi thể hiện (instance) của lớp này được tạo ra cho mỗi đối tượng cần chuyển. Nó chứa các thông số ánh xạ để chuyển thuận hoặc chuyển ngược giữa đối tượng và dữ liệu XML. Lớp XMLSerializer có 2 phương thức quan trọng:

public void Serialize(Stream, object);
public object Deserialize(Stream);

Chúng ta có thể sử dụng lớp XMLSerializer như sau:

XMLSerializer serializer = new XMLSerializer(typeof(OrderedItem));

OrderedItem order = new OrderedItem();

//chuyển thuận

XMLWriter writer = new XMLTextWriter(fs, new UTF8Encoding());
serializer.Serialize(writer, order);

//chuyển ngược

fs = new FileStream(ten_file, FileMode.Open);
XMLReader reader = new XMLTextReader(fs);
i = (OrderedItem) serializer.Deserialize(reader);

 Mặc định XMLSerializer sẽ chuyển tất cả các trường (field) public, các thuộc tính (Property) read/write và các giá trị khác null trở thành element với tagname là tên thuộc tính. Tất cả các element này được đặt trong lớp element cha, với tagname là tên lớp. Ví dụ lớp Person được trình bày như dưới đây:

public class Person

        public string Name = “Ten”; 
        public int Age = 33; 
        private string Address = “HCM”; 
        public string Sex = null; 
        public Person() { }
}

 sẽ được chuyển thành dữ liệu XML:

<?XML version=”1.0″?>
<Person XMLns:xsd=”http://www.w3.org/2001/XMLSchema” XMLns:xsi=”http://www.w3.org/2001/XMLSchema-instance“> 
          <Name>Ten</Name> 
          <Age>33</Age>
</Person> 

Address không được chuyển vì nó là thuộc tính private, và Sex cũng không có trong dữ liệu XML vì có giá trị null.

XMLSerializer có đầy đủ các chức năng để thực hiện việc chuyển các đối tượng sang dữ liệu XML và ngược lại. Sau đây, chúng ta sẽ khảo sát các khai báo cần thiết để chuyển các thuộc tính của một đối tượng sang dữ liệu XML.

Chuyển các đối tượng

Nếu bạn muốn chuyển lớp Person thành element với tagname là Employee thay vì Person, bạn định nghĩa nó thông qua thuộc tính XMLRoot:

[XMLRoot("Employee")]
public class Person
{…}

 Nếu muốn chuyển thuộc tính Name thành element có TagName là PersonName, bạn định nghĩa nó thông qua XMLElement:

[XMLElement("PersonName")]
public string Name = “Ten”;
// tương tự thuộc tính Age thành element PersonAge
[XMLAttribute("PersonAge")]
public int Age = 33;

 Nếu không muốn chuyển một thuộc tính dạng public sang dữ liệu XML, ta dùng XMLIgnore:

[XMLIgnore()]
public string Sex = “Nam”;

Nếu các thuộc tính có kiểu là một lớp, các thành phần public của lớp được chuyển như đã định nghĩa, và element tương ứng của lớp sẽ có tagname được định nghĩa trong XMLElement.

Lớp Person được chỉ định bởi:

[XMLElement("Supervisor")]
public Person Supervisor = null;

sẽ được chuyển thành dữ liệu XML như sau:

<Supervisor>
<PersonName>Ten</PersonName>

</Supervisor>

XMLIgnore có thể giúp chúng ta chuyển hoặc không chuyển sang XML một trường hoặc thuộc tính tùy thuộc vào giá trị của nó.

Để thực hiện việc này, chúng ta thêm một thuộc tính mới vào lớp với tên trùng với thuộc tính cộng thêm từ Specified sau đó. Ví dụ, chúng ta không muốn chuyển thuộc tính Age của lớp Person, chúng ta thực hiện như sau:

[XMLAttribute("PersonAge")]
public int Age = 33;

[XMLIgnore()]
public bool AgeSpecified = false;

 Nếu AgeSpecified có giá trị là true, Age sẽ được chuyển. Khi làm việc trên XMLSerializer tôi rất thích đặc điểm này vì nó giúp chúng ta bật tắt việc chuyển theo giá trị.

Chuyển mảng, danh sách,…

Ở phần trên chúng ta đã lần lượt xem xét các khai báo XML để chuyển các đối tượng đơn, trong phần này chúng ta sẽ khảo sát các khai báo cho các đối tượng tập hợp (Collection).

Tương tự như ở phần trên, chúng ta cũng phải chuyển các đối tượng ở dạng mảng vào thành một element.

[XMLArray("Agents")]
[XMLArrayItem("Agent", typeof(Person))]
public ArrayList Agents = null;

Kết quả khi chuyển sẽ là:

<Employee> 
       <PersonName>Ten</PersonName> 
       <Agents> 
               <Agent> 
                     <PersonName>Ten</PersonName> 
               </Agent> 
       </Agents>
</Employee>

 Ở ví dụ trên, các phần tử có kiểu là Person, đều được chuyển thành các element Agent. Nếu muốn thêm các kiểu khác vào danh sách, chúng ta thêm các khai báo XMLArayItem tương ứng tiếp sau khai báo cho Person.

Nếu muốn tất cả các phần tử trong danh sách đều có tagname giống nhau, chúng ta cần khai báo XMLArrayItem với một tham số là ElementName (bỏ qua kiểu dữ liệu).

Kết quả chúng ta có tập tin dữ liệu XML như sau:

<Employee > 
         <PersonName>Name</PersonName> 
         <Agents> 
                    <Agent xsi:type=”Person”> 
                           <PersonName>Ten</PersonName> 
                     </Agent> 
                      <Agent xsi:type=”Person1″ /> 
           </Agents>
</Employee>

 Thuộc tính xsi:type được thêm vào cho các element của ArrayList để giúp việc chuyển ngược dữ liệu XML này sang đối tượng.

Trên đây tôi đã trình bày sơ lược về XMLSerializer. Nếu làm việc với đối tượng này, bạn sẽ phát hiện nhiều điều đặc biệt hơn nữa và hy vọng bạn sẽ thích thú. .NET Framework cũng cho phép bạn lấy các khai báo cho các lớp để chuyển thông qua viết lệnh. Nếu bạn đã từng sử dụng namespace System.Reflection trong .NET, hay reflection trong Java, chắc là sẽ cảm thấy thích thú với đặc điểm này.

XMLSerializer có một hạn chế khi dự án có số lượng lớp quá lớn. Khi đó, việc tạo thể hiện cho hàng trăm lớp có khả năng làm chậm hệ thống. Tuy XMLSerializer cho phép bạn khai báo để nó chỉ tìm kiếm các đối tượng trong một số lớp cho trước, nhưng nó khá chậm. Theo kinh nghiệm của tôi khi làm việc trên dự án lớn, bạn chỉ nên tạo một thể hiện của XMLSerializer cho mỗi lớp và dùng nó xuyên suốt toàn bộ ứng dụng thì vấn đề tốc độ thực thi sẽ được giải quyết.

Sưu tầm

 

Để lại phản hồi

Cho và nhận

Một hôm, một sinh viên trẻ có dịp đi dạo với giáo sư của mình. Vị giáo sư này vẫn thường được các sinh viên gọi thân mật bằng tên “người bạn của sinh viên” vì sự thân thiện và tốt bụng của ông đối với học sinh.

Trên đường đi, hai người bắt gặp một đôi giày cũ nằm giữa đường. Họ cho rằng đó là đôi giày của một nông dân nghèo làm việc ở một cánh đồng gần bên, có lẽ ông ta đang chuẩn bị kết thúc ngày làm việc của mình.

Anh sinh viên quay sang nói với vị giáo sư: “Chúng ta hãy thử trêu chọc người nông dân xem sao. Em sẽ giấu giày của ông ta rồi thầy và em cùng trốn vào sau những bụi cây kia để xem thái độ ông ta ra sao khi không tìm thấy đôi giày.”

Vị giáo sư ngăn lại: “Này, anh bạn trẻ, chúng ta đừng bao giờ đem những người nghèo ra để trêu chọc mua vui cho bản thân. Nhưng em là một sinh viên khá giả, em có thể tìm cho mình một niềm vui lớn hơn nhiều nhờ vào người nông dân này đấy. Em hãy đặt một đồng tiền vào mỗi chiếc giày của ông ta và chờ xem phản ứng ông ta ra sao.”

Người sinh viên làm như lời vị giáo sư chỉ dẫn, sau đó cả hai cùng trốn vào sau bụi cây gần đó.

Chẳng mấy chốc người nông dân đã xong việc và băng qua cánh đồng đến nơi đặt giày và áo khoác của mình. Người nông dân vừa mặc áo khoác vừa xỏ chân vào một chiếc giày thì cảm thấy có vật gì cứng cứng bên trong, ông ta cúi xuống xem đó là vật gì và tìm thấy một đồng tiền. Sự kinh ngạc bàng hoàng hiện rõ trên gương mặt ông. Ông ta chăm chú nhìn đồng tiền, lật hai mặt đồng tiền qua lại và ngắm nhìn thật kỹ. Rồi ông nhìn khắp xung quanh nhưng chẳng thấy ai. Lúc bấy giờ ông bỏ đồng tiền vào túi, và tiếp tục xỏ chân vào chiếc giày còn lại. Sự ngạc nhiên của ông dường như được nhân lên gấp bội, khi ông tìm thấy đồng tiền thứ hai bên trong chiếc giày. Với cảm xúc tràn ngập trong lòng, người nông dân quì xuống, ngước mặt lên trời và đọc to lời cảm tạ chân thành của mình. Ông bày tỏ sự cảm tạ đối với bàn tay vô hình nhưng hào phóng đã đem lại một món quà đúng lúc, cứu giúp gia đình ông khỏi cảnh túng quẫn, người vợ bệnh tật không ai chăm sóc và đàn con đang thiếu ăn.

Anh sinh viên lặng người đi vì xúc động, nước mắt giàn giụa. Vị giáo sư lên tiếng: “Bây giờ em có cảm thấy vui hơn lúc trước nếu như em đem ông ta ra làm trò đùa không?” Người thanh niên trả lời: “Giáo sư đã dạy cho em một bài học mà em sẽ không bao giờ quên. Đến bây giờ em mới hiểu được ý nghĩa thật sự của câu nói mà trước đây em không hiểu: “Cho đi là hạnh phúc hơn nhận về”.

Sưu tầm

Để lại phản hồi

Đừng rời bỏ người bạn yêu…

Câu chuyện bắt đầu với một anh chàng tên Paul và một cô nàng tên Ella.

Cả hai đang là sinh viên đại học.

Một ngày hè, cả hai gặp nhau lần đầu tiên trên sân bóng rổ của trường. Ngẫu nhiên, họ được xếp chơi chung một đội. Hôm đó cả hai đều rất vui.

Lúc về, Ella giả vờ hỏi mượn điện thoại của Paul rồi gọi vào máy mình. Thế là cô có số của Paul. Sau đó, Ella gửi tin nhắn cho Paul, giả vờ như mình nhầm số. Paul trả lời lại. Ella lại gửi tiếp tin nhắn khác. Cứ thế, họ nhắn tin qua lại. Từ nhắn tin, họ chuyển qua gọi điện. Từ nói chuyện trên điện thoại, họ hẹn hò gặp nhau. Và rồi tình yêu đến với họ lúc nào không biết. Cả hai những tưởng, họ sẽ ở bên nhau cho đến cuối đời. Tình yêu của họ sẽ là vĩnh cửu.

Nhưng ba má Ella thì không nghĩ vậy. Họ phản đối. Họ cho rằng Paul không xứng với Ella và rằng chuyện yêu đương nhảm nhí hiện giờ sẽ phá hỏng tương lai tươi sáng của con gái họ.

Ella không đủ mạnh mẽ để chiến đấu với ba má mình. Ella muốn chia tay. Paul không đủ mạnh mẽ để chiến đấu với Ella hòng cứu lấy tình yêu của hai người. Anh chỉ có một lựa chọn duy nhất: để Ella bước khỏi cuộc đời mình. Ella bị buộc đi du học ở nước ngoài. Vậy là hai người mất luôn liên lạc.

Đau đớn thật đó. Nhưng rồi mọi chuyện cũng qua.

Năm năm sau, lúc này cả hai người đều đã trưởng thành và tự lập, Ella vẫn còn độc thân và Paul thì có người yêu khác, Mary. Nhưng sâu thẳm tâm hồn, Paul chỉ yêu duy nhất một mình Ella thôi. Chỉ là, anh không có cơ hội để nói với cô điều đó.

Một lần, đang cùng Mary dạo phố, Paul vô tình trông thấy Ella. Cô thật sự chỉ đứng phía bên kia đường thôi. Chỉ cách anh có một sải chân. Trái tim anh như ngừng đập. Thật sự không rõ bản thân đang làm gì nữa, anh vùng người chạy băng qua đường, bỏ mặc Mary ở lại phía sau. Bần thần và ngơ ngẩn, anh đã không nhìn thấy một chiếc xe tải đang chạy tới.

Lúc Mary hét lên kinh hoàng cũng là lúc Ella quay người nhìn lại. Cô nhận ra khuôn mặt ấy, ánh mắt ấy. Trái tim cô cũng như ngừng đập.

Ella nhào vào đám đông đang tụ tập. Paul vẫn còn thở. Bên cạnh anh lúc này là Mary, đang nói trong nghẹn ngào: “Paul, anh không được bỏ cuộc… hãy gọi tên em, hãy gọi 100 lần, 1000 ngàn lần… được không anh? Đừng ngừng lại, gọi tên em… đừng nhắm mắt, anh… mở mắt ra nào và hãy gọi tên em…”

Paul được đưa đến bệnh viện. Cả Mary và Ella đều đi theo. Họ không biết nhau. Mỗi người đứng một góc, cúi đầu cầu nguyện.

Vị bác sĩ trở ra, đứng trước mặt Mary và nói: “Cô Ella, chúng tôi xin lỗi, anh ấy đã bỏ cuộc sau khi gọi tên cô được 157 lần. Chúng tôi đã tận hết sức.”

Mary gục người khóc nức nở, cô không quan tâm đến chuyện vị bác sĩ ấy đã gọi nhầm tên.

Chỉ có Ella, người run rẩy quỵ ngã nơi góc phòng là thấu hiểu. Cô biết tại sao Paul ngừng lại ở lần thứ 157. Bởi vì đó là ngày họ chia tay nhau. Ngày 15 tháng 7. Năm năm, cô đã bỏ rơi tình yêu của mình đến 5 năm. Và bây giờ nỗi đau gấp ngàn lần ngày trước đang quật vào tim cô. Đau đớn.

Nếu bạn thực sự yêu một người, đừng rời bỏ anh/cô ấy. Không bao giờ rời bỏ. Bởi vì có thể bạn không biết được, tình yêu đó có ý nghĩa thế nào với người ấy đâu. Đôi khi nó có giá của cả một mạng người. Hãy trân trọng và giữ gìn tình yêu của mình. Chiến đấu vì nó. Và bạn sẽ không bao giờ hối hận.

Hoàng Uyên Đinh dịch.

(c) xitrum.net

Để lại phản hồi

Hãy ngỏ lời yêu trước khi quá muộn

Eric là anh chàng mà các cô nàng trong trường trung học đều mơ ước.

Cathlyn là một trong những cô nàng nổi tiếng nhất trường. Cô xinh đẹp, thời trang và cực kỳ hấp dẫn.

Carol là một cô gái giản dị, không có gì nổi trội. Cô chỉ là một trong số các nữ sinh bình thường có mặt khắp nơi trong các trường trung học.

Cathlyn và Carol đều yêu Eric say đắm.

Cathylyn không cần làm bất cứ điều gì để tạo sự chú ý. Trong mắt Eric, cô quá đủ lôi cuốn rồi.

Carol thì ngược lại. Cô không hẳn là xấu xí; thật ra trông cô rất vui vẻ và dễ thương. Nhưng cô không phải là một nữ cổ động viên xinh đẹp quyến rũ. Những gì cô có thể đem đến cho Eric chỉ là tình yêu và sự quan tâm.

Như phỏng đoán của tất cả mọi người, Eric chọn Cathlyn.

Eric bảo Carol chỉ là một cô gái tầm thường và xấu xí. Điều đó khiến Carol thấy tổn thương nghiêm trọng.

Đời là thế.

Nhưng, Carol không chấp nhận bỏ cuộc. Cô muốn chứng minh cho Eric thấy rằng sắc đẹp không phải là tất cả. 

Vậy là, Carol lao đầu vào học. Cô nhanh chóng lọt vào danh sách những học sinh xuất sắc nhất trường. Và các anh chàng ngày trước vốn không thèm để mắt đến cô nay đều quay sang cưa cẩm cô. Trái tim cô lại không quên được Eric.

Mỗi ngày, cô đặt vào hộc tủ của Eric một đóa hồng nhung cùng một lời nhắn:

Em thực sự rất quan tâm đến anh, luôn luôn là như thế

Trong khi đó, Eric không hạnh phúc như anh ta đã tưởng. Cô bạn gái Cathlyn nhanh chóng bỏ rơi anh để chạy theo một anh chàng đẹp mã khác. Sự đời là thế. Anh quay lại tự hỏi bản thân: “có phải ngày trước mình đã chọn lầm người rồi không?” Và anh hiểu ra mình đã đần độn đến thế nào khi chỉ biết say đắm với vẻ đẹp bên ngoài. Anh thấy hối hận. Thu hết can đảm, Eric tiến đến bên Carol, quỳ trước mặt cô và nói:

- Hãy tha lỗi cho anh, Carol. Em có muốn trở thành bạn gái của anh không?

Trước sự kinh ngạc của mọi người, Carol từ chối. Cô chỉ nhẹ nhàng nói với Eric thế này.

- Anh vừa trải qua một mất mát lớn. Em không muốn anh phải đối diện với điều đó thêm một lần nữa.

Eric không hiểu ý nghĩa trong câu trả lời của Carol nhưng anh chấp nhận quyết định của cô. Vậy là, họ trở thành bạn thân của nhau, cùng nhau chia sẻ mọi thứ.

Kể từ đó, mọi người thấy Eric bắt đầu thay đổi. Anh trở thành một con người mới, tốt đẹp hơn. Tất cả cũng nhờ Carol. Cô quan tâm đến anh bằng một thứ tình cảm mà chưa người con gái nào trước đó từng đối xử với anh. Những cô gái khác chỉ nhìn thấy ở Eric vẻ ngoài bảnh bao, còn Carol, cô đón nhận Eric chính là Eric, với tất cả tình yêu mà cô có.

Mỗi ngày, Carol vẫn không quên đặt một bông hồng nhung vào hộc tủ của Eric với cùng một lời nhắn gửi: “Em thực sự rất quan tâm đến anh, luôn luôn là như thế.”

Một ngày kia, Carol không xuất hiện ở lớp. Một tuần trôi qua, Carol vắng mặt. Lúc đầu, Eric nghĩ rằng cô đang đi chơi xa với gia đình. Không phải cô từng nói sẽ đi Hawaii đó sao?!?

Nhưng, thêm một tuần nữa vẫn không thấy bóng dáng Carol đâu, Eric bắt đầu lo lắng. Rồi anh nhận được điện thoại từ bệnh viện thành phố. Họ báo rằng Carol đang hấp hối.

Từ đầu, Carol không muốn nói với Eric về căn bệnh ung thư của mình. Cô không muốn anh phải bận tâm về cô. Nhưng vào những giây cuối đời, cô mong mỏi được gặp Eric một lần sau chót.

Eric phóng ngay đến bệnh viện. Nước mắt lưng tròng khi anh trông thấy cô ốm yếu nằm đó, xanh xao và mỏi mệt.

- Tại sao em không nói với anh? Tại sao em lại giấu anh chuyện này?

Carol âu yếm nhìn Eric, cố nở một nụ cười thật nhẹ nhàng.

- Khi em nói với anh ngày trước rằng em không muốn anh phải đối diện với một mát mát khác, chính là em muốn nói đến sự việc này. Ngày đó, em không nói anh biết bởi vì em không muốn anh phải lo lắng. Em chỉ muốn có được những ngày cuối đời thật vui vẻ bên anh mà thôi. 

Eric nức nở:

- Em không thể rời bỏ anh được. Anh sẽ ra sao nếu không còn em nữa?

- Anh sẽ sống như anh trong hiện tại. Đừng quên rằng lúc nào em cũng ở bên cạnh anh. Hãy vui hưởng và sống thật hạnh phúc anh nhé. À, còn một điều này nữa.

- Gì vậy em?

- Em yêu anh.

Thế rồi Carol đi. 

-=~@~=-

Một tháng. Eric chỉ ở bên Carol một tháng, nhưng cô ấy đã thay đổi toàn bộ cuộc đời anh bằng một cách không ai lý giải nổi. Sử dụng tình yêu của chính cô. Eric ở lại, đau đớn và ân hận. 

Chúng ta cũng vậy. Thỉnh thoảng, ta không nhận ra ai mới là người quan tâm đến ta thật lòng. Cho đến khi họ rời bỏ ta. Cho đến khi ta mất họ vĩnh viễn. Để rồi ta chỉ còn biết ôm hận.

Hãy thổ lộ tình yêu của mình với người mà bạn yêu. Đừng im lặng, bởi vì có thể bạn sẽ đánh mất họ mà chưa kịp thốt ra lời nào. 

Tình yêu là khi chúng ta chiến đấu đến hơi thở cuối cùng để nói với một người rằng ta yêu họ biết chừng nào.

Hoàng Uyên Đinh dịch.

(c) xitrum.net

Để lại phản hồi

Bài viết cũ hơn »