【WPF求助】小白这几天才接触WPF,一上来就碰到了难题了

qq_35178952 2018-05-25 08:40:46
这几天头都抓烂了。。上一个帖子也没有人回……又不能超过三个回复,只能重开一个帖子来了。。
public void TextBox_Usersname(object sender, TextChangedEventArgs e)
{
string str1 = Console.ReadLine();
}

public void TextBox_Password(object sender, TextChangedEventArgs e)
{
string str2 = Console.ReadLine();
}

//public static void CompareTXT()
//{
// TextBox_Username str1 = new TextBox.str1();

//}

private void Login_btn(object sender, RoutedEventArgs e)
{
if (TextBox_Usersname.Text == "" || TextBox_Password.Text == "") {
MessageBox.Show("Can't be empty!");
return;
}


这是我改了的一部分代码,想请教一下各位大佬,这里提示我:
错误 CS0119 “MainWindow.TextBox_Usersname(object, TextChangedEventArgs)”是一个 方法,这在给定的上下文中无效
该怎么改啊。
...全文
1036 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
slarkleoric 2018-05-28
  • 打赏
  • 举报
回复
账号输入框不要用 TextBox ,用 passwordbox 。
小温LLT 2018-05-28
  • 打赏
  • 举报
回复
引用 10 楼 qq_35178952 的回复:
[quote=引用 9 楼 qq_35178952 的回复:] [quote=引用 6 楼 wenzhibincom 的回复:]
private void Login_btn(object sender, RoutedEventArgs e) {
            if (TextBox_Usersname.Text == "" || TextBox_Password.Text == "") {
                MessageBox.Show("Can't be empty!");
                return;
            }

            try {
                string str1, str2;
                str1 = Convert.ToString(TextBox_Usersname.Text);
                str2 = Convert.ToString(TextBox_Password.Text);
                bool is_login = false;
                string filePath = System.AppDomain.CurrentDomain.BaseDirectory +"text.txt";
                string[] files = File.ReadAllLines(filePath);
                foreach (var v in files) {
                    string[] user = Regex.Split(v," ", RegexOptions.IgnoreCase);
                    if (str1==user[0]&&str2==user[1]) {
                        //form2.Show();
                        //this.DialogResult = Convert.ToBoolean(1);
                        is_login = true;
                        MessageBox.Show("登录成功","提示",MessageBoxButton.OK,MessageBoxImage.Asterisk);
                        this.Close();
                        break;
                    }
                   
                }
                if (!is_login) {
                        MessageBox.Show("Uersname or Passowrd is error!");
                }
            }
            catch (Exception) {
                MessageBox.Show("输入错误");
            }
        }
我改了下你的代码 就可以了,不过我也是初学者 可能写的不好
我感觉已经比我好多了。 问一下,你这里写到text.txt,是删除了读取文件路径的操作嘛,这样的话我就不得不将文件与程序放在一起了呗? 还有你的user1【】和user2【】,在我的TXT文件中,我的账户和密码分别是两串英文和数字,我要怎么样做才能让计算机测定到哪一串是账号,哪一串是密码呢?需要我在原本的txt文件中修改一些什么东西吗?[/quote] 账号是一串英文,密码是一串特殊符号加英文和数字,不好意思。[/quote]我是读取了程序所在的路径的,第二个问题是 我把一行读取到的数据 用空格把他们转成数组,user【0】是空格的左边内容,user【1】是空格右边的内容.
exception92 2018-05-28
  • 打赏
  • 举报
回复
TextBox_Usersname.Text == "" -》这个会被编译器认为是当前上下文中的 TextBox_Usersname 事件名称,而不是xaml中定义的textbox的名字,先去了解一下WPF中 x:Name 与Name的区别,还有WPF中的路由事件。
  • 打赏
  • 举报
回复
要怎么样做才能让计算机测定到哪一串是账号,哪一串是密码? 这个由你自己来决定,一般来说,第一行是账号,第二行是密码。
小温LLT 2018-05-26
  • 打赏
  • 举报
回复
TextChanged="TextBox_Usersname" 内容改变时触发方法,这个和你这个登录功能也该搭不上边吧
小温LLT 2018-05-26
  • 打赏
  • 举报
回复
private void Login_btn(object sender, RoutedEventArgs e) {
            if (TextBox_Usersname.Text == "" || TextBox_Password.Text == "") {
                MessageBox.Show("Can't be empty!");
                return;
            }

            try {
                string str1, str2;
                str1 = Convert.ToString(TextBox_Usersname.Text);
                str2 = Convert.ToString(TextBox_Password.Text);
                bool is_login = false;
                string filePath = System.AppDomain.CurrentDomain.BaseDirectory +"text.txt";
                string[] files = File.ReadAllLines(filePath);
                foreach (var v in files) {
                    string[] user = Regex.Split(v," ", RegexOptions.IgnoreCase);
                    if (str1==user[0]&&str2==user[1]) {
                        //form2.Show();
                        //this.DialogResult = Convert.ToBoolean(1);
                        is_login = true;
                        MessageBox.Show("登录成功","提示",MessageBoxButton.OK,MessageBoxImage.Asterisk);
                        this.Close();
                        break;
                    }
                   
                }
                if (!is_login) {
                        MessageBox.Show("Uersname or Passowrd is error!");
                }
            }
            catch (Exception) {
                MessageBox.Show("输入错误");
            }
        }
我改了下你的代码 就可以了,不过我也是初学者 可能写的不好
Bridge_go 2018-05-26
  • 打赏
  • 举报
回复
TextChanged="TextBox_Password" Name="TextBox_Password" 两个名称不要一样
qq_35178952 2018-05-26
  • 打赏
  • 举报
回复
引用 9 楼 qq_35178952 的回复:
[quote=引用 6 楼 wenzhibincom 的回复:]
private void Login_btn(object sender, RoutedEventArgs e) {
            if (TextBox_Usersname.Text == "" || TextBox_Password.Text == "") {
                MessageBox.Show("Can't be empty!");
                return;
            }

            try {
                string str1, str2;
                str1 = Convert.ToString(TextBox_Usersname.Text);
                str2 = Convert.ToString(TextBox_Password.Text);
                bool is_login = false;
                string filePath = System.AppDomain.CurrentDomain.BaseDirectory +"text.txt";
                string[] files = File.ReadAllLines(filePath);
                foreach (var v in files) {
                    string[] user = Regex.Split(v," ", RegexOptions.IgnoreCase);
                    if (str1==user[0]&&str2==user[1]) {
                        //form2.Show();
                        //this.DialogResult = Convert.ToBoolean(1);
                        is_login = true;
                        MessageBox.Show("登录成功","提示",MessageBoxButton.OK,MessageBoxImage.Asterisk);
                        this.Close();
                        break;
                    }
                   
                }
                if (!is_login) {
                        MessageBox.Show("Uersname or Passowrd is error!");
                }
            }
            catch (Exception) {
                MessageBox.Show("输入错误");
            }
        }
我改了下你的代码 就可以了,不过我也是初学者 可能写的不好
我感觉已经比我好多了。 问一下,你这里写到text.txt,是删除了读取文件路径的操作嘛,这样的话我就不得不将文件与程序放在一起了呗? 还有你的user1【】和user2【】,在我的TXT文件中,我的账户和密码分别是两串英文和数字,我要怎么样做才能让计算机测定到哪一串是账号,哪一串是密码呢?需要我在原本的txt文件中修改一些什么东西吗?[/quote] 账号是一串英文,密码是一串特殊符号加英文和数字,不好意思。
qq_35178952 2018-05-26
  • 打赏
  • 举报
回复
引用 6 楼 wenzhibincom 的回复:
private void Login_btn(object sender, RoutedEventArgs e) {
            if (TextBox_Usersname.Text == "" || TextBox_Password.Text == "") {
                MessageBox.Show("Can't be empty!");
                return;
            }

            try {
                string str1, str2;
                str1 = Convert.ToString(TextBox_Usersname.Text);
                str2 = Convert.ToString(TextBox_Password.Text);
                bool is_login = false;
                string filePath = System.AppDomain.CurrentDomain.BaseDirectory +"text.txt";
                string[] files = File.ReadAllLines(filePath);
                foreach (var v in files) {
                    string[] user = Regex.Split(v," ", RegexOptions.IgnoreCase);
                    if (str1==user[0]&&str2==user[1]) {
                        //form2.Show();
                        //this.DialogResult = Convert.ToBoolean(1);
                        is_login = true;
                        MessageBox.Show("登录成功","提示",MessageBoxButton.OK,MessageBoxImage.Asterisk);
                        this.Close();
                        break;
                    }
                   
                }
                if (!is_login) {
                        MessageBox.Show("Uersname or Passowrd is error!");
                }
            }
            catch (Exception) {
                MessageBox.Show("输入错误");
            }
        }
我改了下你的代码 就可以了,不过我也是初学者 可能写的不好
我感觉已经比我好多了。 问一下,你这里写到text.txt,是删除了读取文件路径的操作嘛,这样的话我就不得不将文件与程序放在一起了呗? 还有你的user1【】和user2【】,在我的TXT文件中,我的账户和密码分别是两串英文和数字,我要怎么样做才能让计算机测定到哪一串是账号,哪一串是密码呢?需要我在原本的txt文件中修改一些什么东西吗?
qq_35178952 2018-05-26
  • 打赏
  • 举报
回复
引用 7 楼 wenzhibincom 的回复:
TextChanged="TextBox_Usersname" 内容改变时触发方法,这个和你这个登录功能也该搭不上边吧
我原本的设想是在用户删除文字的时候进行判断检测是否是可用的账号密码,不过现在看来似乎就算去掉了也没啥关系吧。。
qq_35178952 2018-05-25
  • 打赏
  • 举报
回复
我按照你说的改完了,然后它提示我应输入方法名称,我又懵了……
这个是我的登录窗口:

这个是我的XAML代码:
<Window x:Class="Login.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Login"
mc:Ignorable="d"
Title="Login" Height="450" Width="800">
<Grid>
<Grid.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="#FF57B9AC" Offset="1"/>
</LinearGradientBrush>
</Grid.Background>

<TextBox HorizontalAlignment="Left" Height="31" Margin="333,260,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="200" TextChanged="TextBox_Password" Name="TextBox_Password"/>
<TextBox HorizontalAlignment="Left" Height="31" Margin="333,189,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="200" TextChanged="TextBox_Usersname" Name="TextBox_Usersname"/>
<Label Content="Usersname :" HorizontalAlignment="Left" Height="32" Margin="241,189,0,0" VerticalAlignment="Top" Width="80"/>
<Label Content="Password :" HorizontalAlignment="Left" Height="31" Margin="251,260,0,0" VerticalAlignment="Top" Width="80"/>
<Label Content="This is a game" HorizontalAlignment="Left" Height="79" Margin="228,62,0,0" VerticalAlignment="Top" Width="356" FontWeight="Bold" FontSize="48" Foreground="#FF16D8D0"/>
<Button Content="Login" HorizontalAlignment="Left" Height="35" Margin="294,353,0,0" VerticalAlignment="Top" Width="110" Click="Login_btn" />
<Button Content="Quit" HorizontalAlignment="Left" Height="35" Margin="469,353,0,0" VerticalAlignment="Top" Width="115" Click="Quit_btn"/>

</Grid>
</Window>

然后这个是我的后台代码:
using System;
using System.IO;
using System.Text;
using System.Windows;

namespace Login
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void Login_btn(object sender, RoutedEventArgs e)
{
if (TextBox_Usersname.Text == "" || TextBox_Password.Text == "") {
MessageBox.Show("Can't be empty!");
return;
}

try
{
string str1, str2;
str1 = Convert.ToString(TextBox_Usersname.Text);
str2 = Convert.ToString(TextBox_Password.Text);

string filePath = "C:\\MMORPG_DB\\highly_secure_user_file.txt";
StreamReader sr = new StreamReader(filePath, Encoding.Default);
while (sr.ReadLine() != null)

if (str1 == sr.ReadLine() || str2 == sr.ReadLine())
{
ServerState form2 = new ServerState();
form2.Show();
//this.DialogResult = Convert.ToBoolean(1);
this.Close();
break;
}
else
{
MessageBox.Show("Uersname or Passowrd is error!");
}
}
catch(Exception)
{

}
}

private void Quit_btn(object sender, RoutedEventArgs e)
{
App.Current.Shutdown();
}

}
}

