最近在学习微软的WPF,发现在wpf窗体居然没有类似java showInputDialog功能的简单对话框,只好自己做了,参照了window form的一些例子进行了改进,希望能对大家有帮助。
源码如下:
/*文件名:InputDialog.xaml.cs*/
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Windows;
using
System.Windows.Controls;
using
System.Windows.Data;
using
System.Windows.Documents;
using
System.Windows.Input;
using
System.Windows.Media;
using
System.Windows.Media.Imaging;
using
System.Windows.Shapes;
using
System.Drawing;
using
System.Windows.Forms;
using
System.ComponentModel;
namespace
SCALCIDWPF.NewGUI
{
///
///
Interaction logic for InputDialog.xaml
///
public
partial
class
InputDialog
:
Window
{
public
Boolean
_value_button;
public
InputDialog()
{
InitializeComponent();
}
public
Boolean
value_button {
get
{
return
_value_button; }
set
{ _value_button =
value
; }
}
public
static
Boolean
Show(
string
text,
string
title,
string
defaultInput,
out
string
userInput)
{
InputDialog
dialog =
new
InputDialog
();
dialog.lbText.Content = text;
dialog.Title = title;
dialog.tbInput.Text = defaultInput;
dialog.ShowDialog();
Boolean
resultat = dialog.value_button;
userInput = dialog.tbInput.Text;
return
resultat;
}
private
void
Window_Loaded(
object
sender,
RoutedEventArgs
e)
{
tbInput.Focus();
tbInput.SelectAll();
}
private
void
btnOk_Click(
object
sender,
RoutedEventArgs
e)
{
this
.value_button =
true
;
this
.Close();
}
private
void
btnCancel_Click(
object
sender,
RoutedEventArgs
e)
{
this
.value_button =
false
;
this
.Close();
}
}
}
/*文件名:InputDialog.xaml*/
<
Window
x
:
Class
="SCALCIDWPF.NewGUI.InputDialog"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns
:
x
="http://schemas.microsoft.com/winfx/2006/xaml"
Title
="InputDialog"
Height
="127"
Width
="412"
Loaded
="Window_Loaded"
Icon
="/SCALCIDWPF;component/Image/HQ1.ico">
<
Grid
Height
="90"
Width
="390">
<
Grid.ColumnDefinitions
>
<
ColumnDefinition
Width
="390*" />
<
ColumnDefinition
Width
="0*" />
Grid.ColumnDefinitions
>
<
Label
Height
="28"
Margin
="12,3,12,0"
Name
="lbText"
VerticalAlignment
="Top">
question
Label
>
<
TextBox
Margin
="20,26,26,0"
Name
="tbInput"
Height
="29"
VerticalAlignment
="Top" />
<
Button
Height
="23"
HorizontalAlignment
="Left"
Margin
="95,0,0,7"
Name
="btnOk"
VerticalAlignment
="Bottom"
Width
="75"
Click
="btnOk_Click">
OK
Button
>
<
Button
Height
="23"
Margin
="193,0,125,7"
Name
="btnCancel"
VerticalAlignment
="Bottom"
Click
="btnCancel_Click">
Annuler
Button
>
Grid
>
Window
>
使用方法:
在按钮事件中调用即可:
private
void
btnAjouter_Click(
object
sender,
RoutedEventArgs
e)
{
string
defaultResponse =
""
;
//You must also pass input box title, a default response, and
//input string
if
(
InputDialog
.Show(
"Quel est le nom de la nouvelle ‚num‚ration?"
,
"Input"
,
"Enum"
,
out
defaultResponse) ==
true
)
txtName.Text = defaultResponse;
}
附件里有源代码(压缩文件),另外使用时请修改你的namespace和相应的控件名字,本程序已在vs2008下编译测试无误!