2013-04-06 5 views
4

Как использовать MessageBox в библиотеке классов?Как использовать Messagebox в библиотеке классов C#?

Вот мой код

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

namespace MessageBoxes 
{ 
    class ShowInfo 
    { 
     MessageBox.Show("test"); 
    } 
} 

я могу загрузить MessageBox, но не может иметь свойство показать, MessageBox.Show ("тест"); < - fail

+3

Вы должны опубликовать точные ошибки компилятора, когда вы получаете их. – chris

ответ

10

Вы должны НЕ использовать Windows Forms MessageBox внутри библиотеки классов. Что делать, если вы используете эту библиотеку в приложении ASP.NET. MessageBox будет показан на веб-сервере. И ваш веб-сервер будет ждать (висит), пока кто-то не ответит на это MessageBox на веб-сервере.

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

Если вы все еще хотите, то вот ваш код исправлен

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

namespace MessageBoxes 
{ 
    class ShowInfo 
    { 
     public void ShowMessage(string msg) 
     { 
      MessageBox.Show(msg); 
     } 
    } 
} 
+0

oohh! Я никогда не изучаю asp.net раньше, я просто пытаюсь использовать modboxBoxes для настольных приложений. Btw благодарю вас за сообщение об этом – PotterWare

1

У вас есть вызов в ящик сообщений вне любого метода.
Этот код не может быть скомпилирован вообще.

Вы должны написать

namespace MessageBoxes 
{ 
    class ShowInfo 
    { 
     public void ShowUserMessage(string messageText) 
     { 
      MessageBox.Show(messageText); 
     } 
    } 
} 

, а затем вызвать его после того, как Instancing объект типа ShowInfo

ShowInfo info = new ShowInfo(); 
info.ShowUserMessage("This is a Test"); 
0

Убедитесь, что вы на самом деле использовать класс в основной форме.

class ShowInfo 
{ 
    public static void show() 
    { 
     System.Windows.Forms.MessageBox.Show("test"); 
    } 
} 

...

public Form1() 
    { 
     InitializeComponent(); 
     ShowInfo.show(); 
    } 
+0

Уже объявлено пространство имен форм Windows. То, что вы сделали, точно так же, как и проблема пользователя. –

+1

Но у меня нет! поэтому я все равно объявил пространство имен. Почему я пытался показать, является использование класса в форме. И это работает отлично, так где проблема? Не можете ли вы увидеть второй фрагмент кода? –

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