2013-10-09 3 views
1

Я довольно новичок в C# (и вообще программировании), поэтому придерживайтесь меня, если я совершу огромные ошибки или расскажу о полном быке. Так что я пытаюсь сделать, это иметь частную пустоту, которая изменяет размер фонового изображения кнопки. Я посылаю имя кнопки в частную пустоту через строку. Во всяком случае, код выглядит примерно так:Объявление нового объекта с помощью имени переменной

ButtonResize("Zwaard"); 


protected void ButtonResize(string Button) 
    { 
     string ButNaam = "btn" + Button; 
     Button Butnaam = new Button(); 
     Butnaam.Text = ButNaam; 

     if (Butnaam.BackgroundImage == null) 
     { 
      return; 
     } 
     else 
     { 
      var bm = new Bitmap(Butnaam.BackgroundImage, new Size(Butnaam.Width, Butnaam.Height)); 
      Butnaam.BackgroundImage = bm; 
     } 
    } 

Но это не работает. Кажется, я не могу найти способ объявить новый объект с именем, которое имеет значение в строке. То, что я хочу, чтобы мой код выполнял, - это вместо кнопки «Бутнам», я хочу, чтобы она создала кнопку btnZwaard (значение строки Butnaam).

Как сообщить C# Я хочу, чтобы значение переменной было именем новой кнопки, а не буквально, что я набираю?

Заранее спасибо.

+1

Есть, вероятно, способы сделать что-то подобное с помощью отражения, но этого не делают. Это плохая идея. Создайте один объект словаря, который отображает имена в объекты и использует ваше динамически созданное имя в качестве словарного ключа, а не как имя переменной. –

+1

Вы действительно хотите создать новую кнопку каждый раз? Если это сработает, это будет ваш текущий код. – Maess

+0

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

ответ

2

Вы ищете что-то в этом роде? Передавая Button методу, вы можете действовать на объект. Если это то, что вы ищете, то вы должны прочитать Passing Reference-Type Parameters

protected void ButtonResize(Button button) 
    { 
     if (button != null && button.BackgroundImage != null) 
     { 
      button.BackgroundImage = new Bitmap(button.BackgroundImage, new Size(newWidth, newHeight)); 
     } 
    } 
+0

Да, это точно! Просто увидев ответ, он на самом деле выглядит вполне логичным, вы должны сделать это так ... Глупо мне: p Спасибо :) – Glenn

+0

@Glenn Не забудьте отметить меня как ответ. Рад, что смог помочь. – Harrison

1

Строка представляет собой фрагмент текста. Впоследствии вы ссылаетесь на него как class, что неверно. Предполагая, что было правильно, вы создаете новую кнопку, а не «изменяете ее размер».

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

Редактировать: это не похоже на хорошую отправную точку для изучения языка, кстати. Пожалуйста, найдите хороший онлайн-учебник для начала в C# (например, приложение для приветствия).

+0

Я ценю ваше время для ответа. И вы правы, вероятно, это не хорошая отправная точка. Прямо сейчас я просто небрежно пытаюсь собрать какую-то игру. Чтобы получить веревки C#, но и повеселиться. Проблема в том, что когда у меня есть что-то в моем уме, я должен сделать это, что иногда приводит меня к гораздо более сложному материалу. Я очень быстро участвую, и я могу понять материал из контекста, когда контекст добавлен позже :) – Glenn

+1

Хорошо для вас; вы должны быть интересны. Он * появляется * у вас нет понимания основ классов и объектов (объектно-ориентированное программирование), которые глубокий конец «не поможет вам». Посмотрите на них! – noelicus

+0

Ты совершенно прав. Сначала я даже не знал о занятиях.Я пытался запрограммировать что-то очень сложное, когда мой друг рекомендовал вместо этого использовать классы. Это сделало проект в 4 раза проще. Так что, я должен, вероятно, просто пойти на общее чтение, чтобы понять основы. Всякий раз, когда я что-то читал, после нескольких строк у меня возникает чувство «Да, я понимаю это, я хочу это реализовать». Закройте руководство или что-то еще, и просто начните работать в VS. Действительно, очень плохая привычка. – Glenn

Смежные вопросы