この投稿を書いているとき、私は関連する主題で尋ねられたすべての質問をチェックしていて、このNewbs C#の問題に対する簡単な答えを見つけることができませんでした
私は...もしよければ、それがよく説明された答えになることができる限り多くを持っていることを望みます(お願いします!)
パブリック静的クラスを作成しました
public static class MyLoadedBtmpToolBox
{
public static string FnameToLoad;
public static bool PutLoadedByteArrInPicbox;
public static string[] LoadedRefrnce;
public static int SourceX_Loaded, SourceY_Loaded, RectWidth_Loaded, RectHeight_Loaded;
---> public static int tst = Str2Int(LoadedRef[0]);
public static byte[] LoadedByteArr;
}
このcalsは、デフォルトで通常行われているように、私が使用しているメインフォーム内にあります
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Threading;
using System.Diagnostics;
using System.Drawing.Imaging;
using System.IO;
using System.Security.Cryptography;
using WindowsInput;
namespace MyScrCupTry1
{
public partial class MyForm1 : Form
{
public static class MyLoadedBtmpToolBox
{
public static int testStr2Int = Str2Int("100");
}
public int Str2Int(string STR)
{
int strInt = Convert.ToInt32(null);
if (isntEmpty(STR))
{
strInt = Convert.ToInt32(STR);
}
else
{
MessageBox.Show("theString " + STR + " is Null");
}
return strInt;
}
}
メインフォームからtestStr2Int
公開されている「ヘルパーメソッド」を使用して値を評価することはできません。エラーが発生します。Str2Int()
エラー1非静的フィールド、メソッド、またはプロパティにオブジェクト参照が必要です'MyScrCupTry1.MyForm1.Str2Int(string)' G:\ RobDevI5-Raid-0 \ Documents \ Visual Studio 2010 \ Projects \ WindowsFormsApplication2 \ WindowsFormsApplication2 \ MyForm1 .cs 95 45 MyScrCuptry1
可能であれば/(違法ではない)静的クラスからメインフォームパブリック要素にアクセスするための正しい方法は何ですか...
- 再編集
これらの2つの答えの後..。
私は期待される結果なしに最初の答えからコードを実装しようとしました私はオーバーライドOnLoad(..)のことで正しいコード構造を知らなかったと思います...
しかし !Str2Int(STR)
メソッドをpublicからpublicstatic
に変更しました
Str2Int()
そのため、フォーム自体の要素は、静的なクラスIからもアクセスできます(驚いています)。
そして、それを静的にすることにも感謝します、
Str2Int()をパブリックからパブリックスタティックに変更するときに「隠れた」欠点がありますか?