2012-06-26 30 views
5

Trên C# Winform (VS 2010/C#/.Net 3.5) của tôi, tôi đã tạo một nút trong trình thiết kế. Tôi muốn di chuyển và thay đổi kích thước nút đó thành một vị trí khác dựa trên cài đặt của người dùng khi khởi động biểu mẫu đó.Di chuyển vị trí của nút sau khi đã được vẽ

Trong trường hợp tải trọng hình thức của tôi, tôi có đoạn mã sau để di chuyển và thay đổi kích thước nút:

btnShare.Location = new System.Drawing.Point(16, 496); 
btnShare.Margin = new System.Windows.Forms.Padding(4); 
btnShare.Size = new System.Drawing.Size(408, 126); 

Tất cả các mã để tạo nút là * designer.cs file cho hình thức đặc biệt này.

Vấn đề là: Khi biểu mẫu tải, tôi có thể thấy nút ở vị trí mới dựa trên 3 dòng mã ở trên. Nhưng sau đó khi biểu mẫu được thực hiện tải và đi qua tất cả các sự kiện của nó, nút quay trở lại vị trí ban đầu của nó trong phương thức * .designer.cs InitalizeComponent().

Tôi không muốn lấy mã ra khỏi tệp * .designer.cs và chỉ đưa tệp đó vào tệp .cs của biểu mẫu vì tôi vẫn muốn có thể thấy nút trong trình thiết kế khi tôi làm việc trên thiết kế của biểu mẫu.

Tôi chỉ muốn di chuyển và đổi kích thước nút nếu người dùng có tùy chọn đó được bật khi tải biểu mẫu.

Làm cách nào tôi có thể thực hiện việc này vì .Net dường như vẽ các nút trên biểu mẫu của tôi sau khi sự kiện tải đã xử lý do đó di chuyển nút trở lại vị trí ban đầu của nó?

+2

'InitalizeComponent' chỉ nên được gọi từ nhà xây dựng của bạn được/nên được gọi trước sự kiện Tải. Tôi sẽ đặt một breakpoint vào đầu InitalizeComponent để xem nó được gọi từ đâu. –

+0

Trong trường hợp di chuyển và thay đổi kích thước mã xảy ra ở đâu? –

+0

@Paul: InitalizeComponent được gọi là cách trước khi sự kiện tải, nhưng có vẻ như các nút không thực sự bật lên cho đến khi tất cả các sự kiện được thực hiện. Khi biểu mẫu của tôi tải, tôi có thể thấy cùng một nút ở hai vị trí khác nhau (vị trí ban đầu trong designer.cs và vị trí mới mà tôi có trong sự kiện tải). Nhưng ngay khi biểu mẫu tải, nút ở vị trí thứ hai biến mất và tôi chỉ còn lại với nút gốc được tạo trong designer.cs. Nó giống như mã trong designer.cs có kích thước/vị trí nút ghi đè mã mà tôi có trong sự kiện tải. – fraXis

Trả lời

7

Đây là một số mã tôi vừa tăng tốc với nhau. và nó làm việc cho tôi.

Đây là SSCCE, ví dụ đơn giản, tự chứa đúng. Rất hữu ích khi đặt câu hỏi về SO.

* Vì tôi không biết những gì vấn đề cụ thể của bạn là, Đúng, một phần có thể không chính xác trong trường hợp này

Hãy thử và tạo một bản sao của dự án này, và xem nếu bạn có kinh nghiệm cùng vấn đề. Nếu bạn không hơn chúng tôi thực sự không thể giúp bạn nhiều mà không có thêm thông tin về dự án của bạn.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

      button1.Location = new Point(40, 40); 
     } 
    } 
} 
Các vấn đề liên quan