2016-07-05 5 views
-3

私はTextBoxのWindowsフォームアプリケーションで作業していますが、別のクラスの関数を呼び出すtextBox1_KeyDownというイベントがあります。 OBJECTとすべての設定はデフォルトです。しかし、私はCの保護レベルのために機能がアクセスできない

エラーCS0122「ClassName.FunctionName(オブジェクト、KeyEventArgs)」、その保護レベルに アクセスできない

...として、以下のエラーを取得しています今私のメインフォームのコードが何かあります以下のような...

namespace NewDEMOApps 
{ 
    public partial class MainForm : Form 
    { 
     ClassName newObj = new ClassName(); 

     public MainForm() 
     { 
      InitializeComponent(); 
     } 

     private void textBox1_KeyDown(object sender, KeyEventArgs e) 
     { 
      newObj.FunctionName(sender, e); 
     }  
    } 
} 

そして、私のクラスのコードは以下のようなものです...

namespace NewDEMOAppsClass 
{ 
    public class ClassName 
    { 
     private void FunctionName(object sender, KeyEventArgs e) 
     { 
      if (true) 
      { 
       if (e.KeyCode.Equals(Keys.Up)) 
       { 
        MessageBox.Show(UP Key Pressed); 
       } 
       if (e.KeyCode.Equals(Keys.Down)) 
       { 
        MessageBox.Show(DOWN Key Pressed); 
       } 
       if (e.KeyCode.Equals(Keys.Enter)) 
       { 
        MessageBox.Show(Enter Key Pressed); 
       } 
       e.Handled = true; 
      } 
     } 
    } 
} 

これを修正するには、Visual StudioなどでGUI設定を編集/変更するのではなく、これを修正する必要があります。

+1

'private void FunctionName(オブジェクト送信者、KeyEventArgs e)'を 'public void FunctionName(オブジェクト送信者、KeyEventArgs e)'に変更します。一般的に、そのクラスの外からプライベートメソッドにアクセスすることはできません。 [詳細についてはここをクリック] – Draken

+1

[public]、[default]、[protected]、[private]の相違点の重複が考えられます(https://msdn.microsoft.com/en-us/library/wxh6fsc7.aspx) '](http://stackoverflow.com/questions/215497/difference-among-public-default-protected-and-private) –

+0

@Draken愚かな間違いを犯しました。私がそれを選択するようにあなたのコメントを回答に追加してください。 :P –

答えて

1

変更以下:

public void FunctionName(object sender, KeyEventArgs e) 

private void FunctionName(object sender, KeyEventArgs e) 

あなたは、一般的にそのクラスの外からprivateメソッドにアクセスすることはできません。 Read here for further information

関連する問題