Windows Forms: как расширить кнопку? - PullRequest
4 голосов
/ 29 июля 2010

Как мне расширить кнопку?

Мне нужна кнопка, у которой есть дополнительное свойство IsSwitchOffable.

Нужно ли мне писать дополнительный пользовательский элемент управления?

РЕДАКТИРОВАТЬ: Я хочу, чтобы кнопка использовалась в качестве стандартной кнопки WindowsForms.

Это означает, что я могу добавить кнопку во время разработки!

Ответы [ 4 ]

7 голосов
/ 29 июля 2010

Расширение кнопки управления ничем не отличается от расширения любого класса в C #.Просто сделайте следующее:

class ToggleButton : Button {
// Add your extra code
}
3 голосов
/ 29 июля 2010

Вам необходимо создать класс, который наследует класс System.Windows.Forms.Button и добавляет ваше свойство и связанное с ним поведение.

После компиляции проекта ваш новый класс появится на панели инструментов.

1 голос
/ 12 мая 2015

Я знаю, что это старо, и на него ответили - однако, Зачем усложнять жизнь?

Каждый элемент управления имеет свойство Tag, которое вы можете легко установить на IsSwitchedOffable - или лучше на английском CanBeDisabled

Гораздо проще.

0 голосов
/ 03 июля 2017

В моем приложении-головоломке местоположение 2-й кнопки должно быть изменено ... Поэтому мне нужны дополнительные возможности ...

Моя кнопка ButObj расширяет класс кнопок

Public Class ButObj : Button
         { 
            Point initloc;
          Public ButObj(Point loc)  

 {   this.Location=initloc=loc ;   }
           Public bool isNearto(ButObj X)
               { 
                 if (this.Location.X==X.Location.X || this.Location.Y==X.Location.Y)
                   return true;
        else  return false;
               }
           Public bool isSettled()
             {
                if(this.Location==initloc)
                   return true ;
                else return false;
             }
         Public void Replace (ButObj X)
     {
           Point temp ;
             temp=this.Location;
       this.Location=X.Location;
    X.Location=temp;
    }
         }

Следующий код записан в форме 1_load ()

ButObj[ ][ ] B=new ButObj[4][4];
   char c='A';
    for (int i=0;i<4;i++)
      for (int j=0;j<4;j++)
       {   B[i][j]=new ButObj(new Point (i*100+10,j*100+10));
B[j][i].Text = ""+c++;
B[i][j].Font =new Font ("Arial", 24);
this.Controls.Add (B[i][j]);

B [i] [j] .MouseClick + = new MouseEventHandler (MouseClick); }

Кодирование в событии щелчка мыши

private void MouseClick(Object sender, EventArgs e)
    {
       ButObj b=(ButObj)sender;
       if (b.isNearto(B[3][3]))
         b.Replace(B[3][3]);
\\ checking after replace
     if(AllSolved());\\game over
     }

bool AllSolved()
      {
         for (int i=0;i<4;i++)
           for (int j=0;j<4;j++)
             if (!B[i][j].isSettled)
               return false ;
        return true;
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...