2015-11-11 1 views
4

У меня есть кнопка уже на панели, которая не видна до прокрутки (так как размер экрана панели меньше, чем x-cordinate кнопкиA). Я хочу разместить кнопку за кнопкой buttonA. Как это сделать ? Я использую это, но он только ставит кнопку слева от вида управления не на внутреннюю максимальную ширину.Как установить кнопку на максимум слева на панели C#

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

«правка на вопрос»

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

button1.Left = buttonA.Parent.Size.Width+button1.Width; 

enter image description here

ответ

3

Если вы хотите поставить button1 справа buttonA, то вы можете использовать в Left и Width свойства из buttonA решить эту проблему:

// Places button1 to the right of buttonA by 10 pixels 
button1.Left = buttonA.Left + buttonA.Width + 10; 

Edit:

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

// Remember the last Left used. 
// We first set it to the Left of buttonA plus its Width. 
int lastLeft = buttonA.Left + buttonA.Width; 

// button1 now gets set to this plus a gap of 10 pixels 
button1.Left = lastLeft + 10; 
// Remember the last position 
lastLeft = button1.Left + button1.Width; 

// Set next button 
button2.Left = lastLeft + 10; 
// Remember... 
lastLeft = button2.Left + button2.Width; 

Вы можете сделать это очиститель, обернув часть этого методом, но я оставил подробный вариант для ясности.

+0

Но при каждом нажатии кнопки добавляется, я хочу добавить последнюю последнюю кнопку. Как это сделать – phpnet

+0

Все ли ваши кнопки одинаковой ширины? Вы можете либо сохранить ссылку на количество добавленных кнопок, либо последнюю позицию, которая была использована. – Equalsk

+0

извините, ребята, я только что осознал, что сделал ошибку, ур решения прекрасная кнопка моя проблема только что изменила PLZ увидеть новое редактирование – phpnet

2

Вы можете сохранить в общей сложности вашей кнопки Width в целое и использовать его, чтобы установить Left свойство:

private void button1_Click(object sender, EventArgs e) 
{ 
    Button btn = new Button(); 
    btn.Left = nTotalWidth; 

    panel1.Controls.Add(btn); 
    nTotalWidth += btn.Width; 
} 

Это создаст новую кнопку, расположенную рядом с предыдущей кнопки каждый раз вы попали button1.

+0

извините, ребята, я только что осознал, что сделал ошибку, ур решения прекрасны, моя проблема только что изменилась. Plz см. Новое редактирование. – phpnet

+0

Тогда я думаю, что ответ Equalsk будет вашим решением :) – Roman

+0

Спасибо за решение – phpnet