改完后没有报错,但是运行的时候却提示我第17行和18行有问题,说应该输入方法名称……
it_liang 2018-05-25
  • 打赏
  • 举报
回复
public void TextBox_Usersname(object sender, TextChangedEventArgs e) { string str1 = Console.ReadLine(); } public void TextBox_Password(object sender, TextChangedEventArgs e) { string str2 = Console.ReadLine(); } 这两个方法没用,你的TextBox_Usersname 如果是控件名的话,就将上面的全部去掉
it_liang 2018-05-25
  • 打赏
  • 举报
回复
你的wpf了解的太少,但是你C#貌似也是初学吧!TextBox_Usersname.Text 这个调用是跟谁学的 你要是获取账号和密码,你在你的xaml中创建两个textbox 去个名,获取它的Text属性值就是你想要的结果
qq_35178952 2018-05-25
  • 打赏
  • 举报
回复
引用 1 楼 L_ZhiWei 的回复:
你的wpf了解的太少,但是你C#貌似也是初学吧!TextBox_Usersname.Text 这个调用是跟谁学的
你要是获取账号和密码,你在你的xaml中创建两个textbox 去个名,获取它的Text属性值就是你想要的结果


是的,我对于这两个东西都是初学,原本我以为TextBox_Usersname和password是可以直接调用的函数,原来不是吗?
你说的对两个textbox取名是指这个吗: Name="TextBox_Password"
可是获取text属性值具体的又要怎么做呢?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