2016-05-23 5 views
-2

Так что я пытаюсь создать весло, используя метку, которая должна быть сделана программно для игры с кирпичным выключателем, и моя цель заключается в том, что независимо от того, какой настольный компьютер с разными размерами экрана я использую, весло всегда будет находиться в нижней части экрана, но по какой-то причине весло (ярлык) не отображается. Это код, я использую:Добавление метки программно

Screen userScreen = Screen.PrimaryScreen; 
     int screenWidth = userScreen.WorkingArea.Width; 
     int screenHeight = userScreen.WorkingArea.Height; 

     this.Width = screenWidth; 
     this.Height = screenHeight; 

Label lblPaddle = new Label(); 
lblPaddle.BackColor = Color.White;   
lblPaddle.BorderStyle = BorderStyle.FixedSingle; 
//lblPaddle.Left = (this.ClientSize.Width - lblPaddle.Width)/2; 
//lblPaddle.Top = (this.ClientSize.Height - lblPaddle.Height)/2; 
//lblPaddle.Size = this.ClientSize; 
int lblPaddleWidth = (int)(screenWidth * 0.15); 
int lblPaddleHeight = lblPaddle.Height; 
int lblPaddleXCoord = (screenWidth/2) - (lblPaddleWidth/2); 
int lblPaddleYCoord = screenHeight - lblPaddleHeight - (int)(screenHeight * 0.1); 
lblPaddle.SetBounds(lblPaddleXCoord, lblPaddleYCoord, lblPaddleWidth, lblPaddleHeight); 

this.Controls.Add(lblPaddle); 

часть, где есть комментарии были разные подходы я покушений, чтобы попытаться заставить его работать. я понятия не имею, почему он не показывая

+1

В вашей «Ярке» нет свойства «Текст». Установите «Текст» «Ярлык» и повторите попытку. –

+1

@ S.Akbari Это не текст, который я хочу. Его просто ярлык с цветом фона, установленным на белый, который действует как весло. Для тестирования я попробовал добавить свойство текста, но ничего не появляется. –

+0

Я думаю, что вам может понадобиться панель вместо метки ... и элемент управления, который на самом деле показывает положение вашего «весла» – Pilouk

ответ

0

У меня нет абсолютно никаких проблем с вашим кодом, когда называется так:

public partial class Form1 : Form 
    { 
     public Form1() 
     { 
     InitializeComponent(); 
     InitLabel(); 
     } 

     private void InitLabel() 
     { 
     Screen userScreen = Screen.PrimaryScreen; 
     int screenWidth = userScreen.WorkingArea.Width; 
     int screenHeight = userScreen.WorkingArea.Height; 

     this.Width = screenWidth; 
     this.Height = screenHeight; 

     // I added the following 2 lines because the form was below the task bar 
     this.StartPosition = FormStartPosition.Manual; 
     this.Location = new Point(0,0); 

     Label lblPaddle = new Label(); 
     lblPaddle.Name = "lblPaddle"; 
     lblPaddle.BackColor = Color.White; 
     lblPaddle.BorderStyle = BorderStyle.FixedSingle; 
     int lblPaddleWidth = (int)(screenWidth * 0.15); 
     int lblPaddleHeight = lblPaddle.Height; 
     int lblPaddleXCoord = (screenWidth/2) - (lblPaddleWidth/2); 
     int lblPaddleYCoord = screenHeight - lblPaddleHeight - (int)(screenHeight * 0.1); 
     lblPaddle.SetBounds(lblPaddleXCoord, lblPaddleYCoord, lblPaddleWidth, lblPaddleHeight); 

     this.Controls.Add(lblPaddle); 
     } 
    } 

Он заканчивает тем, как это:

Scaled down screenshot

EDIT: Если вы планируете что-либо сделать с этим, я предлагаю дать ему имя. Я добавил его выше.

0

По какой-то странной причине это не сработало. Я разговаривал с преподавателем в моей школе, и она также не могла понять, в чем проблема. Возможно, это была какая-то ошибка. Единственный способ, которым мне удалось это решить, - создать другую форму и создать еще одно весло, а затем я скопировал код из формы, которую я создал для оригинала, и это сработало. Ни я, ни лектор не могли понять, в чем проблема. Это было просто странно, поскольку код был в основном таким же.