【问题标题】:c# - Methods that are called from another class are not runningc# - 从另一个类调用的方法没有运行
【发布时间】:2014-05-29 07:16:15
【问题描述】:

我在做一些本来很简单的事情时遇到了麻烦,我要做的就是从另一个类中调用一个方法,这就是我调用该方法的方式:

Gimjes_2D_Game_Framework1.Characters.Character_One.Create();

这是我试图调用的方法的内容:

  public static void Create()
    {
         Form1 f = new Form1();
         System.Windows.Forms.PictureBox s = new System.Windows.Forms.PictureBox();
        //location of image (in thia case it is from resources):
         s.BackgroundImage =    Gimjes_2D_Game_Framework1.Properties.Resources.DefaultSprite;
        //Set to height and width of image:
         s.Height = 64;
         s.Width = 64;
         s.Size = new System.Drawing.Size(60, 60);
         s.Location = new System.Drawing.Point(50, 50); 
         f.Controls.Add(s);

    }

【问题讨论】:

  • 定义“未运行”。不编译?运行时错误?没有错误,但没有达到您的预期?
  • 在里面放一个断点
  • 如果表格没有显示那么你必须打电话给f.Show()
  • 您需要在调用此方法后明确您的期望。如果您希望显示您的表单,请采用 Baldrick 的方法。如果您希望获得 Form1 的实例,则需要更改方法的返回值。

标签: c# class methods call


【解决方案1】:

尝试添加

f.Show();

f.ShowDialog();

到您的 Create 方法的末尾。

否则,您将创建一个表单,并且永远不会显示它。

Show 为您提供无模式表单,ShowDialog 为您提供模式对话框。

有关详细信息,请参阅文档 here

如果您打算返回 Form1 对象,以便稍后显示,您需要将方法更改为:

public static Form1 Create()
{
     Form1 f = new Form1();

     ...

     return f;
}

【讨论】:

  • 表单已经创建,我正在使用 Form1 f = new Form1();这样我就可以向它添加控件和东西
  • 如果你调用new Form1(),那只能创建一个全新的Form1对象。如果要修改现有的 Form1 对象,则需要将其传递给方法,或者以其他方式获取它。您当前的代码不会更改现有表单。
  • @user3349095 每次调用 Create() 方法时,您都会创建新表单。
  • @Baldrick 我该怎么做
  • @user3349095:您的代码中的原始表单是在哪里创建的?
猜你喜欢
  • 2020-10-20
  • 2014-01-31
  • 2013-12-21
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 2015-07-10
相关资源
最近更新 更多