清空textbox中的文字,C#

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了清空textbox中的文字,C#相关的知识,希望对你有一定的参考价值。

winform 一个窗口上面有很多textbox,我有一个button叫做清空,怎么写能点击清空然后所有的textbox都清空呢 ,我看了有个clear,但是我这上面没有,是不是少什么using?

页面设计如下:

为了测试,窗体中除了TextBox 我还放了其他的一些控件。

后台采用迭代遍历,判断TextBox,然后清空文本值。

 private void button1_Click(object sender, EventArgs e)
  
       foreach (Control item in this.Controls)
       
           if (item is TextBox)
           
               item.Text = string.Empty;
               //调用Clear方法也是可以的。
               //(item as TextBox).Clear();
           
       
   

参考技术A         //using System.Linq;
        private void button1_Click(object sender, EventArgs e)
        
            Controls.OfType<TextBox>().ToList().ForEach(t => t.Clear());
        

追问

oftype找不到,需要using 另外 解释一下呢

追答

你的目标框架是2.0,3.5,4.0,还是4.5?

追问

2.0 的

追答        private void button1_Click(object sender, EventArgs e)
        
            foreach (Control c in Controls)
            
                if (c is TextBox)
                    (c as TextBox).Clear();
            
        

追问

if 语句的时候就不走下去了 ,我这边判断if语句里是false,但是确实是textbox啊

追答

这就有点奇怪了,你把声明此控件的那行代码贴来看看。

追问

private void button_clear_Click(object sender, EventArgs e)

追答

不是这个,我说的是你的textbox的声明,还有你的textbox是否放在panel或者groupbox之类的容器里面?

追问

对的 ,放在了panel里的。那这个要怎么做呢?

追答        private void button1_Click(object sender, EventArgs e)
        
            foreach (Control c in this.Controls)
                F(c);
        

        private void F(Control c)
        
            if (c is Panel)
            
                foreach (Control cc in (c as Panel).Controls)
                    F(cc);
            
            else
            
                if (c is TextBox)
                    (c as TextBox).Clear();
            
        

本回答被提问者采纳
参考技术B foreach (Control c in Controls)

if (c is TextBox)
(c as TextBox).Text="";

遍历窗口所有textbox控件,赋值为空即可

保存TextBox中的文字为Path功能

保存TextBox中的文字为Path功能

今天再设计一个我自己程序的Icon时使用了Path+textbox做了图形,我不想导出为PNG,因为颜色比较单一,我又想通过代码控制颜色,所以我想完整的保存为Path。所以做了这个软件,支持设置不同的字体和字号,然后点击获取Path,就导出了path。然后粘贴到想用的地方即可。

using System;
using System.Globalization;
using System.Windows;
using System.Windows.Media;

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

        [Obsolete]
        public string CreateText(string text)
        {
            System.Windows.FontStyle fontStyle = FontStyles.Normal;
            FontWeight fontWeight = FontWeights.Medium; 
            var pixelsPerDip = VisualTreeHelper.GetDpi(this).PixelsPerDip; 
            FormattedText formattedText = new FormattedText(
                text,
                CultureInfo.GetCultureInfo("en-us"),
                FlowDirection.LeftToRight,
                new Typeface(
                    new FontFamily(cbo_fontFamily.SelectedItem.ToString()),
                    fontStyle,
                    fontWeight,
                    FontStretches.Normal),
                Convert.ToInt32(FontSizeTextBox.Text),
                System.Windows.Media.Brushes.Black,  
               pixelsPerDip
                ); 
            // Build the geometry object that represents the text.
            var _textGeometry = formattedText.BuildGeometry(new System.Windows.Point(0, 0));

            // Build the geometry object that represents the text highlight.
            var res = PathGeometry.CreateFromGeometry(_textGeometry).ToString();
            return res;
        }

        private void GetTextTransformPath_Click(object sender, RoutedEventArgs e)
        {
            ResultPathTextBox.Text= CreateText(SourceText.Text);
        }
    }
}

XAML代码

<Window x:Class="TextTransformationPath.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:TextTransformationPath"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <StackPanel>
            <TextBlock Margin="0,5" Text="输入待获取Path的内容:"/>
            <TextBox FontSize="{Binding ElementName=FontSizeTextBox,Path=Text}" Height="50" x:Name="SourceText" Text="杜文龙" FontFamily="{Binding ElementName=cbo_fontFamily,Path=SelectedItem}"/>
            <ComboBox x:Name="cbo_fontFamily"  SelectedIndex="0" ItemsSource="{x:Static Fonts.SystemFontFamilies}">
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding}" FontFamily="{Binding}"/>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
                <ComboBox.ItemsPanel >
                    <ItemsPanelTemplate >
                        <VirtualizingStackPanel/>
                    </ItemsPanelTemplate>
                </ComboBox.ItemsPanel>
            </ComboBox>
            <TextBlock Text="字号:"/>
            <TextBox x:Name="FontSizeTextBox" Text="30"/>
            <Button Margin="0,5" Content="点击获取Path" Click="GetTextTransformPath_Click"/>
            <TextBox x:Name="ResultPathTextBox"/>
        </StackPanel>
    </Grid>
</Window>

以上是关于清空textbox中的文字,C#的主要内容,如果未能解决你的问题,请参考以下文章

请问如何将C# Winform 上所有TextBox值清空

保存TextBox中的文字为Path功能

textbox中的文字如何垂直居中

c#winform改变textbox中部分text的颜色

word VBA如何实现TextBox中的文字居中对齐,文本框有相关的属性么?谢谢

WPF怎么快速清空所有TextBox内容